当我在vim中打开文件Foo.txt
,然后使用:vsplit
以便我可以并排查看它的不同部分时,我注意到如果我进行任何类型的视觉选择在左侧,vim将选择右侧的相同文本。此外,如果在我开始视觉选择时双方没有对齐,无论我切换到哪一侧都会跳转以匹配所选择的那一方。
我希望能够使用可视模式突出显示分割窗口两侧的文本的不同部分,或者至少能够使用左侧的可视模式,然后将光标移动到右侧。如果两个文件实际上是不同的文件,这种方法非常好。
是否有一些选项可以启用此功能,或者是制作文件副本的唯一方法?
编辑:我正在扩展此问题的范围以包括任何基于vimscript的解决方案,因为它似乎不是可以设置的选项。如果某人有一个很好的黑客来获得这种行为,请分享。在此期间我也将研究autocmd,尽管它很可能超出了我目前对vimscript的了解。
答案 0 :(得分:5)
就好像vim在看到两个相同的文件时试图变得聪明一样,这种聪明才智应该是可以禁用的。
这种“聪明”是视觉选择(确切地说,'<,'>
标记)本地缓冲区的实现细节。正如您所观察到的,不同的缓冲区可以拥有(并记住)不同的选择。
另一种方法是将视觉选择窗口设为本地。我猜这种方法没有被选中,因为通常,精确的选择范围不能转移到另一个缓冲区;线的数量和长度是不同的。
也就是说,你可以用:autocmd
来实现你想要的东西,它在'<,'>
上的窗口局部变量中保存WinLeave
标记,并从WinEnter
上的那些变量中恢复}。