我想像在 emacs 中一樣在終端機中輸入:
emacs 2019-*subject*
當我擊中時,Tab我得到第一場比賽:
2019-08-03-subject.markdown
我想要的是它向我展示以下選項:
2019-08-03-subject.markdown 2019-bla-bla-subject-predicate.markdown etc...
我在網上到處查看,不敢相信這不是一個功能。
有許多 相似的提出的問題。答案並不像我想要的(如上圖)。我嘗試過的其他解決方案:這裡。
PS 我使用 Ubuntu 16。那就非常方便了。
答案1
之後發生的事情Tab取決於完成腳本。這個答案讓我相信 2013 年至少有一個用戶期望的行為是存在的,但在 2019 年我的 Debian 9 中的行為就像你所描述的那樣;從那時起,腳本/行為可能已經改變。
此外,Bash 根據輸入的命令(目前行的第一個單字)選擇腳本。任何單一的更改都會影響所有完成以提供您想要的內容,這並不是立即顯而易見的(我想該_filedir
功能是一個好的開始)。
幸運的是,您可以根據需要進行可能的擴展。來自man 1 bash
(READLINE
標題下):
glob-complete-word
(M-g
)
point 之前的單字被視為路徑名擴展的模式,並隱式附加一個星號。此模式用於產生可能完成的匹配檔名清單。
glob-expand-word
(C-x *
)
point 之前的單字被視為路徑名擴展的模式,並插入符合檔案名稱的列表,替換該單字。如果提供數字參數,則在路徑名擴展之前附加一個星號。
glob-list-expansions
(C-x g
)顯示
由 產生的擴展列表glob-expand-word
,並重新繪製線條。如果提供數字參數,則在路徑名擴展之前附加一個星號。
M-g
,C-x *
並C-x g
描述預設鍵綁定。更友善的格式是:
- Meta+ g( Alt+ g) 為
glob-complete-word
, - Ctrl+ x, (release Ctrl) *for
glob-expand-word
(注意:*實際上是我鍵盤上的Shift+ 8), - Ctrl+ x, (釋放Ctrl)g為
glob-list-expansions
.
以下程式碼設定這些綁定(以防它們因某種原因丟失):
僅適用於目前 shell:
# commands to run in Bash bind '"\eg": glob-complete-word' bind '"\C-x*": glob-expand-word' bind '"\C-xg": glob-list-expansions'
或在您的永久配置中(
/etc/inputrc
或~/.inputrc
):# lines to add "\eg": glob-complete-word "\C-x*": glob-expand-word "\C-xg": glob-list-expansions
(注意這只會影響新的 shell,除非你重新載入)。
您將會對glob-complete-word
或感興趣glob-list-expansions
。主要區別:
glob-complete-word
總是附加一個星號,而glob-list-expansions
這是有條件的(請參閱引用的手冊)。- 如果有很多匹配項,那麼您可能需要觸發
glob-complete-word
兩次(即按組合鍵兩次)才能列印某些內容;這取決於show-all-if-ambiguous
,比較已經提到的答案。 - 如果只有一場比賽,那麼
glob-complete-word
將執行實際的行完成,同時glob-list-expansions
仍然只顯示比賽。
根據您的具體情況,輸入:
emacs 2019-*subject*
然後Ctrl+ x, g.