rvmを使用してrubyをインストールし、RoRプロジェクトで使用します。問題は、pry
そのプロジェクト内で開始すると、ctrl-arrowsショートカットを使用できないことです>単語を左右に取得する代わりに、;5D
またはなどのアーティファクトを出力します;5C
。pry
そのプロジェクトの外に電話すると、すべて問題ありません。ctrl-arrowsは、通常のコンソールでも機能します。私はすでにreadlineとrubyをreadlineサポート付きで再インストールしようとしました。もっと何ができますか?
2 に答える
問題を見つけました。にrb-readline
依存関係がありましたGemfile
。それを取り除くと、問題はなくなりました。
これを修正する1つの方法は.inputrc
、次のコンテンツを使用してホームディレクトリにを作成することです。
"\033[1;5C": forward-word
"\033[1;5D": backward-word
私はbashとpryの両方でこの問題を抱えていましたが、上記で修正されました。
"\033[1;5C"
オペレーティングシステム、または使用しているターミナルソフトウェアによって、が異なるように見えることに注意してください。OSXでは、Terminal.appの[設定]ダイアログに移動し、プロファイルを選択して、[キーボード]タブをクリックすると、Ctrlキーを押しながら右に押すと実際に生成される命令を確認できます。
- Snow Leopardでは、デフォルトは
\033[5D
- マーベリックスでは、デフォルトは
\033[1;5C
この問題は、端末から送信された指示がシェルによって認識されないために発生します(?私に耐えてください-以下は私のグーグルに基づく推測です)
これらのコードの内訳は次のとおりです。
\033
ASCIIエスケープ文字の8進表現です。これは、「以下をテキストではなく、端末を操作するための指示として解釈する」ことを意味します。また、コンテキストに応じて、次のような他の方法で表すこともできます。
- 16進数で
^[
(例^[[1;5D
) \e
(eg\e[5D
または\e\e[D
)としてbashで
1
ちょうど意味するのは、カーソルと同じ行でこの操作を実行することであり、5D
は「1単語先にスキップする」と解釈されることを意図していると思います。は;
2つの命令を分離するだけです。
5D
私の推測では、問題は、 「1つの単語をスキップする」という意味をネイティブに理解していないか、。を使用した命令の作成をサポートしていない一部のシェルまたはユーティリティに起因し;
ます。空白.inputrc
を埋めてすべてを機能させる:)