一、简介
1.vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。
2.Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
3.Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是ViIMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。
二、文本编辑器的种类
1.行编辑器:所谓行编辑器是指一行一行来编辑处理的工具,如sed。
2.全屏编辑器:编辑空间占据整个屏幕,如nano,vi。
三、vim的使用
1.打开文件
2.语法:vim [OPTION]... [FILE]...
3.vim有以下几种打开方式:
①vim +#(后接数字):打开文件后,直接让光标处于第#行的行首;例如:vim +3 /etc/passed;
②vim +/PATTERN(正则表达式):打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;例如:vim +/^U /etc/fstab;
③vim + file:直接打开file,光标在最后一行;例如:vim + /etc/fstab;
④vim -b file:二进制方式打开文件;例如:vim -b /bin/cat;
⑤vim -d file1 file2...:比较多个文件
⑥vim -m file:只读方式打开文件;例如:vim -m /etc/fstab;
4.如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它;
四、vim是一个模式编辑器
1.vim三种主要模式:
命令模式(默认):移动光标,剪切/粘贴文本;
插入模式(编辑):修改文本;
扩展命令模式:保存,退出等;
2.Esc键:可以从插入模式转换到命令模式
五、模式转换
1.从命令模式----->插入模式,可使用以下命令:
i:在当前光标所在处前面输入;
I:在当前光标所在行的行首输入;
a:在当前光标所在处后面输入;
A:在当前光标所在行的行尾输入;
o:在当前光标所在行的下方打开一个新行;
O:在当前光标所在行的上方打开一个新行;
2.从插入模式----->命令模式:Esc键;
3.命令模式----->扩展模式:直接输入冒号(:)即可在窗口左下方显示冒号;
4.从扩展模式---->命令模式:Esc键;
5.锁定和解锁:ctrl+s,ctrl+q;
六、退出文件
1.扩展模式:
:q 退出;
:q! 不保存退出;
:wq 保存退出;
:x 保存退出;
:wq! 强制保存退出;
2.命令模式
ZZ:保存退出;
ZQ:不保存退出;
七、扩展模式
1.按冒号(:)进入扩展模式:
r filename:读文件内容到当前文件中;例如 :r /etc/issue;
w filename:将当前文件内容写入另一个文件;例如:w /testdir/f1;
!command:执行命令;例如:!ls;
r!command:读入命令的输出;例如:r!ls /root;
八、命令模式光标跳转
1.字符间跳转:
h:左
l:右
K:上
j:下
#command:跳转由#指定的个数的字符;例如:#h,#k;
2.单词间跳转:
w:下一个单词的词首;
e:当前单词或下一个单词的词尾;
b:当前单词或前一个单词词首;
#command:由#指定一次跳转的单词数;例如:3w,3e;
3.当前页跳转:
H:页首;
M:页中间行;
L:页底;
4.行首行尾跳转:
^:跳转至行首的第一个非空白字符;
0:跳转至行首;
$:跳转至行尾;
5.行间移动:
#G:直接跳转至第#行;
G:最后一行;
1G,gg:第一行;
6.句子间移动:
):下一句;
(:上一句;
7.段落间移动:
}:下一段;
{:上一段;
九、命令模式翻屏操作
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏;
ctrl+u:向文件首部翻半屏;
十、命令模式操作
1.字符编辑:
x:删除光标处字符;
#x:删除光标处起始的#个字符;
xp:交换光标所在处的字符及其后面字符的位置;
~:转换大小写;
2.替换命令:
r:替换光标所在处字符;
R:切换成REPLACE模式;
3.删除命令:
d:删除命令,可结合光标跳转字符,实现范围删除;
d$:删除到行尾;
d^:删除到非空行首;
d0:删除到行首;
dw:删除到下一个单词的词首;
de:删除到当前单词或下一单词的词尾;
db:删除到当前单词或前一单词的词首;
#command:删除多个单词;
dd:删除光标所在的行;
#dd:多行删除;
D:从当前光标位置一直删除到行尾,留空行,等同于d$;
4.复制命令:
y:复制,可结合光标跳转字符,实现范围复制;
y$:复制到行尾;
y0:复制到行首;
y^:复制到非空行首;
ye:复制到当前单词或下一单词的词尾;
yw:复制到下一个单词的词首;
yb:复制到当前单词或前一单词的词首;
#command:复制多个单词;
yy:复制行;
#yy:复制多行;
Y:复制整行;
5.粘贴命令:
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面;
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面;
6.改变命令:
c:修改,可结合光标跳转字符,实现范围修改;所谓修改就是先删除,再转换为插入模式;
c$:删除到行尾;
c^:删除到非空行首;
c0:删除到行首;
cb:删除到当前单词或前一单词的词首;
ce:删除到当前单词或下一单词的词尾;
cw:删除到下一个单词的词首;
#command:删除多个单词
cc:删除当前行并输入新内容;
#cc:删除多行
C:删除当前光标到行尾,并切换成插入模式
7.100iwu [Esc]:含义是粘贴“wu”100次;
8.语法:<start position> <command> <end position>
Command:
y:复制
d:删除
gU:变大写
gu:变小写
例如:0y$命令含义是:
0:跳到行首
y:从这里开始复制
$:复制到本行最后一个字符
十一、扩展模式
1.地址定界
:start_pos,end_pos
#:具体第#行,例如2表示第2行;
#,#:从左侧#表示行起始,到右侧#表示行结尾;
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数;例如:2,+3表示2到5行;
.:当前行;
$:最后一行;
.,$-1:当前行到倒数第二行;
%:全文,相当于1,$;
/pat1/,/pat2/:从第一次被pat1模式匹配到的行开始,一直到第一次被 pat2匹配到的行结束;
#,/pat/:
/pat/,$:
使用方式:后跟一个编辑命令:
d:删除
y:复制
w file:将范围内的行另存至指定文件中;
r file: 在指定位置插入指定文件中的所有内容;
2.查找:
/PATTERN:从当前光标所在处向文件尾部查找;
?PATTERN:从当前光标所在处向文件首部查找;
n:与命令同方向;
N:与命令反方向;
3.查找并替换:
s:在扩展模式下完成查找替换操作;
格式:s/要查找的内容/替换为的内容/修饰符;
要查找的内容:可使用模式;
替换为的内容:不能使用模式,但可以使用\1, \2, ... 等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容;
修饰符:;
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现;
gc:全局替换,每次替换前询问;
注:查找替换中的分隔符/可替换为其它字符,例如:
s@/etc@/var@g;
s#/boot#/#i;
十二、命令模式
1.撤销更改:
u:撤销最近的更改;
#u:撤销之前多次更改;
U:撤消光标落在这行后所有此行的更改;
ctrl+r:重做最后的“撤消”更改 ;
.:重复前一个操作;
n.:重复前一个操作n次;
十三、vim的寄存器
1.有26个命名寄存器和1个无命名寄存器,常存放不同的 剪贴版内容,可以不同会话间共享。
2.用a,b,…,z表示,用“寄存器表示,放在数字和命令之间;
如:3"tyy 表示复制3行到t寄存器中 ;
"tp 表示将t寄存器内容粘贴;
3.未指定,将使用无命名寄存器;
4.有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享。
十四、vim编辑二进制文件
步骤:
1.以二进制方式打开文件:
vim -b binaryfile
2.扩展命令模式下,利用xxd命令转换为可读的十六进制:
:%!xxd
3.编辑二进制文件;
4.扩展命令模式下,利用xxd命令转换回二进制:
:%!xxd –r
5.保存退出;
十五、可视化模式
1.允许选择的文本块:
v:面向字符;
V:面向行;
ctrl+v:面向块;
2.可视化键可用于与移动键结合使用:
w, ) , } ,箭头等;
3.突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等;
十六、多文件模式
1.格式:vim file1 file2 file3 ...
:next 下一个文件;
:prev 前一个文件;
:first 第一个文件;
:last 最后一个文件;
:wall 保存所有;
:qwall 退出所有;
:wqall 保存所有文件并退出;
十七、使用多个窗口
1.多文件分割:
格式:vim -o|-O FILE1 FILE2 ...
-o:水平分割;
-O:竖直分割;
在窗口间切换:ctrl+w,arrow(上下左右方向键)
2.单文件窗口分割:
ctrl+w,s: split,水平分割;
ctrl+w,v: vertical,垂直分割;
ctrl+w,q:取消相邻窗口;
ctrl+w,o:取消全部窗口;
:wqall 退出;
十八、定制vim的工作特性
1.配置文件:
全局:/etc/vimrc
个人:~/.vimrc
2.扩展模式:只对当前vim进程有效:
(1)行号
显示:set nu;
取消显示:set nonu;
(2)括号成对匹配
匹配:set sm;
取消:set nosm;
(3)自动缩进
启用:set ai;
禁用:set noai;
(4)高亮搜索
启用:set hlsearch;
禁用:set nohlsearch;
(5)语法高亮
启用:syntax on;
禁用:syntax off;
(6)忽略字符大小写
启用:set ic;
禁用:ser noic;
(7)文件格式
启用Windows格式:set fileformat=dos;
启用Unix格式:set fileformat=unix;
(8)设置文本宽度
:set textwidth=65
:set wrapmargin=15
3.vim内置帮助
(1):help
(2)Use :q to exit help
4.vimtutor(使用手册)
本文转自wzcLINUXER 51CTO博客,原文链接:http://blog.51cto.com/yacheng0316/1967865,如需转载请自行联系原作者