Ctrl+r.bash_history
で以前に実行したコマンドを検索するための優れた小さなツールです。
しかし、OS X Terminal.appで使用すると、奇妙な動作が見られ、他の誰かが同じものを見たり、修正する方法を知っているのではないかと思っていました。
find
のように入力しますfind . -exec grep -q "hello world" '{}' \; -print
-q "blog_posts_by" '{}' \; -print
のように、常にコマンドの切り捨てられたバージョンのように見えます。カーソルキーを使用して行を移動できます。 、ただし、すべてが印刷されるわけではありません。行に表示されているものと、端末が実際に編集していると考えているものとの間には、断絶があります。なぜこれが起こるのか誰かが手がかりを持っていますか?ウェブを検索するのは簡単な現象ではありません。
プロンプト内の色のエスケープシーケンスが適切に区切られていない可能性があります。それらは\[
と\]
で囲む必要があります。
PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `
印刷されない文字シーケンスの長さは、このように囲まれている場合、プロンプトの長さに含まれません。前のコマンドの位置は、折り返されているときに正しく表示されるように計算する必要があります。
この問題のもう1つの考えられる原因は、間違ったTERM
値を持っていることです。たとえば、これはPS1で色を使用していたときに発生しましたが、TERM
はxterm
に設定されていました。 xterm-256color
に変更すると、CTRL-rが再び正しく機能し始めました。
これは、ターミナルでのエスケープキーの構成方法が原因である可能性があります。私は通常、iTermまたはTerminal.appの左矢印または右矢印を使用します。これは、すぐにリターンキーを押すのが好きではないためです。 ?