Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅考虑*.foo文件的Bash别名自动完成_Bash_Autocomplete - Fatal编程技术网

仅考虑*.foo文件的Bash别名自动完成

仅考虑*.foo文件的Bash别名自动完成,bash,autocomplete,Bash,Autocomplete,每当我想通过启动命令(例如,vim pdeOptAff.tex)来开始编辑我的LaTeX源代码时,我发现bash(制表符)-自动完成仍然很乏味,因为文件夹通常包含一组具有相同名称但不同结尾的文件: $ ls pdaeOptAff.aux pdaeOptAff.out pdaeOptAff.tex.latexmain pdaeOptAff.bbl pdaeOptAff.pdf pdaeOptAff.toc pdaeOptAff.blg pdaeOptAff.

每当我想通过启动命令(例如,
vim pdeOptAff.tex
)来开始编辑我的LaTeX源代码时,我发现bash(制表符)-自动完成仍然很乏味,因为文件夹通常包含一组具有相同名称但不同结尾的文件:

$ ls

pdaeOptAff.aux  pdaeOptAff.out         pdaeOptAff.tex.latexmain
pdaeOptAff.bbl  pdaeOptAff.pdf         pdaeOptAff.toc
pdaeOptAff.blg  pdaeOptAff.synctex.gz
pdaeOptAff.log  pdaeOptAff.tex
由于我总是想打开
~.tex
文件,我希望有一个过滤器,使autocomplete只扩展
~.tex
文件

此外,我还定义了一个别名:
alias g='gvim--remote silent'
。因此,此筛选器尤其适用于别名。

请尝试:

complete -f -X '!*.tex' g
然后,您可以键入:

g <TAB>
g
并获得完成。注意:这不完整目录。其他人可能使用
compgen
有更好的解决方案


还有一个有用的自动完成指南。

$g*.tex应该展开目录中唯一的
*.tex
文件,这就是您想要的吗?不完全是。我想马上打开展开的文件…制表符完成并不是这样工作的,你必须先完成,然后按enter键,这就是你提供的示例中的代码段所做的。好的,没错。但是,它是打开目录中所有
.tex
的别名。然后是
它会完成,然后是
它会打开所有匹配的文件。不幸的是,这不起作用。我会去看医生的。@Jan它对我有用。也许您需要在制表符之前的g后面添加空格<代码>g[空格][选项卡]。另外,您不需要添加
*.tex
。是的,它应该。。。也许这是另一个问题。因为即使是简单的例子也不起作用。我将在我的家用电脑上试用。@Jan它可能与bash的版本有关吗?或者在rc文件中设置了一些bash选项。我有:
bash--version GNU bash,version 4.2.45(1)-release(x86_64-suse-linux-GNU)
,在我的.bashrc中没有什么特别的东西