Zshのemacsに似たキーバインディングについていくつかの質問があります。すべての質問の背景説明:Emacsに似たキーバインディングを有効にしましたbindkey -e
(デフォルトでは有効)。
コピーと領域の強調表示:
C-space
Emacsで()を実行してset-mark
ゾーンを選択してからコピーすると、M-w
Emacsはそのゾーンを終了リングに入れてテキストの選択を停止します(つまり、ポイントを移動するとテキストは選択されなくなります)。
しかし、私は同じ行動をすることはできません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