不知道为什么,但是如果我在绝对路径中调用应用程序,bash 补全将不起作用。
比如我当前目录下有file1 & file2
[zhengw@localhost ~]$ rm -f file<tab><tab>
file1 file2
[zhengw@localhost ~]$ which rm
/bin/rm
[zhengw@localhost ~]$ /bin/rm -f file<tab><tab>
在上面的示例中,bash auto 在第一个命令中为我完成了文件,但第二个命令没有返回任何内容。
还尝试了其他命令,结果发现如果我使用绝对路径,bash 补全将不起作用。
答案1
所以我已经找到了根本原因。我为我的 vim 安装了 fzf 应用程序来使用它的模糊搜索功能。 fzf vim 插件的默认安装方法安装了一个 bash 补全脚本,该脚本来源于 bashrc 文件,最终弄乱了原来的补全功能。
我可以通过卸载插件并使用 --bin 选项重新安装来解决问题。
解决方案:
更改 fzf 插件的安装方法(在你的 .vimrc 中):
Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all' }
到:
Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --bin' }