如何让NeoVim分屏右侧的relativenumber基于左侧光标计数?
同一文件分屏时让右侧窗口相对行号以左侧光标为基准的实现方案
Vim/NeoVim原生确实没有直接让分屏窗口共享光标基准的relativenumber设置——每个窗口的相对行号本来就绑定自身光标位置,这是设计逻辑,毕竟分屏的核心就是允许同时浏览文件不同位置。不过可以通过两种方式实现你要的需求:
临时快速操作:同步光标位置
在左侧窗口定位到你想要的基准行后,执行这条命令:
:windo call cursor(line('.'), col('.'))
它会让所有打开该文件的窗口光标同步到当前左侧窗口的位置,此时右侧窗口的相对行号就会以左侧的基准行计数,你可以直接用:m-33这类命令移动行,操作完再切换回各自需要的光标位置即可。
长期便捷方案:自定义同步脚本
如果需要频繁用这个功能,可以写个简单的VimScript函数绑定快捷键:
function! SyncCursorToLeftWindow() " 获取左侧窗口的光标位置(假设左侧是第一个打开的窗口,可根据实际调整) let left_win = nvim_list_wins()[0] let [_, lnum, col, _] = nvim_win_get_cursor(left_win) " 把当前窗口(右侧)的光标移到对应位置 call cursor(lnum, col) endfunction " 绑定快捷键,比如按<Leader>s触发 nnoremap <Leader>s :call SyncCursorToLeftWindow()<CR>
之后在右侧窗口按<Leader>s,光标就会同步到左侧窗口的位置,相对行号自然就以左侧光标为基准了。
内容的提问来源于stack exchange,提问作者Benben
相关产品推荐
相关产品推荐

