web-dev-qa-db-ja.com

iTerm 2:キーボードショートカットを設定して行頭/行末にジャンプする方法は?

わかります Ctrl+left/right 行の先頭/末尾にジャンプします。これを変更する方法 Cmd+left/right arrow

取得するために Alt+left/right arrow この記事 に従って、Wordのジャンプで正しく動作します。

333
chris

iTerm2に次のプロファイルショートカットキーを追加します

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

これが必要な人のためのビジュアルです

iTerm add key visual

625
Matthias

ITerm2の単語と行の開始/終了の間をジャンプするには、次の手順に従います。

  • iTerm2->設定( + ,
  • 「キー」タブを開きます
  • 次のグローバルショートカットキーを追加します

カーソルを1単語左に移動

  • キーボードの組み合わせ:  + 
  • アクション:16進コードの送信
  • コード:0x1b 0x62

カーソルを1単語右に移動

  • キーボードの組み合わせ:  + 
  • アクション:16進コードの送信
  • コード:0x1b 0x66

カーソルを行の先頭に移動

  • キーボードの組み合わせ:  + 
  • アクション:16進コードの送信
  • コード:0x01

カーソルを行末に移動

  • キーボードの組み合わせ:  + 
  • アクション:16進コードの送信
  • コード:0x05

単語の削除

  • キーボードの組み合わせ:  + ←Delete
  • アクション:16進コードの送信
  • コード:0x1b 0x08

行の削除

  • キーボードの組み合わせ:  + ←Delete
  • アクション:16進コードの送信
  • コード:0x15

元に戻す

  • キーボードの組み合わせ:  + z
  • アクション:16進コードの送信
  • コード:0x1f

前のバインディングを削除するを忘れないでください:

  • 「プロファイル」タブを開きます
  • サブタブ「キー」をクリックします
  • キーの組み合わせのマッピングを削除する  +  そして  + 
328
sqren

すでに多くの良い答えがあると思いますが、これはシェルだけではなく、できるだけネイティブOSXに最も近い機能を提供するはずです。これがZSH、Bash、node、python -i、iex、irb/pryの各セッションで機能することを確認しました(readlineにrb-readline gemを使用しますが、すべてに有効です)。

ITerm設定を開きます +, Profilesタブ(Keysタブを使用できますが、プロファイルにキーバインドを追加すると、 プロファイルを保存 して複数のコンピューターに同期できます)およびkeysサブタブに移動して、次を入力します:

カーソルの左側のすべての文字を削除します

+←Delete 16進コードを送信:

0x15より互換性がありますが、機能はカーソルの左側の文字だけでなく行全体を削除することもあります。私は個人的にこれを使用し、^Uのzsh bindkeyを上書きして、カーソルの左側のものだけを削除します(以下を参照)。

または

0x18 0x7f互換性が低く、ノードでは機能せず、デフォルトではzshで機能しません。 以下を参照してzshを修正してください (bash/irb/pryは問題ありません)、動作するときに必要な機能を実行します。

カーソルの右側のすべての文字を削除します

+fn+←Delete または +Delete→ 16進コードの送信:0x0b

カーソルの左側にある1つの単語を削除します

+←Delete 16進コードを送信:

0x1b 0x08 ElixirのIEXが破損し、他のどこでも問題なく動作するようです

または

0x17はどこでも動作しますが、IRBの通常のWordブレークで停止せず、代わりにリテラルスペースが見つかるまで削除します。

カーソルの右側にある1つの単語を削除します

+fn←Delete または +Delete→ 16進コードの送信:0x1b 0x64

カーソルを行の先頭に移動します

+ 16進コードの送信:0x01

カーソルを行末に移動します

+ 16進コードの送信:0x05

カーソルを1単語左に移動

+ 16進コードの送信:0x1b 0x62

カーソルを1単語右に移動

+ 16進コードの送信:0x1b 0x66

Undo

+z 16進コードの送信:0x1f

やり直し 通常、bash、zsh、またはreadlineにバインドされていないため、未使用の16進コードに設定して、zshで修正できます

++Z または +y 16進コードの送信:0x18 0x1f

動作しないものを修正する方法

Zshの場合、まだ機能していないもののバインディングをセットアップできます +←Delete そして ++Z/+y 実行することにより:

# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc

# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc

# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc

# reload your .zshrc for changes to take effect
$ source ~/.zshrc

REDOをbashまたはreadlineに追加するための解決策が見つからないため、いずれかの解決策を誰かが知っている場合は、以下にコメントしてください。

キーシーケンスを16進数に変換する方法に関するルックアップテーブルを探している人にとっては、 このテーブル が非常に役立つことがわかります。

221
Travis

上記のチュートリアルに従って、iterm2のキー設定をセットアップします。

  1. 新しいショートカットキーを作成する
  2. アクションとして「エスケープシーケンスを送信」を選択します
  3. 次に、cmd-leftを設定するには、その下のテキストで:
    • 入る [H 行の開始
      または
    • 入る [F 行末
45
Jaime Bellmyer

ITerm 3.0.12では、Natural Text Editingプリセットに切り替えることができます。

enter image description here

iTerm→設定→プロファイル→キー

警告これはプリセットなので、以前にバインドしたキーを上書きできます。そのため、プリセットを適用する前に現在のキーバインディングを保存することをお勧めします。

33
Nik Kov

ITerm2の行末または行頭に移動したい人のクイックリファレンスについては、上記のリンク http://hackaddict.blogspot.com/2007/07/skip-to-next-or- previous-Word-in-iterm.html iTerm2では次のことに注意してください。

  • Ctrl+A、行の先頭にジャンプしますが、
  • Ctrl+E、行の最後にジャンプします。
12

同じ問題を抱えているが、特にiTerm 2でZsh Shellを使用している人を助けるためだけに、Zsh /etc/inputrcを正しく読み取れないことがわかりました 、そのため、プリファレンスで設定したキーバインドを理解できません。

これを修正するには、次のようないくつかのキーバインディングを.zshrcファイルに追加する必要があります。

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

上記の例の「e」の前のバックスラッシュに注意してください。リンクされた記事には表示されないため、バインディングを追加するときに.zshrcファイルに追加してください。

8
Nerdwood

Travis answer を使用し、動的プロファイルを作成し、その指示に基づいてインポートできます。

GabLeRoux/iterm2-macos-dynamic-profile

指示はreadmeにあり、すべてを手動で追加するよりも、これをインポートする方がはるかに高速です。これはコメントに隠されていたため、@ gooliのリクエストに従ってこれを回答しました。これをお楽しみください????

6
GabLeRoux

古い方法のemacsバインディングは、iterm2およびos xターミナルで引き続き機能します。

設定->プロファイル->キー(プロファイルのサブタブ)

  • Left/Right option <kbd>⌥</kbd> key acts as +Escを設定します(OS X端末で同様)

これにより有効になります alt-f そして alt-b 言葉ごとに言葉を動かすために。 (それでも ctrl-a そして ctrl-e いつもどおりに動作します)

metaとして設定すると、これらの古いバインディングは機能しますが、一部のiterm2バインディングは使用できません。

3
halfelf

行の先頭と末尾に移動するために機能する唯一のものは

⌘← "SEND ESC SEQ" OH-行頭に移動します
⌘→ "SEND ESC SEQ" OF-行末に移動します

2
add787

here で説明されているように、簡単な手順で実行できます。

デフォルトでは、Wordのジャンプ(オプション+→または←)およびWordの削除(オプション+バックスペース)は機能しません。これらを有効にするには、「iTerm→Preferences→Profiles→Keys→Load Preset ...→Natural Text Editing→Boom!Head explodes」に進みます。

1
Islam.Ibrahim

bind -pは、シェルにバインドされたエスケープキーのリストを表示します。これは、より多くのアイデアや検索語を提供するのに役立つ場合があります。

1
Jose Alban

https://aaronaddleman.com/articles/hexcodes-and-iterm/ で説明

xxd -psdを使用して、キーの16進コードを取得できます。

1
Zitao Xiong

私にとっては、次の組み合わせが機能しました:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

0
Halil Özgür