ZSHのLine Editor(ZLE)にEmacsに似たバインディングを追加します。

ZSHのLine Editor(ZLE)にEmacsに似たバインディングを追加します。

Zshのemacsに似たキーバインディングについていくつかの質問があります。すべての質問の背景説明:Emacsに似たキーバインディングを有効にしましたbindkey -e(デフォルトでは有効)。

コピーと領域の強調表示:

C-spaceEmacsで()を実行してset-markゾーンを選択してからコピーすると、M-wEmacsはそのゾーンを終了リングに入れてテキストの選択を停止します(つまり、ポイントを移動するとテキストは選択されなくなります)。

しかし、私は同じ行動をすることはできませんZLE。領域をコピーするとM-W選択モードがオンになり、カーソルを移動すると選択項目は変更を続けます。

選択を停止:

Emacsでは、範囲を選択してを押してC-g選択を停止します(現在のマークアップは終了します)。 Zsh では、デフォルトではC-gシェルで新しい行が開始されます。それでは、C-g進行中の選択を停止するためにバインドできる(おそらく他のものを使用して)ZLEコマンドがありますか?

答え1

選択を無効にするには、次を実行します。set-mark-command否定的な引数を含む: ESC - Ctrl+Space

領域をコピーして選択を無効にするには、両方の操作を実行する関数を作成し、ウィジェットで宣言zle -Nそして製本そのウィジェットをキーで。

copy-region-as-kill-deactivate-mark () {
  zle copy-region-as-kill
  zle set-mark-command -n -1
}
zle -N copy-region-as-kill-deactivate-mark
bindkey '\ew' copy-region-as-kill-deactivate-mark

関連情報