GITが完成すると奇妙な文字が現れる

GITが完成すると奇妙な文字が現れる

私はbashを実行しています。

GNU bash、バージョン 4.3.25(1)-リリース(x86_64-apple-darwin13.4.0)

OS X 10.10.1から。約1週間前、オートコンプリート機能は動作を停止しましたが、gitでのみ動作することがわかりました。 Gitオートコンプリートにこのスクリプトを使用します。

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

動作が停止してから数日経っても、文字「s」で始まるコマンド(status、show、stashなど)に対してオートコンプリート機能が機能し続けることを確認しました。その後、このコマンドをオートコンプリートしようとします。

git c

出力は次のとおりです。

ユーザー:~$ git c^[[m^[[K

c^[[m^[[Kat ファイル
c^[[m^[[Kheck-attr
c^[[m^[[Kheck-無視
c^[[m^[[Kheck-mailmap
c^[[m^]]] [[Kheck-ref-format
c^[[m^[[Kheckout
c^[[m^[[Kheckout-index
c^][[m^[[Kherry
c^[[m^[[Kherry-pick
c^[ ]] [m^[[Kitool
c^[[m^[[Klean
c^[[m^[[クローン
c^[[m^[[Kolumn c^]][[m^[[Kommit c^[[m^] ) [[Kolone
c^[[m^[[Kolumn c^
[[m^[[Kommit c^[[m^[[]] Kommit-tree
c^][[m^[[Konfig
c^[[m^[ ] Kount-オブジェクト
c^[[m^
[[Kredential-cache
c^[[m^[] [Kredential-osxkeychain
c^[[m^[[Kredential-store
c^[ [ m^[[Kvsexportcommit
c^[[m^[[Kvsimport
c^[[m^[[Kvsserver]]

ご覧のように、いくつかの奇妙な(エスケープされた?)文字が各コマンドの最初の文字の後に挿入されます(「s」を除く他のすべての文字でも同じ現象が発生します)。これらの文字のため、オートコンプリート機能は期待どおりに機能しません。

この問題の原因を知っている人はいますか?私はこれをデバッグする方法さえわからないので、どんなアドバイスでも歓迎します。

答え1

この奇妙なエスケープシーケンスは色変更コマンドです。

コードを完了するには、次のコマンドを実行して使用可能なコマンドをリストします。

git help -a|egrep '^  [a-zA-Z0-9]'

出力はgit help -a次のとおりです。

grep追加リモート追加 - 対話型ハッシュオブジェクトリモート-ext amヘルプリモート-fd ... fsck -オブジェクト受信パケット書き込みツリーgc reflog get-tar-commit-id relink

grep がその行の一致する部分をカラーで印刷するように構成されている場合、最初の列のコマンド名に最初の文字が強調表示されます。

$ git help -a|egrep --color=always '^  [a-zA-Z0-9]' | cat -v | head -n 1
^[[01;31m^[[K  a^[[m^[[Kdd                      grep                     remote

Bash はこの出力を見れば^[[01;31m^[[Ka^[[m^[[Kddと可能なコマンドgrepremoteと思います。最初は現れず、最後の2つは正確で、2番目は壊れていました。

設定する必要がありますgrep出力が端子にない場合は、色を使用しないでください。すでにエイリアスを使用している場合egrepegrep --color=alwaysおよびgrepと同じfgrep)エイリアスをに変更します--color=autoGREP_OPTIONSどこかに変数が設定されている場合は、そこで--color=always変更してください--color=auto

関連情報