ZSH を設定しようとするときに使用する「"^[b" 逆ワード」とは何ですか?

ZSH を設定しようとするときに使用する「"^[b" 逆ワード」とは何ですか?

私は MAC を使っていて、Iterm2 で実行している ZSH のショートカットを見つけようとしています。

シェルで bindkey と入力すると、(他のマッピングとともに) 次の内容が表示されます。

"^[b" backward-word
"^[f" forward-word

^ が Control キーであることはわかっています。しかし、Ctrl + [ + f を押しても、1 語も先に進みません。

何が足りないのでしょうか?

答え1

^通常はコントロールですが、^[実際には Escape または Alt (または、emacs が好きなら meta) を意味します。

Escbしたがって、これらのキーの組み合わせではまたは を押すことができますEscf

デフォルトでは、Alt は Mac 端末では機能しませんが、iTerm2 には「Option は [ ] Normal [ ] Meta [ ] +Esc として機能します」という設定があります。必要なのは +Esc です。

iTerm2 オプションキー設定のスクリーンショット。

答え2

実際には^[Alt キーです。したがって、あなたの場合、ターミナル (Iterm2) は Alt + b と Alt + f を使用して単語を前後に移動します。これはターミナルによって制御され、zsh とは関係ありません。

答え3

拡張しますMRb さん答え:

Indeedは+または ( + )^[bです。 +を前に付けると文字を文字通り表示できます。この場合、次のようになります。ESCbMeta/AltbCtrlv

  • Ctrl+ v Ctrl+b

    ^B

  • Ctrl+ v Meta+b

    ^[b

  • Ctrl+v ESC b

    ^[b

さらに、zsh マニュアルには次の内容が記載されています:

backward-word (ESC-B ESC-b) (unbound) (unbound)
    Move to the beginning of the previous word.

以下についても同様ですforward-word:

forward-word (ESC-F ESC-f) (unbound) (unbound)
              Move to the beginning of the next word.

答え4

この^表記法は、GNU の世界では制御文字を表すのによく使われます。ここでは、 は^aCtrl-A (ASCII 1、A は ASCII 65) です。言い換えれば、これは「これより 64 スロット前の文字を使用する」の省略形です。

キーESCは ASCII 27 で、64 ステップ前なので[^[ESC の省略形になります。

GNU Emacs エディタでは、CTRL、META などのいくつかの修飾キーが使用されていました。たとえば、CTRL-f はカーソルを 1 文字前に移動し、META-f はカーソルを 1 単語前に移動します。

META キーのない多くのキーボードに対応するために、「ESC は次の文字が META キーで押されたとみなされることを意味する」という規則があります。したがって、GNU Emacs では、ESC-f を押すとカーソルが 1 単語先に移動します。

最近ではCtrl-[ESC 文字を与えることは非常に稀ですが、他の Ctrl の組み合わせの中に潜んでいる可能性があります。たとえば、は^^Telnet セッションでコマンド モードにエスケープするためにまだ使用されているため、見つけられると便利です。

関連情報