web-dev-qa-db-ja.com

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

ホスティングプロバイダーサーバーの1つにログインし、ALT +左とALT +右がGNU Screen。

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

19
Mikko Ohtamaa

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

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

キーワードbackward-Wordforward-Wordを探しています。したがって、キーバインディングが機能していないシェルを使用している場合は、bindkey -L | grep backward-Wordを試して、それらが構成されているかどうかを確認してください。これについての詳細は zshzle(1) にあります。

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

bindkey 'Ctrl+vAlt+Right'フォワードワード

bindkey 'Ctrl+vAlt+Left'後方-単語

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

7

ITermについて話すことはできませんが、これらは、Oh-my-zshでZSH5.0.7を実行しているFedora19のGNOMEターミナルでこの問題を解決するために使用したキーバインディングです。

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

ここで、\e ==エスケープキーシーケンス( セクション4.1.1 に記載されています)

および[ == O(大文字のO;セクション 4.2.1 で説明されているように)、場合によっては。例: tmuxの下では、この置換は私にとって必要ですが、tmuxがない場合は、置換を行わないようにする必要があり、[ == [

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

$ cat
^[[1;3C

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

[ == [tmux OR [ == O(大文字o)ありtmux

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

C ==右矢印キー

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

~/.zshrcは、次の2つのコマンドを追加した後で再ソースする必要があります。

$ source ~/.zshrc

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

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

3
rivanov

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

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

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

2
loganjones16

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

0
Daniel Serodio