切换到同一行上的拆分窗口

时间:2011-08-23 21:51:11

标签: vim

我在vim中打开了两个缓冲区,使用垂直分割,使用set scrollbind链接。

当我使用ctrl + w命令在它们之间切换时,有没有办法在窗口之间切换以便光标保持在同一(相对)行上?

3 个答案:

答案 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(返回光标)