如何让Vim中光标在行尾时按右键跳转到下一行?
实现Vim行尾按右键跳转到下一行
当然可以实现,只需要在你的~/.vimrc(Neovim用户对应~/.config/nvim/init.vim)中添加按键映射即可,分两种常用场景处理:
Normal模式下的映射
Normal模式中默认右键(<Right>)是向右移动光标,我们可以修改它的行为:光标在行尾时按下右键就跳转到下一行行首,否则正常右移。添加以下配置:
nnoremap <Right> :call <SID>SmartRight()<CR> function! s:SmartRight() if col('.') == col('$') - 1 execute "normal! j^" else execute "normal! l" endif endfunction
Insert模式下的映射
如果需要在插入模式也实现相同逻辑,添加下面的配置:
inoremap <Right> <C-o>:call <SID>SmartRightInsert()<CR> function! s:SmartRightInsert() if col('.') == col('$') - 1 execute "normal! j^" startinsert else execute "normal! l" startinsert endif endfunction
简单解释:
col('.') == col('$') - 1用来判断光标是否处于行尾(col('$')返回的是行尾后一个位置的列号,减1才是实际行尾的列数)- 满足行尾条件时,
j^实现跳转到下一行并移动到行首;不满足时,l执行正常向右移动 - 插入模式映射里用
<C-o>临时切换到Normal模式执行命令,之后自动切回插入模式
保存配置后重启Vim,就能实现你想要的效果。
内容的提问来源于stack exchange,提问作者burner8268
相关产品推荐
相关产品推荐

