一、vim编辑器简介
vim是从vi发展出来的一个文本编辑器,由于在代码编译错误跳转方面的强大功能被广大linux系统管理员所喜爱。Vim强大的功能给管理员编写shell脚本带来了极大的方便。Vim主要工作在三种模式下:编辑模式输入模式末行模式,三种模式之间通过命令转换。
二、vim的使用
1.模式之间的转换:
编辑模式---> 输入模式
i:实现在当前光标所在处字符前转换为输入模式
a:实现在当前光标所在处字符后转换为输入模式
o:实现当前光标所在行下方新建一个空白行转换为输入模式
I:实现当前光标所在行行首转换为输入模式
A:实现当前光标所在行行尾转换为输入模式
O:实现但反潜光标所在行上方新建一个空白行转换为输入模式
输入模式--> 编辑模式 ESC键
编辑模式--> 末行模式键入:
末行模式--> 编辑模式 ESC键 ESC键
2.光标退跳转:
编辑模式:
(1)字符间跳转:
使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM,这样就不用频繁的在箭头键和字母键之间移来移去了,这会节省很多的时间。
h:左l:右j:上k:下
在此还可以用数字+跳转键实现字符间,行间快速跳转
(2)单词间跳转:(同样支持数字键+跳转键)
w:后一个单词词首
e:后一个单词词尾
b:前一个单词词首
(3)句子间跳转:
):下一个句子
(:上一个句子
(4)段落间跳转:
}:下一个段落
{:上一个段落
(5)行间跳转:
1G,gg:跳转至第一行
G:跳转至最后一行
#G:跳转至某一行,#代表任意数字
3.关闭文件:(末行模式下)
q:退出
w:将编辑的数据写入硬盘文件中
!:强制
wq:强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
q!:强制退出
x:写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
编辑模式:
zz:保存退出。
4.打开文件:
Vim [options]/path/to/file
Vim +#/path/to/file打开以后光标处在第几行
打开多个文件:
多个文件之间的跳转:
next:下一个
last:最后一个
first:第一个
prev:前一个
-o:打开的多个文件水平分割
-O:打开的文件垂直分割
5.编辑文本:
编辑模式:
(1)删除操作:
x:删除单个字符
#x:删除右边#个字符
d:删除命令
命令组合:
dw、de、db
d^:删除当前光标所在处到行首
d$:删除当前光标所在处到行尾
dd:删除光标所在行
#dd:删除光标所在行及向下#行
末行模式:
注:,:末行模式地址定界:起始地址,结束地址
%:全文
.:当前光标所在行
命令组合:
n,md:删除第n行到第m行
%d:删除全文
1,$d:删除第一行到最后一行
1,$-#d:删除第一行到倒数第#行(保留最后#行)
.,+#d:删除当前行及其后#行
(2)撤销操作:
末行模式:
u:撤销上一次编辑操作(可逐一撤销此前的操作:默认50次)
ctrl+r:撤销此前的撤销操作
(3)复制
命令:y
yy:复制光标所在行
#yy:复制光标所在的向下#行
y1G:复制光标所在行到第一行的所有数据
yG:复制光标所在行到最后一行的所有数据
y0,y^:复制光标所在的那个字符到该行行首的所有数据
y$:复制光标所在的那个字符到该行行尾的所有数据
(4)粘贴:
命令p,P
P(小写):将复制的数据在光标下一行粘贴
P(大写):将复制的数据在光标上一行粘贴
(5)翻屏:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
(6)文本搜索:
注:key:搜索的关键字
/key:向文件尾部搜索
?key:向文件首部搜索
N:前一个
n:下一个
(7)c编辑:删除一些字符并转入输入模式
cc:删除一数据装入输入模式
#cc:删除#行数据转入输入模式
命令组合:
c^,c$,结合光标跳转字符
6.vim可视化模式(编辑模式下)
V:选中光标划过的行
v:选中光标划过的字符
注:可与数字键组合和光标跳转键组合
7.同一文件的分屏
Ctrl+w,s:水平分割
Ctrl+w,s:垂直分割
Ctrl+w+箭头键,屏幕间跳转
8.窗口属性定义:
末行模式
(1)显示行号:set nu set nonu:撤销
(2)自动缩进:set ai 、setnoai
(3)不区分大小写: set ic、 set noic
(4)匹配显示括号(默认开启):set sm 、set nosm
(5)语法着色(默认开启):syntax on ,syntax off
9.查找替换:末行模式
语法: :地址定界s/查找模式(支持pattern)/替换成的内容/gi
globalignorecase
例如:替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
#%s/\(.*id:\)3\(:initdefault:\)/\15\2:
注:pattern(模式)用正则表达式书写:正则表达式在此不做介绍。