Cygwin bashでctrl-arrowキーを単語ごとに前後に移動するにはどうすればよいですか?


97

デフォルトのCygwinインストールでは、CTRL-LEFTARROWまたはCTRL-RIGHTARROWを使用すると、一度に単語をスキップするのではなく、単に5Cまたは5Dが印刷されます。

Home / Endキーは適切に機能するため、再マッピングが可能になります。


この質問はCygwinを扱っていますが、Unix / Linuxシステムへの一般的な応用ができることに注意してください。PuTTYを使用していて、ここでの解決策が役に立たない場合は、PuTTY に使用するコードについて具体的に質問してください
palswim

これは完全なLinuxでも起こりました。オンラインでのいくつかのアドバイスで、私は~/.inputrcファイルを追加しました-これはすべてのLinuxミントのデフォルトを無効にしました。$include /etc/inputrc〜/ .inputrcの先頭に追加することで元に戻すことができます(/ etc / inputrcがシステム全体のinputrcであり、Linux Mint上にあると
想定

回答:


134

解決策を見つけ、後世のためにここに投稿しました。

次の行を~/.inputrcC:\cygwin\home\<username>\.inputrc)に追加します。

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

完了したら、を押しC-x C-r.inputrc現在のセッションのファイルを再度読み取ります。

あなたが他の類似なカスタマイズが必要な場合は注意して物事:使用5Aし、5B上下の矢印のために、と2xシフトしたバージョンのため。

「公式」キーマッピングはBashリファレンスマニュアルに記載されていますが、bashでキーマッピングをすばやく見つける方法については次のとおりです。

  1. タイプCtrl+V
  2. 興味のあるキーシーケンスを入力します(例:Alt+ )。これは印刷されます^[[1;3C
  3. 先行^[を削除し、置き換えるためにそれを置き換え\eます\e[1;3C
  4. この値を.inputrcファイルに入れます。

<kbd> Shift </ kbd> + <kbd> Enter </ kbd>のように、一部のキーボードコードがまったく表示されません。Mintty / Windows / Cygwinでこれらのキーボードコードを見つけるにはどうすればよいですか?
CMCDragonkai

14

ファイル.inputrcをリロードするには、次を使用します。

bind -f ~/.inputrc

ソース


2
これは便利ですが、実際には質問に対する答えではありません-別の答えへのコメントとしておそらく良いでしょうか?
マーティントンプソン

上記@トムの答えを追加しました
dovetalk

7

たとえば、サーバー上の共有アカウントで作業する場合や、使用するカスタム構成の量を制限する場合など、カスタム環境設定なしで機能するものが必要な場合、BashにはCygwinで機能するビルトインがあります。

つまり、Alt+ fは前方に移動し、Alt+ bは後方に移動します。

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html


4
感謝しますが、私はそれらのキーを認識しており、それらを使用しています。また、便利なときに矢印キーを使用するだけで、適切な操作を行ったりカーソルを移動したりする代わりに、エスケープコードを吐き出さないようにします。
トム


0

このソリューションはmsys2コンソールでも機能します:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

これらのキーの組み合わせを.inputrcファイルに配置するだけです。

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