Bash:カーソルを一度に1つずつ左に移動するにはどうすればよいですか?


14

OSXでは、optionキーを押したまま、編集する必要のある単語に到達するまで左カーソルキーを押すことができます(またはViではヒットすることbができますが、ターミナルでこれを行う方法を理解できませんでしたまだ...


このページでは、独自のバインディングをカスタマイズする方法を含むreadlineバインディングの完全なリストを見ることができます。
jasonwryan

回答:


26

キーバインドを設定するには:最初に、Ctrl+ Leftキーシーケンスが作成するキーコードを調べる必要があります。コマンドcatを使用して既存のキーバインディングとの干渉をオフにし、キーシーケンスを入力します。私のシステム(Linux)では、これは次のようになります。

$ cat
^[[1;5D

Ctrl+ dを押してcatを終了します。これで、Ctrl-Leftが6つのキーコードを発行することがわかりました。

  • エスケープ(^ [)
  • [
  • 1
  • ;
  • 5
  • D

これで、バインドコマンドを発行できます。

bind '"\e[1;5D": backward-word'

6
必要に応じて、永続的な効果を得るために `` "\ e [1; 5D":backward-word ''を$ HOME / .inputrcに追加できます。
llhuii

@llhuii +1、そのことを忘れていました!
ダニエルクルマン

2
+1は、任意のキーの組み合わせをどこにでもバインドする最も柔軟な方法です!
-Irfy

14

必要なbash関数はですbackward-word。実行bind -q backward-wordして、その関数にバインドされたキーのリストを取得できます。1つの一般的なバインディングはEsc +b

また、多くの端末はCtrl+をサポートしていLeftます(Xで使用してワード単位で逆方向にジャンプできる同じホットキー)


1
OK、戻りますbackward-word can be invoked via "\eb".が、Esc + bの代わりにcontrol + Leftをバインドするにはどうすればよいですか?また、Esc + bの欠点の1つは、単語に戻るたびにEscキーを離さなければならないことです。これより良い方法はありませんか。
日本時間

1
もっと良い方法はありますか?当然のことながら:set editing-mode vi:)
jasonwryan

3
@nipponese "esc b"は、ALT-bとしてキーボードでも使用できます。これは、構成に応じて具体的には左または右のaltにする必要があるため、両方を試してください。
Random832

8

Bashのデフォルトのキーショートカットbackword-wordAlt+ bです。同じ結果はEsc+ で達成できますb。キーバインドを編集する前に、これらを試してみてください。

bindコマンドを使用してbind -q [name]、特定のアクションの現在のキーバインドを編集または取得します。


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