Alt + zshとiTerm2の単語間を移動する矢印


19

ホスティングプロバイダーサーバーの1つにログインし、GNU Screenのシェルプロンプトで、ALT +左とALT +右が単語間を移動していることに気付きました。

どのような種類のキーバインドを構成する必要があり、iTerm2で実行されているローカルOS X zshにこの動作を取得するにはどうすればよいですか?


この質問に興味がある人は、zshの単語がbashの単語ではないことを知りたいと思うかもしれません。FOO=BARzshには1ワード、bashには2ワードです。同様に、カーソルをfoo --baraltの最後に設定してalt + backspaceを実行すると、bashにfoo --なり、zshになりますfoo 。Zshはbashに多くの機能を追加しますが、オーバーライドする非常識なデフォルトもたくさんあります。
weberc2

回答:


28

ここで解決策を見つけました:https : //coderwall.com/p/h6yfda。リンクがダウンした場合に備えて、最も重要な部分をコピーします。

  1. [設定]、[プロファイル]、[キー]に移動します。
  2. エスケープ文字として機能するように、左の⌥キーを設定します。
  3. ⌥←の現在のショートカットを見つけるか、次の設定で新しいショートカットを作成します。
    • キーボードショートカット:⌥←
    • アクション:エスケープシーケンスを送信する
    • Esc +:b
  4. 以下の設定で⌥→キーボードショートカットについて繰り返します。
    • キーボードショートカット:⌥→
    • アクション:エスケープシーケンスを送信する
    • Esc +:f

1
一般的なzshではなく、特定の端末エミュレーターに固有であることを言及する価値があります。
ハイエンジェル

6

キーワードbackward-wordとを探していforward-wordます。そのbindkey -L | grep backward-wordため、キーバインドが機能しないシェルを使用している場合は、それらが設定されているかどうかを確認してください。これについての詳細はzshzle(1)にあります。

次のように入力して、キーバインドを手動で設定できます。

bindkey ' Ctrl+ v Alt+ Right'前方ワード

bindkey ' Ctrl+ v Alt+ Left'バックワード

キーバインドにもいくつかの問題がありましたが、ほとんどの場合、問題はOption / Altキーが予想されるMeta / Escapeとは異なるものを送信したことでした。


emacs-forward-wordおよびを使用することもできますemacs-backward-word。違いは、常に単語の先頭にジャンプするのではなく、単語の末尾に前方にジャンプし、単語の先頭に後方にジャンプすることです。
Aalexガビ

これは最も堅牢でクリーンなソリューションです。異なる種類のキーマッピングおよび/またはすべての種類のssh-tmux-zshの組み合わせに適応できます。ハードコードされたエスケープシーケンスを含む他のソリューションは、特定のシステムの一部のケースのみを解決します。
HKTonyLee

3

私はiTermについて話すことはできませんが、これらは、Oh-my-zshでZSH 5.0.7を実行するFedora 19のGNOMEターミナルでこの問題を解決するために使用したキーバインドです。

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

where \e==エスケープキーシーケンス(セクション4.1.1で文書化されているように)

および[== O(大文字のO。セクション4.2.1で文書化されているように)、場合によっては。たとえば、tmuxこの置換は私にとってtmux必要ですが、置換なしで[== が必要です。[

シーケンスのキーコードはcat、目的のシーケンスを使用して押して取得できます。たとえば、押すことの結果は次の<Alt+Right>ように解釈される必要があります。

$ cat
^[[1;3C

^[== \e==エスケープキーシーケンス

[== [なしtmuxOR [== O(大文字のo)ありtmux

1;3 ==これについてはわかりませんが、論理的には <Alt>

C ==右矢印キー

そして、このシーケンスはに与えられているbindkey中で~/.zshrc、最初の引数として、永続性のためにファイルされ、バインドされ、ウィジェットに、引数1でキーストロークは(zshの用語でウィジェットまたは)特定のエディタコマンドを実行することを意味し、最初にどの上記の例の行はforward-wordです。

~/.zshrcこれら二つのコマンドをして、それに付加された後に再調達する必要があります。

$ source ~/.zshrc

私のシステムでの迷惑な点の1つは、この特定の組み合わせにより、コマンドが発行されるたびに端末エミュレーターがビープ音を鳴らしたことです。これは、

'Edit'->'Profile Preferences'->'Terminal Bell' チェックボックス。


1

iTerm2のコマンドラインナビゲーションをより直感的にすることに関して、私にとって最も効果的なのは(私はコマンドラインで成長しなかった若い大人ですが、テキストエディターとIDEで多くの時間を費やしました)に:

  • [設定]-> [プロファイル]-> [キー]に移動します
  • キーマッピングのリストの下に、プリセットを追加/削除またはロードするボックスがあります(コンボボックス)
  • [ Natural Text Editingプリセット]ドロップダウンでオプションを選択します。

これにより、すべてのオプションを個別に変更することなく、エディターのキーがより標準的な配置にデフォルト設定されます。


0

zkbdキーバインドの設定に使用することをお勧めします。私はそれを使用し、iTerm2でAlt+ Left/ Alt+ Rightは正常に動作します。zshcontrib(1)zkbdの詳細を参照してください。

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