访问VIM中的多个文件

时间:2009-04-19 02:44:34

标签: vim file

“Unix in a Nutshell”一书讨论了如何访问第572-573页上的多个文件。似乎有非常有用的命令,例如“:e”,“:e#”,“:e new_file”,“:n files”,“:args”,“:prev”和“:n!”。这些命令使我感到困惑:

  

“:n编辑文件列表中的下一个文件。”

     

“:args显示要编辑的文件列表。”

     

“:prev编辑文件列表中的上一个文件。”

当我做“:args”时,我看不到真正的清单。角落里只有一个小文字。我想看看我用“:e”访问的所有文件,即缓冲区中的文件列表。

当我执行命令“:n files”时,我在哪里可以看到列表?什么命令“:prev”和“:n”应该做什么?我收到了错误消息:

  

只能编辑一个文件。

5 个答案:

答案 0 :(得分:17)

我没有看过这本书,但我会尝试解释vim如何处理文件。

Vim有缓冲区。用以下内容打开每个文件:

:e name_of_the_file.txt(在缓冲区中加载文件,即“打开文件”)

你也可以:

:e *.txt

执行此操作时的有用选项是

:set laststatus=2(始终显示状态栏)

:set wildmenu(轻松打开文件)

如果你有带netrw插件的标准vim,你可以:

:e .(对于vim的文件管理员之一,可以这么说)

管理缓冲区:

:ls将为您提供当前打开的缓冲区(文件)列表

:bnext:bprevious(或:bn:bp)可让您循环浏览缓冲区

:bd关闭缓冲区/文件(缓冲区完成)

其他缓冲区类型用于其他目的(yanking / pasting,temporary,vim的内部,等等)

答案 1 :(得分:9)

除了Jonathan Leffler所说的,如果你没有用命令行中的多个文件调用Vim,你可以在Vim打开后设置Vim的参数列表:

:args *.c

请注意,参数列表与您从:ls获得的打开缓冲区列表不同。即使您关闭Vim中的所有打开缓冲区,参数列表也保持不变。 :n:prev可能会在Vim中打开一个全新的缓冲区(如果该文件的缓冲区尚未打开),或者可能会将您带到现有缓冲区。

类似地,您可以在Vim中打开多个缓冲区而不会影响参数列表(或者即使arg列表为空)。 :e打开一个新缓冲区,但不一定会影响参数列表。打开缓冲区列表和参数列表是独立的。如果要遍历打开的缓冲区列表而不是遍历参数列表,请使用:bn:bp以及朋友。

答案 2 :(得分:5)

要使这些命令有意义,请执行以下操作:

vim *.c
例如,在有20个C文件的目录中的

。对于单个文件,没有下一个或上一个或重要的文件列表。

答案 3 :(得分:5)

:n:p:ar:rew:last命令行参数列表。

E.g。

> touch aaa.txt bbb.txt ccc.txt
> gvim *.txt

vim在aaa.txt中打开

:ar gives a status line

[aaa.txt] bbb.txt ccc.txt

:n moves to bbb.txt

:ar gives the status line

aaa.txt [bbb.txt] ccc.txt

:rew rewinds us back to the start of the command line arg list to aaa.txt

:last sends us to ccc.txt

:e ddd.txt edits a new file ddd.txt

:ar gives the status line

aaa.txt bbb.txt [ccc.txt]

因此命令集仅在初始命令行参数列表上运行。

答案 4 :(得分:3)

为了澄清,Vim有参数列表,缓冲区列表,窗口和标签页。参数列表是你用vim调用的文件列表(例如vim file1 file2); :n和:p命令可以使用它。缓冲区列表是您正在编辑的文件的内存中副本列表,就像emacs一样。请注意,start(在参数列表中)加载的所有文件也都在缓冲区列表中。尝试:help buffer-list获取有关这两者的更多信息。

Windows是缓冲区的视口。将windows视为“办公桌”,您可以在其上放置缓冲区。 Windows可以为空或显示也可以在其他窗口中显示的缓冲区,您可以使用它们同时查看同一缓冲区的两个不同区域。尝试:帮助窗口获取更多信息。

标签是Windows的集合。例如,您可以有一个带有一个窗口的选项卡,另一个带有两个窗口的选项卡可以垂直分割。尝试:帮助标签页以获取更多信息。