这里包含在 shell 下执行 vim,以及 vim 中关于文件操作的内容。

打开一个文件 file 进行编辑等操作

$vi file

打开文件,并将光标置于第 n 行首

$vi +n filename

这里输入得都是 shell 下进行得,是 shell 命令,打开之后光标在屏幕中间,而屏幕中间的行就是第 n 行。

打开文件,并将光标置于第一个与 pattern 匹配的串处

$vi +/pattern filename

这里输入得都是 shell 下进行得,是 shell 命令。

在上次正用 vi 编辑时发生系统崩溃,恢复 filename

$vi -r filename

以只读方式打开文件

$vi -R file

$view file

这里输入得都是 shell 下进行得,是 shell 命令。其中 viewunix 得命令,有的 linux 有。

vi 下临时切换到 shell 执行 shell 命令

输入: !command

注意:这里 command 是命令名字(例如 ls ).

查看当前编辑的文件和行号

输入 <C-g>

或输入 :args ,查看当前编辑缓冲文件状态(文件名).

显示当前光标所在行的行号

输入 :nu .

这里只是在底部“状态栏”的位置显示一下当前光标所在的行号以及行。

保存

输入 :w

若输入 :w file (效果和另存为文件 file 一样).

载入(创建)一个新文件( file

输入 :e file

或输入 :n file

或输入 :hide e filename

这里,类似于新建文件或者新打开一个文件,当前文件的窗口将会被待编辑的文件所占用,如果当前文件没有保存会提示的。实质上是隐藏当前文件到 buffer 缓存,打开另一个文件进行编辑,具体见缓存部分。

在新窗口载入(创建)一个文件( file )

输入 :vnew file

或输入 :vsplit file

或输入 :split file

这将新开一个垂直的分割窗口,并在新开的窗口中载入相应的文件( :split file 是水平窗口)。

将当前文件以及改动保存到另外文件中

输入 :w FILENAME .

这里, FILENAME 是另外的文件名,执行之后仍然停留在当前文件中,只是目录中多了一个 FILENAME 文件(即另存为).

只保存文章的某个部分到另外文件

输入: #,# w TEST

这里的 #,# 就是要求您记住的行号范围(最小行号,最大行号),而 TEST 就是选定的文件名。

向当前光标中插入另外的文件的内容

输入: r FILENAME .

这里, FILENAME 是要插入的文件名, r 前面可以指定一个行号,表示把内容插在这个行号后面。

buffer 缓冲内操作文件相关

列出当前打开的文件,以及编号

输入 =:buffers = .

或输入 :ls .

假设我们打开一个文件,之后用 n 来切换到另外一个文件中,或者用 tabnew 打开新文件,那么原来的文件以及现在的文件都会在 buffers 中,并且 yy 等命令复制的原来的文件的内容还能用。列表前面的前缀 % 表示当前文件, # 表示可以用 [Ctrl]^ 等切换的可用 buffer ,其他的可以查看 :help ls 或者 :help buffers .

切换成第 N 个缓冲

输入 N ctrl^ .

或输入 :buffer N .

这里,注意第一种方法不用输入 : ,两个 buffer 文件之间也可用 yy , pp .

新开一个窗口,载入第 N 个缓冲区的文件

输入 :sbuffer N .

窗口默认是水平的。

切换到下一个文件

输入 :bn .

切换到上一个文件

输入 :bp .

关闭当前文件

输入 :bw .

这样会关闭当前文件进入下一个 buffer 的文件,并且当前文件也会从 buffer 列表中删除。

跳至下一个文件

输入 :n .

当然这里打开文件的方法应该是 $vi file1 file2 file3 才行。如果用 vi file1 之后用 :n file2 这样不行。

回到刚才编辑的文件

输入 :e# .

或输入 [Ctrl]^

例如运行了 vi a b c ,当前编辑文件为 a:n 跳至 b ,再 :n 跳至 c , :e# 回到 b ,想回到 a 的话用 :ea

退出

输入 :q

保存退出

输入 :wq .

或者输入 :x .

或输入 ZZ .

强制退出

输入 :q! (可能未保存)。

退出所有

输入 :qa .

这里如果打开多个窗口或者文件的时候,使用这个命令可以实现一次性退出。

查看当前编辑缓冲文件状态(文件名)

输入 :args