我在vim中使用垂直拆分打开了两个缓冲区,它们使用:set scrollbind进行链接.
有没有办法在窗口之间切换,以便当我使用ctrl + w命令在它们之间切换时,光标保持在同一(相对)行上?
映射将满足您的需求
在左侧窗口中执行此操作:
:nmap <right> :let linenum=getpos('.')[1]\|:wincmd l\|:call cursor(linenum,0)<cr>
Run Code Online (Sandbox Code Playgroud)
并在右侧窗口中执行此操作:
:nmap <left> :let linenum=getpos('.')[1]\|:wincmd h\|:call cursor(linenum,0)<cr>
Run Code Online (Sandbox Code Playgroud)
然后您可以使用左箭头和右箭头在窗口之间切换,光标将转到另一个窗口中的同一行.
编辑:
我没有仔细阅读你的问题(对我感到羞耻!:).
以下是如何准确获得您想要的内容:
在左侧窗口:
:nnoremap <right> :let offset=winline()\|wincmd l\|exe 'normal ' . offset . 'H'<cr>
Run Code Online (Sandbox Code Playgroud)
在右边:
:nnoremap <left> :let offset=winline()\|wincmd h\|exe 'normal ' . offset . 'H'<cr>
Run Code Online (Sandbox Code Playgroud)
玩得开心!