例如,对于命令
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/' 有没有我错过的设置?
发布于 2014-04-16 12:17:21
尝试使用uncomplete cp删除默认完成。如果你非常沮丧,你甚至可以做uncomplete * :-)
完成来自:登录期间的tcsh源/etc/csh.cshrc,这反过来又是/etc/profile.d/complete.tcsh的源,在Cygwin1.7上的tcsh6.18.01上,它是一个1228行的文件,包含许多自定义完成!cp的完成不会自动完成第二个文件,并强制您键入它,以防您在匆忙中意外覆盖现有文件。
自1993年以来,tcsh已经有了可编程的补全,并且具有用于定义补全的广泛语法。好处是你可以做像这样的事情
complete dbx 'p/2/(core)/'它在位置2定义了一个位置补全,将核心定义为单词“dbx”,这是dbx调试器在位置2最常见的补全,当您按TAB键时看到“核心”出现在那里是非常酷的。
缺点是,有一个完整的语法需要学习,以防/etc/profile.d/complete.tcsh没有做您期望的事情。到目前为止,我一直在设法避免学习这种语法,因为uncomplete在这种情况下对我来说很好。YMMV.:-)
发布于 2014-03-27 17:36:06
您有一个针对cp的自定义complete规则,该规则会导致您报告为意外的行为。所以这可能是一个糟糕的规则。
您可以简单地禁用它:
uncomplete cp和/或从点文件(可能是.cshrc或其中的另一个点文件sourced )中删除complete cp命令。
https://stackoverflow.com/questions/22554050
复制相似问题