hli*_*117 10 bash zsh autocomplete
我要问的有点具体,可能与 Unix Stackexchange 上的其他自动完成问题不同。
假设我有一个看起来像这样的目录
-rw-r--r-- 1 hlin117 staff 1.1K Sep 19 13:05 doc.aux
-rw-r--r-- 1 hlin117 staff 26K Sep 19 13:05 doc.log
-rw-r--r-- 1 hlin117 staff 177K Sep 19 13:05 doc.pdf
-rw-r--r-- 1 hlin117 staff 13K Sep 19 13:01 doc.tex
Run Code Online (Sandbox Code Playgroud)
尝试做没有什么意义vim doc.pdf,在常见情况下,我不会做vim doc.log或vim doc.aux。相反,我经常这样做
vim doc.tex
Run Code Online (Sandbox Code Playgroud)
不幸的是,tab-autocomplete 会向我建议所有 4 个文件,而不仅仅是doc.tex.
有没有办法可以输入vim \t,而这会忽略我目录中的某些文件?
更一般地说,我可以输入 command X \t,并写一些设置,其中输入 commandX将忽略我目录中的文件吗?
仅供参考:我使用 zsh。不确定 bash 和 zsh 是否会有类似的解决方案。
Gil*_*il' 10
在zsh中,用“新”完成系统(即,如果你有compinit你的.zshrc),使用file-patterns风格。
zstyle ':completion:*:*:vim:*' file-patterns '^*.(aux|log|pdf):source-files' '*:all-files'
Run Code Online (Sandbox Code Playgroud)
如果没有完成,则匹配模式的文件*.(aux|log|pdf)将仅在vim命令行上完成。
您可以为命令名称使用模式,特别*是匹配除明确匹配的命令之外的所有命令。
添加到这一点是因为我不使用 zsh,并且有更多的通用选项。
只需.bashrc使用 bash 内置命令将其放入一行即可complete。例如:
complete -f -X '*.@(aux|log|pdf)' -o plusdirs vim
Run Code Online (Sandbox Code Playgroud)
其中,-f将完成的文件名,-X筛选出有水珠字符串匹配从可能的选择模式,-o plusdirs将后来添加子目录到列表中。
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |