协慌网

登录 贡献 社区

如何在 Vim 中有效地处理多个文件?

我已经开始使用 Vim 开发 Perl 脚本,并开始发现它非常强大。

我喜欢的一件事是能够使用例如vi main.pl maintenance.pl一次打开多个文件,然后在它们之间跳转:

:n
:prev

并查看打开的文件

:args

要添加文件,我可以说:

:n test.pl

我希望它会被添加到我的文件列表中,但它会清除我当前的文件列表,当我输入:args我只打开test.pl

那么我怎样才能将文件添加到我的 args 列表中并将其删除?

答案

为什么不使用标签(在 Vim 7 中引入)?您可以使用:tabn选项在选项卡之间切换:tabn:tabp ,使用:tabe <filepath>可以添加新选项卡; 并使用常规:q:wq你关闭一个标签。如果将:tabn:tabpF7 / F8键,则可以轻松切换文件。

如果没有那么多文件或者您没有 Vim 7,您还可以将屏幕分成多个文件:sp <filepath> 。然后你可以用Ctrl + W切换分屏,然后在想要移动的方向上切换一个箭头键(或者代替箭头键, w代表 next, W代表前一个分屏)

清单

要查看当前缓冲区列表,我使用:

:ls

开盘

要打开一个新文件,我使用

:e ../myFile.pl

增强的选项卡完成(在.vimrc set wildmenu )。

注意:您还可以使用:find将为您搜索一组路径,但您需要首先自定义这些路径。


交换

要在所有打开的文件之间切换,我使用

:b myfile

增强的选项卡完成(仍然set wildmenu )。

注意:: :b#选择上次访问的文件,因此您可以使用它在两个文件之间快速切换。


使用 Windows

Ctrl-W sCtrl-W v水平和垂直分割当前窗口。您还可以使用:split:vertical split:sp:vs

Ctrl-W w可在打开的窗口和Ctrl-W h (或jkl )之间切换,以浏览打开的窗口。

Ctrl-W c关闭当前窗口, Ctrl-W o关闭除当前窗口之外的所有窗口。

使用-o-O标志启动 vim 会在其自己的拆分中打开每个文件。


有了这些,我不需要 Vim 中的标签,我的手指找到我的缓冲区,而不是我的眼睛。

注意:如果您希望所有文件都转到相同的 Vim 实例,请使用--remote-silent选项启动 Vim。

:ls

用于打开缓冲区列表

  • :bp之前的缓冲区
  • :bn下一个缓冲区
  • :bnn数字)移动到第 n 个缓冲区
  • :b <filename-part> ,tab 键提供自动完成功能(真棒!!)

在某些版本的 vim 中, bnbp实际上分别是bnextbprevious 。选项卡自动完成在这种情况下很有用。

或者当您处于正常模式时,使用^切换到您正在处理的最后一个文件。

另外,您可以保存 vim 的会话

:mksession! ~/today.ses

上面的命令将当前打开的文件缓冲区和设置保存到~/today.ses 。您可以使用加载该会话

vim -S ~/today.ses

没有麻烦记住你昨天离开的地方。 ;)