我正在Bash的标准Debian安装中使用制表符补全,并且有些文件被忽略了。例如,如果我有文件:
index.php
index.php.a
如果我键入vim i
,然后tab
,它将立即选择“ index.php”(请参见文件名后的空格)。通常,它只是完成“ index.php”,然后让我选择键入其他内容。
为什么在这种情况下表现不同?
更新
某些命令,例如“ cp”,似乎可以很好地处理制表符的补全,所以也许vim正在寻找特定的文件扩展名?
bash-completion程序包使用功能_filedir_xspec
完成_filedir_xspec
。该函数通常会完成文件名,但会根据要完成的命令排除某些模式。
对于vim
,vim
像这样开始:
exclusion pattern
即,除其他外,以_install_xspec '*.@([ao]|so|so.!(conf|*/*) ...
结尾的文件应被忽略。其背后的想法可能是这些文件通常被创建为备份副本,并且您可能不想要对其进行编辑。
[如果要覆盖此行为,则可以将自己的补全添加到.a
中;例如,要使vim在所有文件名上完成,请使用以下命令:
~/.bash_completion
这会使complete -f vim
制表符完成默认为内置文件完成行为。