简体   繁体   English

tcsh自动补全模块文件

[英]tcsh autocompletion for modulefiles

I found this piece of code, which does auto-completion for module files in tcsh at https://opensource.apple.com/source/tcsh/tcsh-66/tcsh/complete.tcsh . 我在https://opensource.apple.com/source/tcsh/tcsh-66/tcsh/complete.tcsh上找到了这段代码,该代码可以自动完成tcsh中的模块文件。

Could somebody help me understand how the 'alias Compl_module' works? 有人可以帮助我理解'alias Compl_module'的工作原理吗?

#from Dan Nicolaescu <dann@ics.uci.edu>
if ( $?MODULESHOME ) then
  alias Compl_module 'find ${MODULEPATH:as/:/ /} -name .version -o -name .modulea\* -prune -o -print  | sed `echo "-e s@${MODULEPATH:as%:%/\*@@g -e s@%}/\*@@g"`'
  complete module 'p%1%(add load unload switch display avail use unuse update purge list clear help initadd initrm initswitch initlist initclear)%' \
  'n%{unl*,sw*,inits*}%`echo "$LOADEDMODULES:as/:/ /"`%' \
  'n%{lo*,di*,he*,inita*,initr*}%`eval Compl_module`%' \
  'N%{sw*,initsw*}%`eval Compl_module`%' 'C%-%(-append)%' 'n%{use,unu*,av*}%d%' 'n%-append%d%' \
  'C%[^-]*%`eval Compl_module`%'
endif

Thanks a lot. 非常感谢。

Not sure this Compl_module alias is performing well as it tries to determine all existing modulefiles in modulepaths by just looking at existing files. 不确定此Compl_module别名是否运行良好,因为它试图通过仅查看现有文件来确定模块路径中的所有现有模块文件。 Modulefiles can also be aliases, symbolic versions and virtual (in newer Modules versions >=4.1), so the Compl_module alias will miss that. Modulefile也可以是别名,符号版本和虚拟文件(在更新的Modules版本> = 4.1中),因此Compl_module别名会忽略该别名。

You will find a full completion script for the module command in the source repository of the Modules project . 您将在Modules项目的源存储库中找到module命令的完整完成脚本。

This completion script calls module avail to correctly get all existing modulefiles in enabled modulepaths. 此完成脚本调用module avail以正确获取已启用的模块路径中的所有现有module avail文件。

TCSH completion script is automatically enabled starting Modules version 4.0. 从模块版本4.0开始,将自动启用TCSH完成脚本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM