OS XでCTRL-rが奇妙に動作する(コマンドの一部のみが表示される)理由


10

Ctrl+ rは、.bash_history以前に実行したコマンドを検索するための優れた小さなツールです。

しかし、OS X Terminal.appで使用すると、奇妙な動作が見られ、他の誰かが同じものを見たり、修正方法を知っているのではないかと思っていました。

  1. Ctrl+r
  2. 次のように入力します find
  3. ああクール、見て...それは私が欲しかったコマンドです find . -exec grep -q "hello world" '{}' \; -print
  4. そのコマンドを実行したいのですが、hello worldを別のものに変更します。
  5. だから私はヒットまたは
  6. コマンドはコマンドラインでSORTAになっていますが、常に次のように、コマンドの一部が省略されたバージョンのように見えます-q "blog_posts_by" '{}' \; -print。ここでは、コマンド全体がそこにあり、カーソルキーを使用して行を移動できますが、すべてではありません印刷されています。行に表示されている内容と、端末が実際に編集していると見なしている内容との間に不一致があります。

なぜこれが起こるのか、誰か手がかりはありますか?ウェブを検索するのは簡単なことではありません。


これは、期間ウィンドウの幅より長い行でのみ発生しますか?
エソビ、2011年

BTWを実行しているTerminal.App/OSXのバージョンは何ですか?バッシュバージョン?.bashrcも見せていただけますか?
エソビ2011年

回答:


14

おそらく、適切に区切られていないプロンプトの色のエスケープシーケンスがあります。\[およびで囲む必要があり\]ます。

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

非印刷文字シーケンスの長さは、このように囲まれているとプロンプトの長さに含まれず、折り返すときに前のコマンドの位置を計算して適切に表示する必要があります。


- OK、私はこのStackOverflowのスレッド上の上に回答することで解決されたいくつかのより多くの問題が、持っていたstackoverflow.com/questions/35563/...
ブライアン・ケネディ

これは、プロンプトの改行も適用されます。hicolorコントロールシーケンスがドロップされたのは、それがの最初にあったためですがPS1、改行文字が含まれている後ではありません。
Walf 2016年

0

これは、ターミナルでエスケープキーを設定する方法が原因である可能性があります。私は通常、iTermまたはTerminal.appの左矢印または右矢印を使用します。 ?


0

この問題の別の考えられる原因は、間違ったTERM値を持つことです。たとえば、PS1で色を使用しているときにこれが起こりましたが、私TERMはに設定されていましたxterm。に変更したところxterm-256color、CTRL-rが再び正しく機能し始めました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.