是否可以在 Vim 中将文件的一部分作为单独的垂直分割窗口打开?
假设我有一个包含一百行的文件,从第四十行直到第六十行,我希望将其呈现为主窗口内一个单独的锁定窗口,作为拆分的“选项卡”,以便更好地关注文件的这一部分,并且我在那里所做的更改也会反映在主窗口中的整个文件中。
我有一个很长的文件,我想实现这样的功能来更好地管理其内容。
答案1
正如已经指出的那样,您可以使用显示相同缓冲区的分割来实现大部分目的。
:vsplit
或者
:split
至于仅显示文件的特定部分,一种方法是折叠您不感兴趣的部分。有几种方法可以折叠文件的任意部分。
最简单的方法是选择您不想在可视模式下看到的行,然后使用映射zf
将其折叠。
您还可以使用标记进行折叠,因此您可以在想要查看的文本上方放置一个标记,移动到文件顶部,然后折叠到该标记,看起来像这样:
ma
gg
zf'a
折叠是按窗口(拆分)进行的,因此一个窗口中的任何折叠都不会影响其他窗口,即使每个窗口都显示相同的缓冲区。
如果在创建折叠时遇到问题,请尝试将折叠方法设置为手动:
:set foldmethod=manual
答案2
这其实很简单,幸运的是不需要任何配置。打开文件后,运行
:vsplit
或键盘快捷键
<C-w>v
其作用相同。这将使另一个窗口进入同一个缓冲区。这样做的好处是,您在一个分割中所做的任何更改都将自动应用于其他分割。您甚至不必保存!
它这样工作的原因是因为您只有一个缓冲区,只是多个视图进入同一个缓冲区。
您还可以
:split
或者
<C-w>n
其工作原理相同,但具有水平分割。
这种通用方法可以扩展到任意数量的缓冲区、分割和标签。
答案3
在仔细阅读并发现您希望在新拆分中所做的更改反映在原始文件中之前,发布了以下内容。这几乎使我的答案变得过时了。仍然会把它留在这里,以防它对任何人有用。
受到以下启发:http://vim.1045645.n5.nabble.com/如何从文件中读取特定行到当前缓冲区-td1180012.html
假设您已经~/.vimrc
打开,
您可以先在拆分中打开一个新文件
:vsp file
然后
:r! sed -n '22,25p;26q' ~/.vimrc
将第 22 至 25 行改为file
我确信这可以编写脚本并重构。有时间我会研究一下可能性。