我在vim中打开了两个缓冲区,使用垂直分割,使用set scrollbind链接。
当我使用ctrl + w命令在它们之间切换时,有没有办法在窗口之间切换以便光标保持在同一(相对)行上?
答案 0 :(得分:6)
映射将满足您的需求
在左侧窗口中执行此操作:
:nmap <right> :let linenum=getpos('.')[1]\|:wincmd l\|:call cursor(linenum,0)<cr>
并在右侧窗口中执行此操作:
:nmap <left> :let linenum=getpos('.')[1]\|:wincmd h\|:call cursor(linenum,0)<cr>
然后你可以使用左右箭头在窗口之间切换,光标将转到另一个窗口的同一行。
编辑:
我没有仔细阅读你的问题(对我感到羞耻!)。
以下是如何获得您想要的内容:
在左侧窗口:
:nnoremap <right> :let offset=winline()\|wincmd l\|exe 'normal ' . offset . 'H'<cr>
在右边:
:nnoremap <left> :let offset=winline()\|wincmd h\|exe 'normal ' . offset . 'H'<cr>
玩得开心!
答案 1 :(得分:2)
Vim 7.3版添加了cursorbind
选项:
设置此选项时,将光标作为当前光标 窗口移动其他光标绑定窗口(窗口也有 此选项集)将其游标移动到相应的行和 柱。此选项对于查看 两个版本文件之间的差异(参见'diff');在diff模式下, 插入和删除的行(虽然不是一行中的字符)是 考虑到了。
答案 2 :(得分:1)
^W+r
(切换缓冲区)后跟^W^W
(返回光标)