diff --git a/public/app.js b/public/app.js index c76cb4c..fa03a43 100644 --- a/public/app.js +++ b/public/app.js @@ -1904,29 +1904,44 @@ function truncNote() { // ---------- 命令面板 ---------- const cmdk = { - results: [], active: 0, timer: null, scopeAll: true, + results: [], active: 0, timer: null, scopeAll: true, contentMode: false, open() { $('#cmdk').classList.remove('hidden'); this.updateScopeLabel(); + this.updateModeLabel(); const inp = $('#cmdk-input'); inp.value = ''; inp.focus(); - $('#cmdk-results').innerHTML = '
输入开始搜索 · 文件名模糊匹配,「内容:」搜全文(含 PDF、截图里的文字)
'; + $('#cmdk-results').innerHTML = `
${this.emptyHint()}
`; this.results = []; this.active = 0; }, close() { $('#cmdk').classList.add('hidden'); }, toggleScope() { this.scopeAll = !this.scopeAll; this.updateScopeLabel(); this.search($('#cmdk-input').value); }, + // 全文搜索开关:点「搜内容」或 ⇧Tab 即切换,不用再手输「内容:」前缀(前缀仍兼容) + toggleMode() { this.contentMode = !this.contentMode; this.updateModeLabel(); this.search($('#cmdk-input').value); }, root() { return this.scopeAll ? state.home : (state.cwd || state.home); }, updateScopeLabel() { $('#cmdk-scope').textContent = this.scopeAll ? '全机(主目录及以下)' : '当前目录 ' + tilde(state.cwd || state.home); $('#scope-toggle').textContent = this.scopeAll ? '⤢ 全机' : '▢ 当前目录'; $('#scope-toggle').classList.toggle('on', this.scopeAll); }, + updateModeLabel() { + $('#mode-toggle').classList.toggle('on', this.contentMode); + $('#cmdk-input').placeholder = this.contentMode + ? '搜文件内容(全文,含 PDF、截图里的文字)…' + : '按文件名搜索… 用 “内容:” 前缀搜文件内容,如 “内容:useState”'; + if (!$('#cmdk-input').value.trim()) $('#cmdk-results').innerHTML = `
${this.emptyHint()}
`; + }, + emptyHint() { + return this.contentMode + ? '输入开始搜索 · 全文搜索(含 PDF、截图里的文字)' + : '输入开始搜索 · 文件名模糊匹配,点「搜内容」或用「内容:」前缀搜全文(含 PDF、截图里的文字)'; + }, search(q) { clearTimeout(this.timer); - if (!q.trim()) { $('#cmdk-results').innerHTML = '
输入开始搜索
'; return; } - const isContent = /^(内容[::]|content:)/i.test(q); + if (!q.trim()) { $('#cmdk-results').innerHTML = `
${this.emptyHint()}
`; return; } + const isContent = this.contentMode || /^(内容[::]|content:)/i.test(q); $('#cmdk-results').innerHTML = '
搜索中…
'; this.timer = setTimeout(async () => { const root = this.root(); @@ -2510,6 +2525,7 @@ function bindEvents() { document.addEventListener('click', (e) => { if (!e.target.closest('#context-menu')) closeContextMenu(); }); window.addEventListener('blur', closeContextMenu); $('#scope-toggle').onclick = () => cmdk.toggleScope(); + $('#mode-toggle').onclick = () => { cmdk.toggleMode(); $('#cmdk-input').focus(); }; $('#toggle-hidden').checked = state.showHidden; $('#toggle-hidden').onchange = (e) => { state.showHidden = e.target.checked; localStorage.setItem('fb_hidden', state.showHidden ? '1' : '0'); renderFiles(); }; @@ -2550,7 +2566,7 @@ function bindEvents() { if (e.key === 'Escape') cmdk.close(); else if (e.key === 'ArrowDown') { e.preventDefault(); cmdk.move(1); } else if (e.key === 'ArrowUp') { e.preventDefault(); cmdk.move(-1); } - else if (e.key === 'Tab') { e.preventDefault(); cmdk.toggleScope(); } + else if (e.key === 'Tab') { e.preventDefault(); e.shiftKey ? cmdk.toggleMode() : cmdk.toggleScope(); } else if (e.key === 'Enter') { e.preventDefault(); cmdk.choose(cmdk.active, e.metaKey || e.ctrlKey); } return; } diff --git a/public/i18n-dict.js b/public/i18n-dict.js index 72b5741..926bed7 100644 --- a/public/i18n-dict.js +++ b/public/i18n-dict.js @@ -223,13 +223,17 @@ window.FANBOX_DICT = { // ---------- 命令面板 ---------- '按文件名搜索… 用 “内容:” 前缀搜文件内容,如 “内容:useState”': 'Search by filename… prefix with “content:” to search inside files, e.g. “content:useState”', + '搜文件内容(全文,含 PDF、截图里的文字)…': 'Search inside files (full text, incl. PDFs and text in screenshots)…', '切换搜索范围(Tab)': 'Toggle search scope (Tab)', + '按内容全文搜索(⇧Tab)': 'Search inside files (⇧Tab)', + '▤ 搜内容': '▤ Full text', '⤢ 全机': '⤢ This Mac', '▢ 当前目录': '▢ This folder', '范围:': 'Scope: ', - '· Tab 切换范围 · ↑↓ 选择 · ↵ 打开 · ⌘↵ 在编辑器打开': '· Tab scope · ↑↓ select · ↵ open · ⌘↵ open in editor', + '· Tab 切换范围 · ⇧Tab 搜内容 · ↑↓ 选择 · ↵ 打开 · ⌘↵ 在编辑器打开': '· Tab scope · ⇧Tab full text · ↑↓ select · ↵ open · ⌘↵ open in editor', '全机(主目录及以下)': 'This Mac (home folder and below)', - '输入开始搜索 · 文件名模糊匹配,「内容:」搜全文(含 PDF、截图里的文字)': 'Type to search · fuzzy filename match; “content:” searches full text (incl. PDFs and text in screenshots)', + '输入开始搜索 · 文件名模糊匹配,点「搜内容」或用「内容:」前缀搜全文(含 PDF、截图里的文字)': 'Type to search · fuzzy filename match; click “Full text” or use the “content:” prefix to search inside files (incl. PDFs and text in screenshots)', + '输入开始搜索 · 全文搜索(含 PDF、截图里的文字)': 'Type to search · full-text search (incl. PDFs and text in screenshots)', '输入开始搜索': 'Type to search', '搜索中…': 'Searching…', '没有结果': 'No results', diff --git a/public/index.html b/public/index.html index 044c407..edac8ba 100644 --- a/public/index.html +++ b/public/index.html @@ -143,10 +143,11 @@
+ ESC
-
范围: · Tab 切换范围 · ↑↓ 选择 · ↵ 打开 · ⌘↵ 在编辑器打开
+
范围: · Tab 切换范围 · ⇧Tab 搜内容 · ↑↓ 选择 · ↵ 打开 · ⌘↵ 在编辑器打开