这里包含在 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
命令。其中 view
是 unix
得命令,有的 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
。