私は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^[[K
、a^[[m^[[Kdd
と可能なコマンドgrep
だremote
と思います。最初は現れず、最後の2つは正確で、2番目は壊れていました。
設定する必要がありますgrep出力が端子にない場合は、色を使用しないでください。すでにエイリアスを使用している場合egrep
(egrep --color=always
およびgrep
と同じfgrep
)エイリアスをに変更します--color=auto
。GREP_OPTIONS
どこかに変数が設定されている場合は、そこで--color=always
変更してください--color=auto
。