私は使うviモード存在するああ、そしてAF - マジック トピック。
現在位置にあるかカーソルスタイルで表示したい。ノーマルモード(ブロック)または挿入モード(量)、zsh
およびvim
。
これが私が今まで持っているものです:
私~/.zshrc
:
# vim mode config
# ---------------
# Activate vim mode.
bindkey -v
# Remove mode switching delay.
KEYTIMEOUT=5
# Change cursor shape for different vi modes.
function zle-keymap-select {
if [[ ${KEYMAP} == vicmd ]] ||
[[ $1 = 'block' ]]; then
echo -ne '\e[1 q'
elif [[ ${KEYMAP} == main ]] ||
[[ ${KEYMAP} == viins ]] ||
[[ ${KEYMAP} = '' ]] ||
[[ $1 = 'beam' ]]; then
echo -ne '\e[5 q'
fi
}
zle -N zle-keymap-select
# Use beam shape cursor on startup.
echo -ne '\e[5 q'
# Use beam shape cursor for each new prompt.
preexec() {
echo -ne '\e[5 q'
}
発見するここ。
これらの設定を使用すると、独立して考慮すると両方がうまく機能しますzsh
。vim
しかし、私がinvim
から入るときzsh
挿入モード、vim
で始まるノーマルモード(そうする必要がありますが)ビーム形状のカーソルはまだ表示されます。同様に終了するとvim
再び入りますzsh
。挿入モードしかし、カーソルはまだブロックにあります(最後のvim
モードノーマル)。
その後、初めてモードを切り替えると(inとout zsh
)、vim
カーソルは再び正常に動作します。
入った後でもvim
正しいカーソルを表示するにはどうすればよいですか?
入れてみよう
autocmd VimEnter * stopinsert
autocmd VimLeave * startinsert
my では~.vimrc
カーソルには影響しません。
ベストアンサー1
precmd()
代わりに使用する方が良いと思いますpreexec()
。
# .zshrc
_fix_cursor() {
echo -ne '\e[5 q'
}
precmd_functions+=(_fix_cursor)
この方法:
- 君は変える必要はない
.vimrc
- コマンドを実行せずに新しいプロンプトを生成しても、カーソルは固定されます。
- あなたはあなた
echo -ne '\e[5 q'
の.zshrc
。