tcsh为第二个参数自动完成

时间:2014-03-21 08:49:45

标签: cygwin tcsh complete

例如,对于命令

cp src_file dst_file

如果输入src然后按TAB键,我的tcsh可以为src_file完成,但如果输入dst然后按TAB键,则不会尝试为dst_file完成。

complete cp的输出(按@ shx2的请求):

% complete cp
complete cp 'c/--/(archive backup no-dereference force interactive link preserve parents sparse recursive symbolic-link suffix update verbose version-control one-file-system help version)/' 'c/-/(a b d f i l P p R r S s u V v x -)/' 'n/-*r/d/' 'n/{-S,--suffix}/x:<suffix>/' 'n/{-V,--version-control}/(t numbered nil existing never simple)/' 'n/-/f/' 'N/-/d/' 'p/1/f/' 'p/2/d/' 'n/*/f/' 

我错过了任何设置吗?

2 个答案:

答案 0 :(得分:1)

尝试uncomplete cp删除默认完成。如果你非常沮丧,你甚至可以uncomplete *: - )

完成情况来自:[{1}}来源tcsh,在登录过程中,来源/etc/csh.cshrc,其中,在cygwin 1.7上的tcsh 6.18.01上是1228-行文件有很多自定义完成! cp的完成不会自动完成第二个文件,并强制您键入它以防万一你不小心覆盖了现有文件。

自1993年以来,tcsh已经具有可编程完成功能,并且具有用于定义完成的广泛语法。好处是你可以做像

这样的事情
/etc/profile.d/complete.tcsh

定义位置完成2 complete dbx 'p/2/(core)/' 为“核心”,这是位置2中dbx调试器最常见的完成,看到“核心”出现在那里当你按TAB时非常酷。

缺点是,如果dbx没有按照您的预期进行操作,则需要学习完整的语法。到目前为止,我设法避免学习这种语法,因为在这种情况下/etc/profile.d/complete.tcsh对我来说很好。因人而异。 : - )

答案 1 :(得分:0)

您有complete的自定义cp规则,其结果是您报告为意外的行为。所以这可能是一个不好的规则。

你可以简单地禁用它:

uncomplete cp

和/或从您的点文件中删除complete cp命令(可能是.cshrc,或从其中删除其他点文件source