首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcsh完成问题

tcsh完成问题
EN

Unix & Linux用户
提问于 2014-11-23 09:13:01
回答 1查看 1.1K关注 0票数 2

我来自bash,正在研究tcsh的选项卡完成功能。

( 1) tcsh不能将完成委托给shell函数( bash使用“-F _func cmd”的方式)是否正确?

2)当将完成委托给外部程序时,tcsh只提供COMMAND_LINE,而bash只提供COMP_LINE和COMP_POINT。这意味着tcsh不能正确地这样做:

代码语言:javascript
复制
% cmd --foo -<tab> --bar --baz

在这里,我希望程序完成给出一个没有提到的选项列表。因为tcsh只会将COMMAND_LINE作为“cmd --foo -”,而bash则会给出整行,但是给出关于COMP_POINT中光标位置的线索。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2014-11-24 17:25:15

  1. tcsh根本没有函数,所以这是否定的。一般策略是创建一个单独的脚本,并将其称为外部程序(对于某些事情,比如aliassource也会起作用)。
  2. 嗯,这并不是一个真正的问题,我可以证实你的观察是正确的:-)添加COMP_POINT可能并不困难;实际上,这里有一个补丁(测试不是很好):diff --git i/tc.cw/tc.co.c索引c472acc.1a69fee 100644 --i/tc.con.c@- +++ w/tc.con.c@ -469,6 +469,8 @@ Char STRPROGRAM_ENVIRONMENT[] ={ 'P','R','O','G','R','A','M',#endif /* _OSD_POSIX */ Char STRCOMMAND_LINE[] ={ 'C‘、'O’、'M‘、'M’、'A‘、'N’、'D‘、'_’、'L‘、'I’、'N‘、'E’、'\0‘};+Char STRCOMP_POINT[] ={ 'C','O','M','p','_','P','P','O','I','N','T',+ '\0‘};#ifdef WARP Char STRwarp[] ={ 'w','a','r',’p‘,'\0’};diff -git i/tw.comp.c w/tw.comp.c索引03da837.101962f 100644 - i/tw.comp.c +++ w/tw.comp.c @ -635,9 +635,12 @ tw_complete(const *line,Char **word,Char **pat,int查找,eChar *suf)默认值:eChar();/*不能发生*/ }+ tsetenv(STRCOMMAND_LINE,行);+ tsetenv(STRCOMP_POINT,str2short(xasprintf("%d",(char) CursorH));res = tw_result(com,pat);Unsetenv(STRCOMMAND_LINE);+ Unsetenv(STRCOMP_POINT);cleanup_until(buf);return };

不过,您可能想在tcsh邮件列表上讨论这个问题。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/169503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档