Vim 的命令模式

使用 Vim 编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

Vim 的输入模式

在输入模式下,Vim 可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容。

使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。

快捷键

功能描述

i

在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动

I

在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令

o

在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本

O

在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

a

在当前光标所在位置之后插入随后输入的文本

A

在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令

下图即为 Vim 处于输入模式状态下的示意图。

linux直接修改BIOS Linux直接修改文件内容命令_Linux

Vim 的编辑模式

编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

下图为 Vim 进入编辑模式后的状态。

linux直接修改BIOS Linux直接修改文件内容命令_命令模式_02

对于新手来说,经常不知道自己处于什么模式。不论是自己忘了,还是不小心切换了模式,都可以按一次 Esc 键返回命令模式。如果你多按几次 Esc 键后听到"嘀————"的声音,则代表你已经处于命令模式了。

Vim 打开文件

使用 Vim 打开文件很简单,例如在命令行模式下打开一个自己编写的文件 /test/vi.test,打开方法如下:

[root@itxdl ~]# vim /test/vi.test

刚打开文件时 Vim 处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等,此时可以使用插入命令进入输入模式对文件进行编辑。

除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,可以大大提高我们的效率。

Vi 使用的选项

说 明

vim filename

打开或新建一个文件,并将光标置于第一行的首部

vim -r filename

恢复上次 vim 打开时崩溃的文件

vim -R filename

把指定的文件以只读方式放入 Vim 编辑器中

vim + filename

打开文件,并将光标置于最后一行的首部

vi +n filename

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

vi +/pattern filename

打幵文件,并将光标置于第一个与 pattern 匹配的位置

vi -c command filename

在对文件进行编辑前,先执行指定的命令

Vim 编辑文件

同样,Vim 提供了大量的编辑快捷键,主要可分为以下几类。

Vim 插入文本

从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a 等键来完成,使用不同的键,光标所处的位置不同,如表 3 所示。

快捷键

功能描述

i

在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动

I

在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令

o

在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本

O

在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

a

在当前光标所在位置之后插入随后输入的文本

A

在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令

Vim 查找文本

快捷键

功能描述

/abc

从光标所在位置向前查找字符串 abc

/^abc

查找以 abc 为行首的行

/abc$

查找以 abc 为行尾的行

?abc

从光标所在为主向后查找字符串 abc

n

向同一方向重复上次的查找指令

N

向相反方向重复上次的查找指定

例如,在 /etc/passwd.vi 文件中查找字符串 "root",则运行命令如图所示。

linux直接修改BIOS Linux直接修改文件内容命令_Linux_03

如果在文件中并没有找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示,如图所示。

linux直接修改BIOS Linux直接修改文件内容命令_字符串_04

在查找过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会得到不同的结果。

如果想忽略大小写,则输入命令 :set ic;调整回来输入:set noic

如果在字符串中出现特殊符号,则需要加上转义字符 ""。常见的特殊符号有 \、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10$"。

Vim 删除文本

快捷键

功能描述

x

删除光标所在位置的字符

dd

删除光标所在行

ndd

删除当前行(包括此行)后 n 行文本

dG

删除光标所在行一直到文件末尾的所有内容

D

删除光标位置到行尾的内容

:a1,a2d

函数从 a1 行到 a2 行的文本内容

注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。

Vim 复制和粘贴文本

快捷键

功能描述

p

将剪贴板中的内容粘贴到光标后

P(大写)

将剪贴板中的内容粘贴到光标前

y

复制已选中的文本到剪贴板

yy

将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行

yw

将光标位置的单词复制到剪贴板

Vim 其他常用快捷键

某些情况下,可能需要把两行进行连接。比如说,下面的文件中有两行文本,现在需要将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 "J" 键,按下前后如图所示。

linux直接修改BIOS Linux直接修改文件内容命令_字符串_05

注意光标得在要合并的上面那一行

如果不小心误删除了文件内容,则可以通过 "u" 键来撤销刚才执行的命令。如果要撤销刚才的多次操作,可以多按几次 "u" 键。

Vim 保存退出文本

Vim 的保存和退出是在编辑模式中进行的,其常用命令如下表所示。

命令

功能描述

:wq

保存并退出 Vim 编辑器

:wq!

保存并强制退出 Vim 编辑器

:q

不保存就退出 Vim 编辑器

:q!

不保存,且强制退出 Vim 编辑器

:w

保存但是不退出 Vim 编辑器

:w!

强制保存文本

:w filename

另存到 filename 文件

x!

保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令

ZZ

直接退出 Vim 编辑器

需要注意的是,w! 和 `wq!1 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly,如图 所示),但如果你是文件的所有者或者 root 用户,就可以强制执行。

linux直接修改BIOS Linux直接修改文件内容命令_bc_06

参考

http://c.biancheng.net/linux_tutorial/40/