tcsh shell 无法自动完成 vi 的 *.log 文件

tcsh shell 无法自动完成 vi 的 *.log 文件

当尝试自动完成 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

相关内容