当尝试自动完成 vi 的文件名时,以 .log 结尾的文件未列为选项。我该如何纠正这个问题?
答案1
我猜你在某个地方(也许在你的~/.cshrc
)指定了类似这样的内容:
complete vi 'n/*/f:^*.{o,a,dvi,gz,z,Z,log}/'
您应该更改它(或者覆盖它),例如:
complete vi 'n/*/f:^*.{o,a,dvi,gz,z,Z}/'
解释:n
表示“下一个单词完成”,*
是一个用于匹配命令行上单词开头的 glob-pattern,f
表示文件名,^*.{o,a,dvi,gz,z,Z}
表示文件名不能以.o
、.a
、.dvi
、.gz
或.z
结尾.Z
。
答案2
忽略以 结尾的文件名的自动完成功能可能.log
并非特定于vi
。 以 结尾的文件名可能.log
无法自动完成任何内容。
tcsh 中有一个名为的 shell 变量fignore
,它根据man
页面tcsh
,执行以下操作:
列出完成时要忽略的文件名后缀。
在我自己的tcsh
配置和使用中,忽略某些与完成功能相关的文件是有意义的:
% set fignore = (.aux .log .elc .o)
% echo $fignore
.aux .log .elc .o
但是,假设您确实vi
设置了一些特定的完成功能以忽略.log
,则以下命令应该能够让您知道:
% complete | grep vi