如何在VIM中编辑多个文件?


Answers:


169

首先,在vim中,您可以输入:(冒号),然后输入help help:help以获取自助主题列表,包括一个简短的教程。在主题列表中,将光标移到感兴趣的主题上,然后按ctrl],该主题将被打开。

一个适合您开始的好地方将是主题

|usr_07.txt|  Editing more than one file

好的,继续您的回答。

用文件列表启动vim之后,您可以通过输入:next:n简称进入下一个文件。 :wnext是写当前更改,然后移至下一个文件的缩写。

还有一个类似的:previous:wprevious:Next。(请注意,它:p是的简写:print:previous:prev或的简写:N。)

要查看您在文件列表中的位置,请输入:args,当前正在编辑的文件将出现在[](括号)中。

例:

vim foo.txt bar.txt
:args

结果:

[foo.txt] bar.txt

24
:wn是:wnext的缩写。
科夫2011年

您也可以执行:rew返回第一个文件。:e#在2个文件之间交换。:n!无需写入即可转到下一个文件。另请参阅:set自动写入。
萨斯基哈,2012年

4
关于多个缓冲区 / 窗口 / 选项卡,另请参见StackOverflow的“ 如何有效地在Vim中处理多个文件”?以及使用Vim的选项卡(例如buffers)
mmoya

1
我发现第22章“查找要编辑的文件”也非常有用。它使用目录浏览器编辑所需的文件。
哈里·莫雷诺

:wn真棒。
rammayur

54

您可以在打开vim时打开另一个文件,:tabe filename并切换到您键入的其他文件:tabn或相应:tabp的下一个和上一个文件。

当您不在编辑模式下(即不在插入,替换等模式下)时,也可以使用键盘快捷键gTgt来切换选项卡。在某些系统Ctrl+ Alt+ Page UpCtrl+ Alt+ Page Down还允许标签切换,但这并不总是有效(例如,它不会在OS X终端工作“开箱即用”)。

您可以在vim应用程序的顶部看到文件名。


16
这个。还可以使用以下选项卡在选项卡中打开文件:vim -p file1 file2
不在

惊奇!尽管已经使用vim多年,但我从来没有遇到过。这改变了一切
me_and

请注意,选项卡不适用于多个文件。它们旨在用于多种布局。见文章
patryk.beza 2015年

5
撇开:如果您已经在vim中并想要添加另一个文件,则可以使用: :argadd filename,然后添加:next到它。同样,您可以:argdel filename用来删除正在编辑的文件之一。
Luv2code

36

在缓冲区之间切换的命令:

:bf            # Go to first file.
:bl            # Go to last file
:bn            # Go to next file.
:bp            # Go to previous file.
:bw            # Close file.

:help buffer 查找更多信息

要知道文件名使用Ctrl+ G:file:f


1
:bw关闭文件哈哈。不要忘记阅读该帮助的内容,:bw其中说只有在知道自己在做什么的情况下才应使用它。没什么大不了的,但是除非您要清除所有有关文件的标记和信息,否则请更好地使用:bd:q像普通人一样使用
Dylan,

1
有关更多信息:bw,以防您好奇:vi.stackexchange.com/questions/2212/…–
wisbucky

25

除了给出的答案之外,另一个选择是用以下方法拆分窗口:

:sp
:vsp

:vsp用于垂直分割。然后使用Ctrl+W <ARROW_KEYS>来移动窗格。


4
您可以:vs代替:vsp
Khaja Minhajuddin 2012年

2
甚至只是Ctrl+W, v垂直分割和Ctrl+W, s水平分割。
Ruslan 2015年

1
我已经使用CTRL+W了多年,最近我在网页中进行了大量的VI编辑。每一次,我什至都没有想过就输入命令,并且... whammmm ...浏览器选项卡消失了!我总是忘记。我真的需要学习一个新的快捷方式。
Jeach

13
:n -> Move to next file
:N -> Move to previous file

10

我在超级用户那里问了类似的问题,

“如何在使用VI打开的不同bash窗口和文件之间复制和粘贴?”

我的问题的答案是不能,但是可以使用VIM的:split命令在一个bash窗口中打开两个文件:

  1. 使用打开文件$ vim file1,使用:split file2命令在VIM中打开第二个文件。
  2. 或者,$ vim -o file1 file2从bash 使用。
  3. 文件之间切换-切换激活的文件-在与VIM ctrl- - 。w ctrlw
  4. 然后,一个示例操作是在file1中复制(或拉动)yy,开关(3),然后将p内容粘贴(或放置)到file2中。
  5. 当任一窗口处于活动状态时,其他一切正常,因此:q退出并:q!强制退出。

我的bash是黑白的,因此每个屏幕的文件名都被设置为反向的“ selected”行,并在其中引用了文件名。


6

我发现编辑多个文件最方便的方法是使用选项卡。您可以通过命令行在单独的选项卡中打开多个文件,如下所示:

vim -p file1.txt file2.txt

或者,如果您已经打开vim,则可以在新标签页中打开一个新文件,如下所示:

:tabe file2.txt

打开选项卡后,使用gt可以查看下一个选项卡和gT上一个选项卡。

您也可以使用跳到第一个选项1gt2gt,使用等跳到第二个选项卡。

您可以使用以下方式关闭标签页 :tabc

最后,您可以将当前标签页移动到n第一个位置,:ntabm其中n大于或等于任意数字0


6
argadd a/b c/d e/f

argadd ...将所有文件添加到args,还添加到:ls/,:buffers并允许您对其进行编辑。


:h arglsit:h argedit:h argsd


此外,您只能使用来对args执行某些操作:argdo ...,并且可以通过执行args重新开始:argsd*


0

有很多方法可以做到这一点。第一个(可能不太方便)是调用vim要编辑的文件-创建:

vim first_file second_file ...

它在两个缓冲区中调用两个文件。要将文件切换到另一个文件,请使用:n:N。要列出您正在编辑的文件,:args将完成此工作。:help buffer将在此方面为您提供更多帮助。


这应该可以回答您的问题。但是这里有更多信息:

通过使用vim拆分控制台屏幕,有一种以更方便的方式编辑文件的方法。为此,在使用vim时用:split:sp)或:vsplit:vs)打开两个框架。然后使用组合+ > + 在这些框架中导航。也可以使用+ +箭头或键(,,或对应于下一个帧)。完成后,使用编辑文件。将在此方面为您提供更多帮助。CtrlWCtrlWCtrlWHJKL:e file_name:help opening-window

现在,如果您想查看文件之间的差异,请使用-d参数或对相应文件调用vimdiff程序(相同)。:help diff将在此方面为您提供更多帮助。

vim -d first_file second_file ...

如果您有任何问题,请告诉我。


0

我喜欢使用水平和垂直拆分窗口来编辑多个文件。

我使用tmux更轻松地管理这些窗口

https://tmux.github.io/ “什么是终端多路复用器?它使您可以轻松地在一个终端中的多个程序之间切换,分离它们(它们在后台继续运行),然后将它们重新连接到另一个终端。还有更多。请参阅手册。”

示例:在右侧查看文件或运行测试,在左侧编辑测试和源文件: 在此处输入图片说明


0

:e #(filename) 在两个打开的文件之间切换

:p 对于以前的文件

:n 对于下一个文件


欢迎来到U&L,这几乎没有增加任何其他答案。
Archemar'1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.