概述
vim是由vi发展演变过来的文本编辑器,因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,由于其功能相比vi来说更加强大,所以在实际工作中的使用更加广泛。
vim工作模式
Vim具有多种工作模式,常用的工作模式有:普通模式、插入模式、命令模式。其中,普通模式可以实现基本的光标移动与大量的快捷键操作,插入模式可实现文本的基本编辑功能,命令模式通过输入特定的指令实现特定的功能,如保存与退出等。
直接输入vim命令,即可开启该文本编辑器,默认将创建一个 新的文档(保存时需要指定文件名)。另外,如果vim命令后跟了文件名参数,则需要看该文件是否存在,如果存在,vim将打开该文件,如果不存在,vim将创建该文件。
vim编辑器默认会进入普通模式,插入模式可以通过以下按键进入。如下表1。
按键 | 功能描述 |
---|---|
a | 进入插入模式,后续输入的内容将插入至当前光标的后面 |
A | 进入插入模式,后续输入的内容将插入至当前段落的段尾 |
i | 进入插入模式,后续输入的内容将插入至当前光标的前面 |
I | 进入插入模式,后续输入的内容将插入至当前段落的段首 |
o | 进入插入模式并在当前行的后面创建新的空白行 |
O | 进入插入模式并在当前行的前面创建新的空白行 |
当需要退回到普通模式或不知道自己当前处于什么模式时,可以通过Esc键返回到普通模式。最后,在普通模式下输入":", 即可进入命令模式;在":"后输入指令,即可实现特定的功能。
在插入模式中,可以使用以下按键,如下表2:
按键 | 功能描述 |
---|---|
各字符按键以及Shift组合 | 输入各种字符 |
ENTER | 换行 |
BACK SPACE | 删除光标前一个字符 |
DEL | 删除光标后一个字符 |
方向键 | 在文本中移动光标 |
HOME/END | 移动光标到行首/行尾 |
Page Up/Page Down | 上/下翻页 |
Insert | 切换光标为输入/替换模式 |
Vim光标操作
vim中最简单的移动光标的方式是使用方向键(. 上、下、左、右)操作,但这种方式的效率太低,更高效的方式是使用快捷键,常用的快捷键如下表所示,所有的快捷键均在普通模式下直接使用。快捷键的使用需要在日常中多加使用记忆,不然很容易就忘记了。如下表3。
快捷键 | 功能描述 |
---|---|
h | 光标向左移动一位,多行可以添加数字在前面 |
j | 光标向下移动一行(以回车为换行符),多行可以添加数字在前面 |
k | 光标向上移动-一行,多行可以添加数字在前面 |
l | 光标向右移动一位,多行可以添加数字在前面 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
gg | 移动光标至文件首行 |
G | 移动光标至文件末尾 |
nG | 移动光标至第n行(n为数字,如n为10时表示第10行) |
^ | 光标移至当前行的首字符 |
$ | 光标移至当前行的尾字符 |
fx | 光标移至当前行的下一个x字符处(相当于查找并跳转至x字符) |
Fx | 光标移至当前行的上一个x字符处 |
w | 光标向右移动- -个单词 |
nw | 光标向右移动n个单词(n 为数字) |
b | 光标向左移动一个单词 |
nb | 光标向左移动n个单词(n 为数字) |
vim编辑文档
在vim编辑器中编辑文档内容主要有两种常用的方式:进入编辑模式操作和快捷键操作。进入编辑模式的方法已经在表1中有详细的描述,进入编辑模式后,即可以通过移动光标进行增加、删除、修改的基本操作,这种方法也是最简单的方式。另外,快捷键操作方式是在普通模式下输入相应的快捷键实现对应的功能,快捷键功能描述如下表4。
快捷键 | 功能描述 |
---|---|
x | 删除光标当前字符 |
dd | 删除一行 |
ndd | 删除n行(n为数字) |
d$ | 删除光标至行尾的内容 |
J | 删除当前行的换行符,可以将两行合并为一行 |
u | 撤销上一步操作,可以多次使用uu表示撤销两步操作 |
ctrl + r | 重做上一次撤销的操作,相当于恢复。也可以多次使用进行多次恢复。 |
rx | 将光标当前字符替换为x (x 为任何键盘单个输入) |
yy | 复制当前行 |
p | 粘贴至当前行之后 |
P | 粘贴至当前行之前(注意大小写) |
vim查找与替换
当文档很长时,我们可以通过查找快速定位要找的内容,在vim中通过"/"关键字实现自上往下的查找功能,如,/password在当前文档的光标处向下查找password并显示,如果一个文档中有多个password, 可以通过快捷键n跳转至下一个匹配的关键词处,快捷键N将跳转至上一个匹配的关键词处。另外,"?"关键词实现了自下往上的查找功能,如,?password 从当前文档的光标处向上查找password并显示,此时快捷键n表示向上查看匹配,N表示向下查看匹配。
vim提供了非常好用的替换功能,可以快速完成大量的替换工作。
bash
[root@VM-4-6-centos ~]# cp /etc/passwd /tmp/
[root@VM-4-6-centos ~]# vim /tmp/passwd
通过上面两条命令复制一份临时测试文档并编辑,我们可以对该文件实现多种替换功能,如下表5所示(在普通模式下,输入冒号":"进入命令模式完成替换命令)。
指令 | 功能描述 |
---|---|
:s/root/admin/ |
将光标当前行中第-一个出现的root替换为admin,没有则不替换 |
:s/root/admin/g |
将光标当前行中所有的root替换为admin |
:2,4s/sbin/bin/g |
将第二行至第四行之间的所有sbin替换为bin |
:%s/nologin/login/g |
将所有行的nologin都替换为login |
vim的保存与退出
一般情况下,我们会通过命令模式输入特定的指令实现保存与退出功能,常用指令详见下表6。
指令 | 功能描述 |
---|---|
:q! | 不保存并强制退出 |
:wq | 保存并退出 |
:x | 保存并退出 |
:w | 保存 |
:w a.txt | 另存为a.txt,如果直接vim不指定打开文件,保存的时候就需要指定文件名 |
另一种保存方式为快捷键操作,在普通模式下输入ZZ,即可实现保存并退出文档。注意是大写的ZZ |
更多使用技巧
显示行号
显示当前行是第几行的方式有很多,可以通过为文档添加行号来实现,添加行号的方法是在命令模式下输入:set number或简写:set nu即可。
忽略大小写.
在vim中查找时,你可能不清楚所要找的关键词的大小写,而vim默认是区分大小写的,
这时可以通过在命令模式下输入:set ignorecase,实现忽略大小写。
多窗口编辑
当需要同时编辑多个文档时,分割窗口就尤为重要了,**可以通过:split(水平分割)或者:vsplit(垂直分割)**来实现窗口的分割。如此可以实现编辑同一个文档的不同行或者不同文件,至于窗口的切换,可以使用如下快捷方式:
Ctrl+w+h快捷键表示跳转至左边一个窗口, Ctrl+w+l 快捷键表示跳转至右边一个窗口;
Ctrl+w+j快捷键表示跳转至下面一个窗口,Ctrl+w+k 快捷键表示跳转至上面一一个窗口。
在命令模式下输入:q(:close),两个命令可以关闭当前窗口。
在命令模式下输入:split second.txt,此命令会水平分割窗口并打开新的文件,如此实现多窗口多文件的编辑工作。默认的:split 为水平分割窗口,垂直分割可以使用:vsplit指令。
执行Shell命令
使用vim编辑文档的过程中,如需要执行一条Shell命令而不想退出Vim编辑器,可以通过:!{命令}的方式实现。例如,需要查看当服务器的IP地址时,则在命令模式下输入指令:!ip a
即可,执行完成后按回车键返回vim编辑器。
自动补齐
如果需要输入的内容在前面的行中已经出现过,那么vim可以根据上文内容自动补齐输入。例如,在文件某行需要之前的某个单词,以后需要再次输入单词的前一个或者几个首字母,然后使用快捷键Ctrl+N,通过上下键选择自己需要的即可实现自动补齐功能。
注意:此时选中的是helloa。编辑器下方也会通过数字来显示当前的选择项。
块删除
某些情况下,我们需要删除多行的某一部分,操作如下:
- 按下组合键"ctrl+v" 进入"块选择"模式,通过上下左右键选取块操作的行和列,注意是以进入块选择模式前光标所在的位置为基点。
- 按下d (或者x键)即可删除被选中的整块,后面还可以通过p进行粘贴使用。
块插入
主要针对同时对多行添加相同的内容。操作如下:
- 按下组合键"ctrl+v" 进入"块选择"模式,选取上下键选取需要插入内容的行,注意也是以进入块选择模式前光标所在的位置为基点选择行。
- 按下shift+i(或者大写的字母"i")
- 输入要插入的内容
- 按ESC,之后就会看到插入的效果。
更多vim的使用方法请自行探索。
更多关于Linux的知识请前往博客主页查看,编写过程中可能由于能力有限难免出现问题,敬请指出,谢谢。