一、介绍
vi 和 vim 是 Linux 下的一个文本编辑工具。
vim 编辑器中设置了三种模式:普通模式、编辑模式和末行模式,每种模式又分别支持多种不同的命令快捷键,要想高效率地操作文本,就必须先搞清这三种模式模式的切换方法和各个模式的操作用法。
普通模式: 主要是控制光标移动,可对文本进行复制、粘贴、删除等工作。使用 vim 编辑一个文件时,一进入该文件就是普通模式了。
编辑模式: 主要进行文本内容编辑和修改。想要编辑文件就必须从普通模式进入编辑模式,只需按(i、a、o、I、A、O)其中一个键即可,当然不同的键有不同效果,后面会介绍到。当进入编辑模式时,会在屏幕的最下一行会出现 "INSERT" 标记。编辑模式回到普通模式只需要按键盘左上方的 ESC 键即可。
末行模式: 主要用于保存或退出文本,当然还有搜索、替换等一些操作。在普通模式下,输入 ":" 即可进入命令模式。
二、普通模式
1、命令光标跳转和翻页
命令 | 作用 |
---|---|
]] 或者 G | 光标跳转至末端 |
[[ 或者 gg | 光标跳转至顶端 |
Ngg | 光标跳转至当前文件内的第N行 |
$ | 光标跳转至当前光标所在行的尾部 |
^ 或者 0 | 光标跳转至当前光标所在行的首部 |
ctrl+f | 往下翻页 |
ctrl+b | 往上翻页 |
2、文件内容操作
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在整行 |
5dd | 删除(剪切)光标处开始的5行 |
dG | 删除当前光标所在行及以后的所有行 |
D | 删除当前光标及光标以后的内容 |
x | 删除当前光标标记往后的字符 |
X | 删除当前光标标记往前的字符 |
yy | 复制光标所在整行 |
5yy | 复制光标处开始的5行 |
p | 将之前删除和复制的内容粘贴到光标下一行 |
P | 将之前删除和复制的内容粘贴到光标上一行 |
u | 撤销上一步操作 |
r | 替换当前光标标记的单个字符 |
R | 进入REPLACE模式,连续替换,ESC结束 |
三、输入模式
进入输入模式的方式:
命令 | 作用 |
---|---|
i | 进入编辑模式,光标不做任何操作 |
a | 进入编辑模式,光标后移一位 |
o | 进入编辑模式,在当前光标下面创建一个空行 |
I | 进入编辑模式,并且光标会跳转至本行的首部 |
A | 进入编辑模式,并且光标会跳转至本行的尾部 |
O | 进入编辑模式,在当前光标上面创建一个空行 |
四、末行模式
1、文件保存和退出
命令 | 作用 |
---|---|
:w | 保存 |
:w! | 强制保存 |
:q | 退出 |
:q! | 强制退出 |
:wq 和 :wq! | 保存退出 和 强制保存退出 |
:X | 先保存,再退出 |
ZZ | 保存并退出 |
2、文件内容替换
命令 | 作用 |
---|---|
:s/one/two | 将当前光标所在行的第一个one替换成two |
:s/one/two/g | 将当前光标所在行的所有的one替换成two |
:1,5s/one/two/g | 将1-5行的所有one替换成two |
:%s/one/two/g | 将整个文本中所有的one替换成two |
:%s/one/two/gc | 将整个文本中所有的one替换成two,并提示是否需要替换 |
3、set设置选项
命令 | 作用 |
---|---|
:set nu | 显示行号 |
:set ic | 忽略大小写 |
:set ai | 自动缩进,对每行按与上行同样的标准进行缩进 |
:set list | 显示制表符(空行、tab) |
:set nohlsearch | 取消高亮,本次内容编辑取消高亮,再搜索不会高亮显示,下次编辑无效。只取消本次搜索关键字高亮使用 :nohlsearch,可使用简写 :noh |
:set no[ nu , ic , ai , list ] | 取消设定 |
4、文件内容另存和读入
命令 | 作用 |
---|---|
:w /root/test.txt | 将所有内容另存为/root/test.txt文件中 |
:r /root/test.txt | 读入/root/test.txt文件内容到当前光标下行 |
:5r /root/test.txt | 读入/root/test.txt文件内容到当前文件第5行下面 |
5、文件内容查找
命令 | 作用 |
---|---|
/string | 在文本中从上至下搜索该字符串 |
?string | 在文本中从下至上搜索该字符串 |
n | 按搜索到的内容依次往下查找 |
N | 按搜索到的内容依次往上查找 |
:number | 跳转到对应行号 |
四、扩展
1、可视模式
命令 | 作用 |
---|---|
v | 进入可视模式,可进行字符选择,再v取消 |
Ctrl+v | 可视块模式 1.插入:按shift+i进入编辑模式,输入需要插入的字符,结束按ESC键。 2.删除:选中内容后,按x或者d键删除。 3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容。 |
Shift+v | 进入可视行模式;y键复制,d键删除 |
2、使set设定永久生效
[root@cp ~]# vim ~/.vimrc
set nu
注意:~/vimrc 个人环境变量优先级高于/etc/vimrc 全局环境变量
如果个人vim环境没有配置,则使用全局vim环境变量配置。
如果个人vim环境和全局环境变量产生冲突,优先使用个人vim环境变量。
3、同时编辑多个文件
[root@cp ~]# vim -o test1.txt test2.txt # 水平分割
[root@cp ~]# vim -O test1.txt test2.txt # 垂直分割
# ctrl+ww文件间切换
4、文件对比,差异部分高亮显示
[root@cp ~]# vimdiff test1.txt test2.txt
456 | 456
aaa | bbb
~ | ~
~ | ~
5、vim非正常退出处理方法
假设打开test1.txt文件,vim被非正常关闭,需要删除同文件名的.swap文件即可解决。
[root@cp ~]# rm -rfv .test1.txt.swp
removed ‘.test1.txt.swp’