[英]tcsh autocompletion for modulefiles
我在https://opensource.apple.com/source/tcsh/tcsh-66/tcsh/complete.tcsh上找到了这段代码,该代码可以自动完成tcsh中的模块文件。
有人可以帮助我理解'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
非常感谢。
不确定此Compl_module
别名是否运行良好,因为它试图通过仅查看现有文件来确定模块路径中的所有现有模块文件。 Modulefile也可以是别名,符号版本和虚拟文件(在更新的Modules版本> = 4.1中),因此Compl_module
别名会忽略该别名。
您将在Modules项目的源存储库中找到module
命令的完整完成脚本。
此完成脚本调用module avail
以正确获取已启用的模块路径中的所有现有module avail
文件。
从模块版本4.0开始,将自动启用TCSH完成脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.