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 搜内容 · ↑↓ 选择 · ↵ 打开 · ⌘↵ 在编辑器打开