编辑Bash脚本我想给变量分配一个文件名。
例如,inputfile=foo.txt
对于标准设置,如果不先在“=”后面插入空格,则无法完成文件名。
有什么解决办法吗?

最佳答案

首先,comint-dynamic-complete从Emacs 24.1开始就已经过时了。替换函数是completion-at-point
现在,如果您开始研究completion-at-point在shell脚本缓冲区中实际执行的操作,您最终还是会进入comnt。特别是,函数comint--match-partial-filename看起来很有希望解释您描述的行为。
如果我读对了,这里的问题是“=”被认为是文件名的有效部分,至少在类似POSIX的系统上是这样(参见变量comint-file-name-chars)。因此,完成机制试图完成文件名“inputfile=/…”,但显然找不到该文件名。
如果您从未在文件名中使用过“=”(或者您很少使用它,以至于工作完成超过了其他缺点),那么您可能需要考虑在shell脚本模式挂钩中执行类似于(setq comint-file-name-chars "[]~/A-Za-z0-9+@:_.$#%,{}-")的操作(如果您使用的是POSIX系统,在Windows上看起来会略有不同)。
希望能有所帮助。

10-06 10:28