我正在运行 bash
GNU bash,版本 4.3.25(1)-release (x86_64-apple-darwin13.4.0)
在 OS X 10.10.1 上。大约一周前,我注意到自动完成已停止工作,但仅适用于 git。我正在使用此脚本进行 git 自动完成:
https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
在它停止工作几天后,我注意到自动完成仍然适用于以字母 's' 开头的命令(例如 status、show、stash)。之后,我尝试自动完成此命令:
git c
Run Code Online (Sandbox Code Playgroud)
这是输出:
用户:~$ git c^[[m^[[K
c^[[m^[[Kat-file
c^[[m^[[Kheck-attr
c^[[m^[[Kheck-ignore
c^[[m^[[Kheck-mailmap
c^[[m^] [[Kheck-ref-format
c^[[m^[[Kheckout
c^[[m^[[Kheckout-index
c^[[m^[[Kherry
c^[[m^[[Kheckout c^[[m^[]
] [m^[[Kitool
c^[[m^[[Klean
c^[[m^[[Klone
c^[[m^[[Kolumn
c^[[m^[[Kommit
c^[[m^[[] Kommit-tree
c^[[m^[[Konfig
c^[[m^[[Kount-objects
c^[[m^[[Kredential
c^[[m^[[Kredential-cache
c^[[m^[] [Kredential-osxkeychain
c^[[m^[[Kredential-store
c^[[m^[[Kvsexportcommit
c^[[m^[[Kvsimport
c^[[m^[[Kvsserver]
如您所见,在每个命令的第一个字母之后插入了一些奇怪的(转义?)字符(除“s”之外的所有其他字母也是如此)。由于这些字符,自动完成无法按预期工作。
有没有人知道可能导致这种情况的原因?我什至不知道如何调试这个,所以欢迎任何提示。
这些奇怪的转义序列是变色命令。
\n\n完成代码运行以下命令来列出可用命令:
\n\ngit help -a|egrep \'^ [a-zA-Z0-9]\'\nRun Code Online (Sandbox Code Playgroud)\n\n的输出git help -a看起来像这样:
添加 grep 远程\n 添加--交互式哈希对象远程分机\n am 帮助远程-fd\n \xe2\x80\xa6\n fsck-对象接收包写入树\n gc reflog\n get-tar -commit-id 重新链接
\n\n如果 grep 配置为以颜色打印该行的匹配部分,则第一列中的命令名称将突出显示其第一个字母:
\n\n$ git help -a|egrep --color=always \'^ [a-zA-Z0-9]\' | cat -v | head -n 1\n^[[01;31m^[[K a^[[m^[[Kdd grep remote\nRun Code Online (Sandbox Code Playgroud)\n\n当 bash 看到此输出时,它认为^[[01;31m^[[K、a^[[m^[[Kdd、grep和remote是可能的命令。第一个不会出现,最后两个是正确的,第二个被破坏了。
您需要将grep配置为当其输出不在终端上时不使用颜色。如果您已使用别名egrep(并且与和egrep --color=always相同),请将其更改为。如果您已在某处设置了变量,请更改为那里。grepfgrep--color=autoGREP_OPTIONS--color=always--color=auto
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |