Autocomplete 第二个参数的tcsh自动完成

Autocomplete 第二个参数的tcsh自动完成,autocomplete,cygwin,tcsh,tab-completion,Autocomplete,Cygwin,Tcsh,Tab Completion,例如,对于命令 cp src_file dst_file 如果我键入src然后按TAB,我的tcsh可以为src_文件完成,但如果我键入dst然后按TAB,它不会尝试为dst_文件完成 完整cp的输出(根据@shx2的请求): %完成cp 完整的cp'c/-/(存档备份不解除引用强制交互链接保留父级稀疏递归符号链接后缀更新详细版本控制一个文件系统帮助版本)/''c/-/(a b d f i l P P R S u V V x-/''n/-*R/d/''n/{-S,--suffix}/x:/''

例如,对于命令

cp src_file dst_file
如果我键入src然后按TAB,我的tcsh可以为src_文件完成,但如果我键入dst然后按TAB,它不会尝试为dst_文件完成

完整cp的输出(根据@shx2的请求):

%完成cp
完整的cp'c/-/(存档备份不解除引用强制交互链接保留父级稀疏递归符号链接后缀更新详细版本控制一个文件系统帮助版本)/''c/-/(a b d f i l P P R S u V V x-/''n/-*R/d/''n/{-S,--suffix}/x:/''n/{-V,--version control}/(t nil existing NOVER simple)/“”n/-/f/''n/-/d/''p/1/f/''p/2/d/''n/*/f/'

是否有我遗漏的任何设置?

您有一个自定义的
完整的
规则用于
cp
,它会导致您报告为意外的行为。因此,这可能是一条糟糕的规则

您可以简单地禁用它:

uncomplete cp

和/或从您的点文件中删除
complete cp
命令(可能是
.cshrc
,或者从其中删除另一个点文件
source
d)。

尝试
uncomplete cp
删除默认完成。如果您非常沮丧,您甚至可以执行
uncomplete*

完成项来自哪里:
tcsh
sources
/etc/csh.cshrc
在登录过程中,依次是sources
/etc/profile.d/complete.tcsh
,在cygwin 1.7的tcsh 6.18.01上,它是一个1228行的文件,包含大量自定义完成项!cp的完成不会自动完成第二个文件,并强制您键入该文件,以防您在匆忙中意外覆盖现有文件

自1993年以来,tcsh已经有了可编程的补全,并且具有广泛的语法来定义补全。好处是你可以做像这样的事情

complete dbx 'p/2/(core)/'
它将
dbx
的位置补全定义为单词“core”,这是位置2中
dbx
调试器最常见的补全,当您按TAB键时看到“core”出现在那里非常酷


缺点是,如果
/etc/profile.d/complete.tcsh
没有达到预期效果,则需要学习整个语法。到目前为止,我一直设法避免学习这种语法,因为
uncomplete
在这种情况下对我来说很好。YMMV.:-)

选项卡时会发生什么情况?如果您在键入
\cp
而不是
cp
时尝试相同的操作,会发生什么情况?如果我在
cp src_file
之后立即按
TAB
,则会显示目录中的内容。如果在
cp src_文件d
之后,不显示任何内容。使用
\cp
具有相同的结果。
别名cp
完整cp
的输出是什么?输出如下所示
yorkwra:[trunk/3rdparty/arm\u fastmodel]>别名cp-yorkwar:[trunk/3rdparty/arm\u fastmodel]>完整cp'c/--/(存档备份无取消引用强制交互链接保留父级稀疏递归符号链接后缀更新详细版本控制一个文件系统帮助版本)/''c/''c/''d f i l P P R R S u V V x-/''n/-*R/d/''n/{-S,--suffix}/x:/''n/{-V,--version control}/(t编号为零的现有从不简单)/“'n/-/f/'n/-/d/'p/1/f/'p/2/d/'n/*/f/'
我现在在Windows 7上重新安装了一个64位cygwin。这里的
cp
运行良好。无论如何,谢谢。顺便说一句:我的shell配置文件中没有任何
complete cp
命令。@Yorkwar,从你的评论中,某处定义了一个
complete cp
命令*。可能是这样的。”“隐藏”为
complete{cmd1,cmd2,cp,cmdx}…
我正在为新的64位Cygwin使用相同的.cshrc副本。可能是旧的Cygwin系统做的。
complete dbx 'p/2/(core)/'