web-dev-qa-db-ja.com

$ BUFFERにテキストを追加する以外の方法でzshの選択モードをキャンセルするにはどうすればよいですか?

ctrl-右キー、Ctrl-左キーで動作するzleウィジェット(最初のウィジェットは選択モードを開始しています):

c-sel-r-reg () {
  local WORDCHARS=${WORDCHARS/\/}
  zle select-in-Word
}
zle -N c-sel-r-reg
bindkey "^[Oc" c-sel-r-reg

c-l-reg () {
  local WORDCHARS=${WORDCHARS/\/}
  zle vi-backward-Word
  zle end-of-line
  zle -U " "
}
zle -N c-l-reg
bindkey "^[Od" c-l-reg
1
cname

Zsh zleウィジェットから「選択モード」と呼んでいるものをキャンセルするには、次のようにします。

zle set-mark-command -n -1

または必要に応じて:

REGION_ACTIVE=0

Zshがサポートするのは、主にemacsおよびvim互換の形式です。マーク($ MARK)とカーソル($ CURSOR)の間のテキストが強調表示されます。ドキュメントでは、リージョン(emacs)またはビジュアルモード(vim)についても説明しています。 Windowsプログラムで得られる典型的な動作は、特に強力ではありません。 vimまたはemacsがどのように機能するかを学ぶほうがよいでしょうが、いくつかのウィジェットを置き換えると、Windowsスタイルの選択をほとんどエミュレートできます。例えば自己挿入では、テキストを挿入する前に選択をクリアする必要があります。主な制限は、選択が常にカーソルで開始または終了する必要があることです。

2
okapi