Tank0317

vim学习笔记(二):多文件编辑

06 May 2017

打开另一个文件

当我们编辑完一个文件后,希望打开另一个文件。此时,不需要离开vim,就可以打开另一个文件,可以使用如下命令:

:edit filename

此时如果没有保存当前文档,vim会提醒

E37: No write since last change (use ! to override)

这时我们可以使用:write命令保存文档,也可以使用:edit! filename忽略更改直接打开新文件。

打开多个文件

如果我们需要同时编辑多个文件,可以使用如下命令在启动vim时同时打开多个文件:

vim one.c two.c three.c

然后可以使用:next命令跳转到下一个文件进行编辑。同样的,如果你没有保存更改,会收到vim的error提示。此时你可以使用:wnext保存更改后跳转或者使用:next!忽略更改后跳转。

如果你想要查看你同时打开的文件列表,以及你现在正在编辑的文件名称。可以使用

:args

此时vim会在下方输出如下信息:

one.c [two.c] three.c

其中方括号中的文件就是你此时正在编辑的文件。

类似于:next命令,你可以使用

:previous

命令在文件列表中向前跳转。同样的,还有:wprevious命令和:previous!命令。

如果你不满足于只能在前后文件之间跳转,可以使用:2next或者:2previous一次向后或者向前跳2个文件(2这个数字可以随意改动),另外,还可以使用:first命令直接跳转到第一个文件,或者使用:last直接跳转到最后一个文件。不过这里需要注意的是,没有:first!或者:last!命令。

还有一点是,我们可以重新定义文件列表,如下

:args five.c six.c seven.h

或者也可以使用通配符,如

:args *.txt

当你同时打开了多个文件,vim会认为你对所有的文件都要进行修改。所以如果你没有对某些文件做任何操作(根本就没有跳转到某些文件),此时vim会提示

E173: 46 more files to edit

此时,你可以再次执行退出操作既可。

小技巧

想要快速的在两个文件之间跳转,可以使用CTRL-^
比如你同时打开了三个文件,

:args one.txt two.txt three.txt

然后使用:next跳转到第二个文件,此时你所在的文件是two.txt。然后使用CTRL-^可以跳转到one.txt,再次使用CTRL-^,会跳转到two.txt,再次使用CTRL-^,又会跳转到one.txt。不过需要注意的是,如果此时使用:next命令,会跳转到three.txt。也就是说,虽然我们可以使用CTRL-^在两个文件之间来回跳转,但是对于vim来说,并没有改变你在文件列表中的位置。这点需要稍微注意下,但无关大雅,知道就行。