Ryo*_*Ryo 7 bash globbing tab-completion
我有一个与此类似但不同的问题:如果可能,我希望 bash在自动完成中使用glob 扩展。例如,我想
$ ls *2.<TAB>
Run Code Online (Sandbox Code Playgroud)
给我:
$ ls mydoc2.
mydoc2.pdf mydoc2.tex mydoc2.txt
Run Code Online (Sandbox Code Playgroud)
我经常遇到这种情况。在上面的例子中,我使用了短前缀“mydoc”,但实际的前缀通常很长。这可能吗?
我知道*2.*
会扩展为C-x*
,但这是一个不同的函数,在这种情况下不适合(因为我只需要从与 glob 匹配的文件列表中选择一个文件)。
模拟这种自动完成行为的最佳方法是启用readline变量(如果找到多个匹配则显示可能的完成),然后使用readline命令调用完成(以执行 glob 路径名扩展)。show-all-if-ambiguous
glob-complete-word
# 1: Enable `show-all-if-ambiguous` in ~/.inputrc
set show-all-if-ambiguous on
Run Code Online (Sandbox Code Playgroud)
show-all-if-ambiguous:这会改变完成函数的默认行为。如果设置为“on”,则具有多个可能完成的单词会导致立即列出匹配项而不是敲响警钟。默认值为“关闭”。
# 2a: Check to ensure that `glob-complete-word` is bound.
$ bind -q "glob-complete-word"
glob-complete-word can be invoked via "\eg".
# 2b: If unbound, bind `glob-complete-word` to "\eg".
$ bind '"\eg":glob-complete-word'
Run Code Online (Sandbox Code Playgroud)
glob-complete-word (Mg): point 之前的单词被视为路径名扩展的模式,隐式附加星号。此模式用于为可能的补全生成匹配文件名的列表。
# 3: Trigger the autocompletion with <META-g> or <ESC-g>
# META => alt (Windows/Linux)
# META => option (OSX)
$ ls *2.<META-g>
# possible completions will be listed (show-all-if-ambiguous)
mydoc2.pdf mydoc2.tex mydoc2.txt
# glob pathname completion will be performed (glob-complete-word)
$ ls mydoc2.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1020 次 |
最近记录: |