わかります Ctrl+left/right 行の先頭/末尾にジャンプします。これを変更する方法 Cmd+left/right arrow?
取得するために Alt+left/right arrow この記事 に従って、Wordのジャンプで正しく動作します。
ITerm2の単語と行の開始/終了の間をジャンプするには、次の手順に従います。
カーソルを1単語左に移動
0x1b 0x62
カーソルを1単語右に移動
0x1b 0x66
カーソルを行の先頭に移動
0x01
カーソルを行末に移動
0x05
単語の削除
0x1b 0x08
行の削除
0x15
元に戻す
0x1f
前のバインディングを削除するを忘れないでください:
すでに多くの良い答えがあると思いますが、これはシェルだけではなく、できるだけネイティブ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進数に変換する方法に関するルックアップテーブルを探している人にとっては、 このテーブル が非常に役立つことがわかります。
上記のチュートリアルに従って、iterm2のキー設定をセットアップします。
ITerm2の行末または行頭に移動したい人のクイックリファレンスについては、上記のリンク http://hackaddict.blogspot.com/2007/07/skip-to-next-or- previous-Word-in-iterm.html iTerm2では次のことに注意してください。
同じ問題を抱えているが、特にiTerm 2でZsh Shellを使用している人を助けるためだけに、Zsh が/etc/inputrc
を正しく読み取れないことがわかりました 、そのため、プリファレンスで設定したキーバインドを理解できません。
これを修正するには、次のようないくつかのキーバインディングを.zshrc
ファイルに追加する必要があります。
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
上記の例の「e」の前のバックスラッシュに注意してください。リンクされた記事には表示されないため、バインディングを追加するときに.zshrc
ファイルに追加してください。
Travis answer を使用し、動的プロファイルを作成し、その指示に基づいてインポートできます。
GabLeRoux/iterm2-macos-dynamic-profile
指示はreadmeにあり、すべてを手動で追加するよりも、これをインポートする方がはるかに高速です。これはコメントに隠されていたため、@ gooliのリクエストに従ってこれを回答しました。これをお楽しみください????
古い方法の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バインディングは使用できません。
行の先頭と末尾に移動するために機能する唯一のものは
⌘← "SEND ESC SEQ" OH
-行頭に移動します⌘→ "SEND ESC SEQ" OF
-行末に移動します
here で説明されているように、簡単な手順で実行できます。
デフォルトでは、Wordのジャンプ(オプション+→または←)およびWordの削除(オプション+バックスペース)は機能しません。これらを有効にするには、「iTerm→Preferences→Profiles→Keys→Load Preset ...→Natural Text Editing→Boom!Head explodes」に進みます。
bind -p
は、シェルにバインドされたエスケープキーのリストを表示します。これは、より多くのアイデアや検索語を提供するのに役立つ場合があります。
https://aaronaddleman.com/articles/hexcodes-and-iterm/ で説明
xxd -psd
を使用して、キーの16進コードを取得できます。
私にとっては、次の組み合わせが機能しました:
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |