如何让Vim插入模式下ctrl-o+hjkl与方向键行为完全一致?
问题原因
Vim 普通模式的h/j/k/l移动逻辑与插入模式的方向键逻辑存在差异:
- 插入模式下的方向键是直接移动光标插入点的位置
Ctrl-o会临时切换到普通模式执行单条命令,普通模式的光标是块形态,对应单个字符位置,执行移动命令后回到插入模式时,光标会落在普通模式当前选中字符的左侧,才会出现你遇到的光标落在括号外侧的问题。
解决方法
在你的Vim配置文件中加入以下插入模式映射,即可让Ctrl-o + hjkl的行为和插入模式方向键完全一致:
Vimscript 配置(适用于 Vim 及 Neovim 的 init.vim)
inoremap <C-o>h <Left> inoremap <C-o>l <Right> inoremap <C-o>j <Down> inoremap <C-o>k <Up>
Lua 配置(适用于 Neovim 的 init.lua)
vim.keymap.set('i', '<C-o>h', '<Left>', { noremap = true, silent = true }) vim.keymap.set('i', '<C-o>l', '<Right>', { noremap = true, silent = true }) vim.keymap.set('i', '<C-o>j', '<Down>', { noremap = true, silent = true }) vim.keymap.set('i', '<C-o>k', '<Up>', { noremap = true, silent = true })
添加配置后重载配置或重启Vim即可生效。
内容的提问来源于stack exchange,提问作者zhixin
相关产品推荐
相关产品推荐

