众多 Linux 发行版系统,一般都已经默认安装好了 vi 或 Vim 文本编辑器,Centos 也不例外,该系统就默认安装有 vi 文本编辑器,但建议你们使用 Vim。
html
若是在命令行模式下输入“vim”,输出结果为“Command not found”,则表示此系统中未安装 Vim。程序员
CentOS 系统中,使用以下命令便可安装 Vim:vim
yum install vimssh
须要注意的是,此命令运行时,有时须要手动确认 [y/n],如图 1 所示:编辑器
图 1 安装过程ide
遇到此状况,选择 “y” 便可。
若是你想省略手动输入“y”的过程,但愿全自动安装,可使用以下这条命令:
函数
yum -y install vimspa
当命令行中输入“Vim”显示如图 1 所示的画面时,视为 Vim 安装成功。.net
图 1 Vim 安装成功界面命令行
Vim的命令模式
使用 Vim 编辑文件时,默认处于命令模式。此模式下,可以使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还能够对文件内容进行复制、粘贴、替换、删除等操做。
图 2 所示是在 CentOS 6.x 系统中 Vim 处于命令模式的状态示意图。
图 2 Vim 处于命令状态
Vim的输入模式
在输入模式下,Vim 能够对文件执行写操做,相似于在 Windows 系统的文档中输入内容。
使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键便可返回命令模式。
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,至关于光标移动到行首执行 i 命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置以后插入随后输入的文本 |
A | 在光标所在行的行尾插入随后输入的文本,至关于光标移动到行尾再执行a命令 |
图 4 所示即为 Vim 处于输入模式状态下的示意图。
图 4 Vim 处于输入模式
编辑模式用于对文件中的指定内容执行保存、查找或替换等操做。
使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就能够输入相关指令进行操做了。
指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 便可。
图 4 所示为 Vim 进入编辑模式后的状态。
图 4 Vim 进行编辑模式
使用 Vim 打开文件很简单,例如在命令行模式下打开一个本身编写的文件 /test/vi.test,打开方法以下:
[root@itxdl ~]# vim /test/vi.test
刚打开文件时 Vim 处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等,此时可使用插入命令进入输入模式对文件进行编辑,如图 1 所示。
图 1 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 提供了大量的编辑快捷键,主要可分为如下几类。
从命令模式进入输入模式进行编辑,能够按下 I、i、O、o、A、a 等键来完成,使用不一样的键,光标所处的位置不一样,如表 3 所示。
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,至关于光标移动到行首执行 i 命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O(大写) | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置以后插入随后输入的文本 |
A | 在光标所在行的行尾插入随后输入的文本,至关于光标移动到行尾再执行 a 命令 |
快捷键 | 功能描述 |
---|---|
/abc | 从光标所在位置向前查找字符串 abc |
/^abc | 查找以 abc 为行首的行 |
/abc$ | 查找以 abc 为行尾的行 |
?abc | 从光标所在为主向后查找字符串 abc |
n | 向同一方向重复上次的查找指令 |
N | 向相反方向重复上次的查找指定 |
例如,在 /etc/passwd.vi 文件中查找字符串 "root",则运行命令如图 5 所示。
图 5 使用 Vim 进行查找
若是在文件中并无找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示,如图 6 所示。
图 6 未查找到指定字符串的提示
在查找过程当中须要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会获得不一样的结果。
若是想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。
若是在字符串中出现特殊符号,则须要加上转义字符 "\"。常见的特殊符号有 \、*、?、$ 等。若是出现这些字符,例如,要查找字符串 "10$",则须要在命令模式中输入 "/10\$"。
快捷键 | 功能描述 |
---|---|
r | 替换光标所在位置的字符 |
R | 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”能够结束 |
:s/a1/a2/g | 将当前光标所在行中的全部 a1 用 a2 替换 |
:n1,n2s/a1/a2/g | 将文件中 n1 到 n2 行中全部 a1 都用 a2 替换 |
:g/a1/a2/g | 将文件中全部的 a1 都用 a2 替换 |
例如,要将某文件中全部的 "root" 替换为 "liudehua",则有两种输入命令,分别为:
:1, $s/root/liudehua/g
或
:%s/root/liudehua/g
上述命令是在编辑模式下操做的,表示的是从第一行到最后一行,即全文查找 "root",而后替换成 "liudehua"。
若是刚才的命令变成 :10,20 s/root/liudehua/g
,则只替换从第 10 行到第 20 行的 "root"。
快捷键 | 功能描述 |
---|---|
x | 删除光标所在位置的字符 |
dd | 删除光标所在行 |
ndd | 删除当前行(包括此行)后 n 行文本 |
dG | 删除光标所在行一直到文件末尾的全部内容 |
D | 删除光标位置到行尾的内容 |
:a1,a2d | 函数从 a1 行到 a2 行的文本内容 |
注意,被删除的内容并无真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就能够将刚才删除的内容又粘贴到此处。
快捷键 | 功能描述 |
---|---|
p | 将剪贴板中的内容粘贴到光标后 |
P(大写) | 将剪贴板中的内容粘贴到光标前 |
y | 复制已选中的文本到剪贴板 |
yy | 将光标所在行复制到剪贴板,此命令前能够加数字 n,可复制多行 |
yw | 将光标位置的单词复制到剪贴板 |
某些状况下,可能须要把两行进行链接。好比说,下面的文件中有两行文本,如今须要将其合并成一行(实际上就是将两行间的换行符去掉)。能够直接在命令模式中按下 "J" 键,按下先后如图 10 所示。
图 10 按下 "J" 键先后
若是不当心误删除了文件内容,则能够经过 "u" 键来撤销刚才执行的命令。若是要撤销刚才的屡次操做,能够多按几回 "u" 键。
Vim 的保存和退出是在编辑模式中进行的,其经常使用命令以下表所示。
命令 | 功能描述 |
---|---|
:wq | 保存并退出 Vim 编辑器 |
:wq! | 保存并强制退出 Vim 编辑器 |
:q | 不保存就退出 Vim 编辑器 |
:q! | 不保存,且强制退出 Vim 编辑器 |
:w | 保存可是不退出 Vim 编辑器 |
:w! | 强制保存文本 |
:w filename | 另存到 filename 文件 |
x! | 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令 |
ZZ | 直接退出 Vim 编辑器 |
须要注意的是,"w!" 和 "wq!" 等相似的指令,一般用于对文件没有写权限的时候(显示 readonly,如图 12 所示),但若是你是文件的全部者或者 root 用户,就能够强制执行。
图 12 只读文件
Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率过低,更高效的方式使用快捷键。
Vim 移动光标经常使用的快捷键及其功能以下面各表所示,须要注意的是,表中全部的快捷键都在命令模式(默认状态)下直接使用。
快捷键 | 功能描述 |
---|---|
h | 光标向左移动一位 |
j | 光标向下移动一行(以回车为换行符),也就是光标向下移动 |
k | 光标向上移动一行(也就是向上移动) |
l | 光标向右移动一位 |
最初使用,你们可能以为比较别扭,但熟能生巧,使用此方式移动光标一样可以提升编辑速度。
某些情形下,可能须要光标迅速移动至一行中的某个位置,将光标以单词为单位进行移动就会很方便。
快捷键 | 功能描述 |
---|---|
w 或 W | 光标移动至下一个单词的单词首 |
b 或 B | 光标移动至上一个单词的单词首 |
e 或 E | 光标移动至下一个单词的单词尾 |
nw 或 nW | n 为数字,表示光标向右移动 n 个单词 |
nb 或 nB | n 为数字,表示光标向左移动 n 个单词 |
快捷键 | 功能描述 |
---|---|
0 或 ^ | 光标移动至当前行的行首 |
$ | 光标移动至当前行的行尾 |
n$ | 光标移动至当前行只有 n 行的行尾,n为数字 |
一行中,若是须要将光标移动到当前行的某个特色字符,则可使用表 4 中的快捷键。
快捷键 | 功能描述 |
---|---|
fx | 光标移动至当前行中下一个 x 字符处 |
Fx | 光标移动至当前行中下一个 x 字符处 |
快捷键 | 功能描述 |
---|---|
gg | 光标移动到文件开头 |
G | 光标移动至文件末尾 |
nG | 光标移动到第 n 行,n 为数字 |
:n | 编辑模式下使用的快捷键,能够将光标快速定义到指定行的行首 |
程序员在编辑程序时,常常会为将光标移动到与一个 "(" 匹配的 ")" (对于 [] 和 {} 也是同样的)处而感到头疼。Vim 里面提供了一个很是方便地査找匹配括号的命令,这就是 "%"。
好比,在 /etc/init.d/sshd 脚本文件中(最好仍是复制后练习,当心驶得万年船),想迅速地将光标定位到与第 49 行的 "{" 相对应的 "}" 处,则能够将光标先定位在 "{" 处,而后再使用 "%" 命令,使之定位在 "}" 处,如图 6 所示。
图 6 使用"%"命令定位括号
Vim多窗口模式
Vim中的多窗口打开
vim中,默认的多窗口打开,是横向分割窗口。
进入vim编辑器之后,能够经过new命令,新建一个子窗口
:new “新建一个未命名窗口
:new name "新建一个名为name的文件
进入vim之后,也能够经过splite来进行横向窗口分割
:split name "在当前位置打开name文件 将原来文件向下移动
:sp name "是splite的缩写 与split功能相同
进入vim后,也能够经过vsplit进行窗口纵向分割
:vsplit name "在当前位置打开name文件 将原来文件向右移动
:vs name "是vsplite的缩写 与vsplit功能相同
2. Vim中的多窗口切换
vim中的多窗口切换能够经过Ctrl+w组合键加上方向选择键来实现
横向分割的窗口能够经过Ctrl+w+j/k或者Ctrl+w+(UP)/(DOWN)来实现上下窗口间切换
纵向分割的窗口能够经过Ctrl+w+h/l或者Ctrl+w+(LEFT)/(RIGHT)来实现上下窗口间切换
连续两次按下Ctrl+w也组合键能够实现多个窗口间的依次切换
3. Vim中多窗口的调整
窗口的调整能够分为绝对值调整和增量式调整
绝对值调整以下:
:resize num "将窗口的高度调整为num行
:res num "resize的缩写模式 与resize实现一样的功能
:vertical resize num "将窗口的宽度调整为num列
:verticalres num "verticalresize的缩写模式 与verticalresize实现一样的功能
增量式调整以下:
:resize+num "将窗口的高度增长num行
:resize-num "将窗口的高度减小num行
:vertical resize+num "将窗口的宽度增长num列
:vertical resize-num "将窗口的宽度减小num列
将resize简写为res能实现一样的功能。
4.Vim中多窗口的关闭
vim中多窗口的关闭与单个窗口的关闭基本类似
:q "退出当前所在的窗口
:qa "退出全部的窗口