“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”应该做什么?我收到了错误消息:
只能编辑一个文件。
答案 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的集合。例如,您可以有一个带有一个窗口的选项卡,另一个带有两个窗口的选项卡可以垂直分割。尝试:帮助标签页以获取更多信息。