本节内容非常繁琐且枯燥,想熟练使用Vim来编辑文本,需要进行大量的练习。
1、Vim简介
Vim是一个功能强大的全屏幕文本编辑器,是Linux系统上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。
Vim没有菜单选项,只有命令。
2、Vim工作模式说明
Vim有三种模式:命令模式、插入模式、编辑模式。
模式之间的关系如下图所示:
2.1、命令模式
使用命令 vim/vi + 文件名进入命令模式,执行命令:
vim /tmp/song/wangsulong/youdiantian
进入文件编辑界面,如下图所示:
2.1.1、定位命令
- gg 定位到第一行;
- G 定位到最后一行;
- :n 定位到第n行(n是数字);
- $ 定位到当前行的行尾;
- 0 定位到当前行的行首;
2.1.2、删除命令
- x 删除光标所在处的字符;
- nx 删除光标所在处后n个字符;
- dd 删除光标所在行;
- ndd 删除光标后n行(1dd表示删除光标所在行);
- dG 删除光标所在行到文件末尾的内容;
- D 删除光标所在处到行尾内容;
2.1.3、复制、剪切、粘贴命令
- yy 复制当前行;
- nyy 复制当前行及以下总共n行;
- dd 剪切当前行;
- ndd 剪切当前行及以下总共n行;
- p 粘贴在光标所在行的下方;
- P 粘贴在光标所在行的上方;
2.1.4、替换、取消命令
- r 替换光标所在处字符;
- R 从光标所在处开始替换字符,按Esc结束;
- u 取消上一不操作;
2.1.5、 搜索命令
(1)搜索指定字符串
在文件中搜索ke字符串,输入 /ke后回车,如下图所示:
按n键可以切换到搜索到的下一个字符串位置。
(2)搜索指定字符串,忽略字符串大小写
第一步输入命令后回车:
:set ic
第二步输入/ke,回车搜索。结果如下图所示:
(3)搜索指定字符串,不忽略字符串大小写
第一步:输入:set noic,回车;
第二步:输入/ke,回车;(表示搜索ke字符串)
2.1.6、替换命令
(1)全文范围内,不询问直接替换字符串
命令格式: :%s/旧的字符串/新的字符串/g
例如:将文件中的guo全部替换成guo1。如下图所示:
替换结果,如下图所示:
按n,可以切换替换的每一项。
(2)全文范围内,替换字符串时询问
命令格式: :%s/旧的字符串/新的字符串/g
例如:将文件中的guo全部替换成guo1。如下图所示:
回车后会提示是否替换的字样,如下图所示:
(3)指定范围内,不询问直接替换字符串
命令格式:
:n1,n2s/旧的字符串/新的字符串/g
举例说明:
:1,6/guo/guo1/g,表示将第一行到第六行中guo替换成guo1。
(4)指定范围内,替换字符串时候询问
命令格式:
:n1,n2s/旧的字符串/新的字符串/c
2.2、插入模式
在命令模式下输入插入命令即进入插入模式。
按ESC键即可退出插入模式,重新回到命令模式。
2.2.1、命令说明
- a:在光标所在字符后插入;
- A:在光标所在行尾插入;
- i:在光标所在字符前插入;
- I:在光标所在行行首插入;
- o:在光标下插入新行;
- O:在光标上插入新行;
例如,进入命令模式后,将光标放到第二行的行首。如下图所示:
此时输入大写的A命令,查看光标以及其他变化。如下图所示:
大写A命令表示在光标所在行尾插入,然后可以在后面编辑要写入的内容。
2.3、编辑模式
在命令模式下按:,即可进入编辑模式。例如:保存、退出、增加行号显示等;
2.3.1、显示行号
输入执行命令:
:set nu
回车后,显示结果如下图所示:
2.3.2、取消显示行号
:set nonu
2.3.3、保存退出命令
如果文件没有修改的话,可以执行:q退出,如果文件已经被修改过了,使用此命令,会提示“已修改但尚未保存(可用!强制执行)”,如下图所示:
- :q 不保存退出;
- :q! 强制执行,不保存并退出;
- :w 保存修改内容;
- :w newfilename 另存为指定文件;
- :wq 保存修改内容并退出;
- :wq! 强制执行,保存修改内容并退出;
- ZZ 保存修改内容并退出;
注意:只有文件所有者以及root可以使用带!的命令,否则会报错。