问题标签 [bash-completion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 带有文件名支持的 Git bash 完成?
是否有支持文件名完成的 bash 完成脚本?我主要使用 mercurial,在那里我可以输入:
它将显示/完成所有修改过的测试文件。它适用于大多数子命令,即hg add <tab><tab>
只会列出未跟踪的文件。它真的很方便。
来自 git contrib 的 bash 脚本接缝不支持这一点。有没有其他选择,或者你如何在命令行上使用 git?
编辑 2015
git-completion.bash
从~1.8.2开始支持完整的文件名完成
bash - 选项卡上的 Bash 变量扩展完成
我正在运行 Ubuntu 11.04,当我尝试在以变量开头的路径上使用 bash 中的制表符完成时,我看到了一些奇怪的行为。如果我有 TOP=/scratch,我尝试制表符完成:
cd $TOP/foo
它变为:
cd \$TOP/foo
我希望它完成为: cd $TOP/foobar 或 cd /scratch/foobar 但我会接受它,只是不改变行并要求我取消转义 $。
有谁知道我应该在 bash/readline 的哪个位置解决这个问题?
bash - 需要更人性化的完成环境变量
假设我们有这样的环境:
开箱即用,$TEST 的 bash 完成非常不一致。证人:→
将此与例如 tcsh 完成完成的方式进行比较,后者总是完成$TES
到$TEST/
(如果$TEST
扩展为目录名)或到$TEST
(如果没有)并且从不扩展任何内容。在我的傲慢看来,这就是正确的事情,而 bash 完全错误。
所以问题很明显。是否有可能让 bash 也做正确的事情,如果可以,怎么做?我试图理解手册,但没有多大成功。
bash - 可以以编程方式调用 bash 完成吗?
我想要的是一个我可以从程序中调用的函数,因此它完成了 bash 给出命令行和按下 TAB 的位置的方式。
将返回相同的东西
我还没有看到任何方法可以做到这一点。
bash - 没有空格分隔的单词的 Bash 补全
我正在完成一个需要像“一:二:三”这样的参数的命令。
用最简单的术语来说,我希望 ':' 像默认的空格字符一样被处理。有没有一种我想念的简单方法来做到这一点?
我发现 ':' 在 COMP_WORDBREAKS 中,但 COMP_WORDBREAKS 中的字符也被视为单词。
所以如果命令行是:
COMP_CWORD 为 3,COMP_WORDS[COMP_CWORD-1] 为 ':'
为了比较,如果命令行是:
COMP_CWORD 将为 2,COMP_WORDS[COMP_CWORD-1] 将为“一”
更糟糕的是,如果你在 ':' 定界符之后点击 [TAB],它的作用就像一个空格:
现在 COMP_CWORD 将为 2 并且 COMP_WORDS[COMP_CWORD-1] 将为“一”。
我可以很容易地自己从 COMP_LINE 解析命令行,但更好地找到一种方法来让 ':' 在我的自定义完成中表现得像 ' '。可能的?
vim - 是否可以为 :! 启用 bash_completion 或 :r !在 VIM 中?
我可以使用 :shell 输入当前目录并运行命令。bash_completion 工作正常。
但是如何让 bash_completion 在:! 命令或:r !命令箱?
注意。我是 Emacs 用户和 Emacs M-!命令不允许这样的事情(还有Mx shell,你需要Mx 术语来获得 bash_completion)。
bash - zsh 或 bash 可以扩展引用目录的历史表达式吗?
例如,假设我刚刚复制了一些东西:
我想像这样使用历史替换:
!!:2
当我点击 [tab] 时,我很惊讶 zsh 没有为我扩展。在对历史论点的更复杂的引用中,我可能真的想要在返回之前进行扩展,所以我可以肯定地知道我提到了正确的论点。有没有办法让它做到这一点?(我希望这是默认行为。这是默认行为,我在某种程度上无意中禁用或破坏了吗?)
如果zsh做不到,可以bash吗?
更新:如果 zsh 引用文件而不是目录,则 zsh 将扩展历史表达式:
如果它只是一个任意字符串,它将扩展它:
但是,如果您尝试将某些内容移动到目录中,则不会。它看起来越来越像这一定是一个错误。
git - bash / git中分支和文件完成之间的冲突
我正在为 git 使用 bash 完成脚本。但是,在某些情况下它不起作用。假设我有一个分支 foo-branch 和一个文件 foo-file. 如果我想丢弃文件中的更改,我会经常这样做:
这立即完成到 foo-branch。通常,如果有多个完成选项,我会收到一个铃声,另一个选项卡会显示选项。在这种情况下,有没有办法让完成工作也像这样工作?还是 git 完成总是优先于文件名完成?
编辑:我浏览了 bash 手册页并找到-o plusdirs
了,我将其添加到complete
指令中。这行得通;我将不得不尝试一段时间,看看它是否不会导致不带文件名参数的命令出现问题。
bash - bash 自动补全:为可能的补全添加描述
是否可以让 bash 自动完成看起来像 Cisco IOS shell 中的那样?
我的意思是为每个完成添加简短的描述,如下所示:
其中 10.10.10.10 和 10.10.10.11 是可能的完成,而 routerA 和 routerB 只是描述(不被执行)。
我知道 bash 可以使用“完整 -W”完成命令,但它能够为它们打印描述吗?
bash - bash 在完成命令时可以省略备份文件吗?
在完成命令、$PATH 中的可执行文件和所有文件时,我想省略名为 #foo# 和 bar~ 的文件。我不介意放置这些备份文件,但在完成命令时不希望看到它们。我是否需要为此编写一个 bash-completer 函数?
这是我正在谈论的提示中第一个单词的完成;