centos

sys.5.1 vim编辑器

 

目录
1、文本编辑器种类
2、vim是模式化的编辑器
3、vim的基本模式
4、vim命令打开文件
5、关闭文件
6、vim模式转换
7、光标跳转(字符间、单词间、行首行尾、行间、句间、段间跳转)
8、翻屏
9、vim的编辑命令(字符编辑、替换、删除、粘贴、复制、改变、)
10、vim的可视化模式
11、撤销操作
12、恢复此前的撤销操作
13、重复执行此前的一个编辑操作
14、vim末行模式(地址定界、查找并替换)
15、vim的多文件功能(多文件操作、多窗口操作)
16、定制vim的工作特性(行号、括号高亮、自动缩进、搜索高亮、语法高亮、忽略字符大小写)

Linux自带的vim操作教程:
~]# vimtutor

1、文本编辑器种类
行编辑器:sed
全屏编辑器:nano,vi

vi : Visual  Interface
vim : VI  IMproved

2、vim是模式化的编辑器

3、vim的基本模式
编辑模式,也叫命令模式;
输入模式;
末行模式:vim内置的命令行接口;

*****************************

4、vim命令打开文件
vim [options] [file ..]

options:
+NUMBER : NUMBER表示数字,打开文件后,直接让光标处于第几行的行首;
+/PATTERN : 打开文件后,直接让光标处于第一个被 PATTERN 匹配到的行的行首;

举例说明:
+89 : 表示打开文件后,光标处在第89行的行首;
+/start : 表示在打开文件后,光标处在第一个被模式匹配到的 “start” 字符串所在行的行首;
+ : 打开文件后,光标处在最后一行的行首;

5、关闭文件
ZZ 编辑模式下保存文件并退出;
:q     退出;
:q!   不保存此前的编辑操作,强制退出;
:wq  保存并退出;
: x     保存并退出;
:w   /PATH/TO/SOMEFILE         把当前文件(包括已编辑过的内容)另存为;

6、vim模式转换
vim打开文件后,默认处在编辑模式下;

编辑模式 —> 输入模式:
i : insert , 在光标所在处输入;
a : append , 在光标所在处后方输入;
o : 在光标所在处的下方新开一行,在行首输入;
O : 在光标所在处的上方新开一行,在行首输入;
I : 在光标所在行的行首输入;
A : 在光标所在行的行尾输入;

O
I55555555i6a5555555A
o

输入模式 —> 编辑模式 <— 末行模式     敲ESC键;

编辑模式 —> 末行模式                          输入 : 冒号;

*****************************************

7、光标跳转

7.1 字符间跳转
编辑模式下:用下面4个字母键可做上下左右的单个字符的跳转;

       k
<--- h   l --->
       j

编辑模式下:数字,后面跟上面4个字母键,表示向不同方向跳转多少个字符;

7.2 单词间跳转
b : 当前或前一个单词的词首;
w : 下一个单词的词首;
e : 当前或下一个单词的词尾;

编辑模式下:数字后面跟上面的任一个字母键,表示向指定方向跳转多少个单词;

7.3 行首行尾跳转
0 : 跳转至行首;
$ : 跳转至行尾;
^ : 跳转至行首的第一个非空白字符;

7.4 行间跳转
#G : 跳转至#行;
1G,gg : 跳转至第一行;
G : 跳转至最后一行;

7.5 句间跳转
) 跳转至下一句;
( 跳转至上一句;

上面字符前面加数字,表示向上、下跳转多少句;

7.6 段间跳转
} 跳转至下一段;
{ 跳转至上一段;

上面字符前面加数字,表示向上、下跳转多少段;

8、翻屏
ctrl+f : 向文件尾部翻一屏;
ctrl+b : 向文件首部翻一屏;

ctrl+d : 向文件尾部翻半屏;
ctrl+u : 向文件首部翻半屏;

Enter : 按行为单位向后翻;

9、vim的编辑命令

9.1 字符编辑
x : 删除光标所在处的字符;
#x : 删除光标所在处开始,向后的#个字符;

xp : 交换光标所在处的字符与其后面字符的位置;

9.2 替换命令
r : 替换光标所在处的字符;

rCHAR
输入完 r 后,后面 输入需要替换成的某个字符;

9.3 删除命令
d : 删除命令,可结合光标跳转字符,实现范围删除;删除的内容保存在缓冲区中;

d$ : 删除光标所在处至行尾的内容;
d^ : 删除光标所在处至行首的内容(行首指的是,行首的第一个非空白字符);

dw : 删除光标所在处至下一个单词词首之间内容;
db : 删除光标所处位置前面的内容,范围可至当前单词的词首,或者前面一个单词;
de : 删除光标所在处至词尾的内容,或者下一个单词;包括光标处的字符;
上面3个命令,前面可加数字,删除指定范围;

dd : 删除光标所在处的行;
#dd : 删除光标所在处的行起始的共#行;

9.4 粘贴命令
p : 小写字母p , 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,粘贴至当前光标所在处的后面;
P : 大写字母P , 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,粘贴至当前光标所在处的前面;

9.5 复制命令
y : 复制命令,工作行为类似删除的d命令;

y$ :
y^ :
y0 :

yw :
yb :
ye :

上面3个命令,前面可加数字,表示复制指定范围的内容;

yy : 复制一整行;
#yy : 复制光标所在行起始的#行;

9.6 改变命令
工作机制:先做指定范围内的删除操作,然后由编辑模式转换为输入模式;

c$ : 先删除光标所在处至行尾的内容,然后进入输入模式;
c^ : 先删除光标所在处至行首(行首的第一个非空白字符)的内容,然后进入输入模式;
c0 : 先删除光标所在处至行首的内容,然后进入输入模式;

cw : 先删除光标所在处至下一个词首之间的内容,然后进入输入模式;
cb :
ce :

上面3个命令,其前面可加数字,表示先删除指定范围的内容,然后进入输入模式;

cc : 删除光标所在的行,并转换为输入模式;
#cc : 删除光标所在行起始的#行内容,并转换为输入模式;

10、vim的可视化模式
v : 按字符为单位进行选定;
V : 按行为单位进行选定;

可视化模式通常结合编辑命令来使用: d , c , y, p;

11、撤销操作
u : 撤销此前的操作;
#u : 撤销此前的#个操作;

12、恢复此前的撤销操作
组合键:ctrl+r

13、重复执行此前的一个编辑操作
单点号: .

===========================

14、vim末行模式

14.1 地址定界
:start_port[,end_port]

:#    特定的第#行,例如,:5 表示第五行;
:.     表示当前行;
:$    表示最后一行;
:#,#    指定范围,左侧的#为起始行,右侧的#为结束行;例如,:5,10 表示第5行至第10行;
:#,+#    指定范围,左侧的#为起始行的绝对编号,右侧的+#为相对左侧行号的偏移量;例如,3,+5 表示第3行至第8行;
:.,$-1    表示光标所处位置的当前行至倒数第二行;
:1,$    表示全文;
:%     表示全文;
:/pattern/     从光标所在处为起始行,向文件尾部查找,第一次被模式匹配到的行;
:/pattern1/,/pattern2/     从光标所在处为起始行向文件尾部查找,由第一次被模式1匹配到的行至第一次被模式2匹配到行之间的内容;

以上末行模式命令可跟编辑命令一同使用,实现编辑操作:d,y,c;
w   /PATH/TO/SOMEFILE     将范围内的文本保存至指定的文件中;
r   /PATH/FROM/SOMEFILE      将指定文件中的文本读取并插入至指定位置;

14.2 查找并替换
:s     末行模式的命令;

使用格式:
s/要查找的内容/替换为的内容/修饰符

格式中内容说明:
要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但可以引用;
如果”要查找的内容”,内容部分在模式中使用分组符号,在”替换为的内容”中可使用后向引用;
直接引用查找模式匹配到的全部文本,后面引用时,需使用’&’符号;
修饰符:
i : 忽略大小写;
g : 全局替换,一行中如果匹配到多次,则均替换;默认替换行中第一次匹配到的内容;

可把分隔符’/’用其他非常用字符代替,此时,匹配模式中如果有’/’出现,也无需转义:
:s@@@
:s###

理解如下:

:1,15s/this/This/    在第1行至第15行内查找,每行第1次匹配到字符串 'this',替换为 'This';

:%s/this/This/       全文查找,每行第1次匹配到字符串'this',替换为'This';
:%s/this/This/g      全文查找,匹配字符串'this',全部替换为'This'; 

:%s/this/THIS/       全文查找,查找每行第1次匹配到字符串'this',不区分大小写,替换为'THIS'; 注意,字符串'This'不会被配到;
:%s/this/THIS/ig     全文查找,查找匹配到字符串'this',不区分大小写,替换为'THIS';

:%s/\<t\([[:alpha:]]\+\)\>/T\1/g    全文查找,匹配模式为:以't'开头的任意单词,小写字母't'全部替换为大写的'T';
:%@\<t\([[:alpha:]]\+\)\>@T\1@g

:%s/\/cgroup\/systemd/\/etc\/sysconfig/g     全文查找,查找匹配到'/cgroup/systemd',全部替换为'/etc/sysconfig'; 说明,匹配内容与替换内容中的路径分隔符'/'要转义;
:%s@/cgroup/systemd@/etc/sysconfig@g         意义同上,但匹配内容与替换内容中的路径分隔符'/'不需要转义;

:%s@\<t\([[:alpha:]]\+\)\>@tor\1@g           全文查找,所有以't'开头的单词,替换为,在't'后面加字符串'or';
:%s@\<t[[:alpha:]]\+\>@&or\1@g               全文查找,所有以't'开头的单词,替换为,在此单词后面加字符串'or';

:%s@^#@@g                                    全文查找,所有行首以'#'开头的字符,替换为无,即删除行首的'#';

复制 /etc/grub2.cfg 文件至 /tmp 目录中,用查找替换命令删除 /tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
:%s@^[[:space:]]\+\([[:alnum:]]*\)@\1@g
:%s@^[[:space:]]\+@@g

复制 /etc/rc.d/init.d/functions 文件至 /tmp 目录中,用查找替换命令,在 /tmp/functions 文件的每个以空白字符开头的行的行首加上 # 号; 
:%s@^[[:space:]]\+[[:alnum:]]*@#&@g
:%s@^[[:space:]]@#&@g
:%s@^[[:space:]]\+[[:space:]]@#&@g     注意,此句与前2句的区别;

将 /etc/yum.repos.d/CentOS-Base.repo   文件中所有的 enabled=0 替换为 enabled=1,所有的 gpgkey=0 替换为 gpgkey=1;
:%s@\(enabled\|gpgkey\)=0@\1=1@g       注意,分组里面的表示或者意义的'|'要转义;

15、vim的多文件功能

15.1 多文件操作
vim FILE1 FILE2 FILE3 …

默认显示第一个文件:FILE1; 如要切换文件,则在末行模式下运行如下命令:
:next     打开下一个文件;
:prev     打开上一个文件;
:fist       打开第一个文件;
:last      打开最后一个文件;

退出所有文件:
:wqall     保存所有文件并退出;
:wall       保存所有文件;
:qall        退出所有文件;

15.2 多窗口操作
-o :     水平分隔窗口;
-O :    垂直分隔窗口;

vim   -o   FILE1   FILE2   FILE3   …
切换文件操作:
ctrl+w,松开组合键后,按左、右箭头;

vim   -O   FILE1    FILE2   FILE3   …
切换文件操作:
ctrl+w,松开组合键后,按上、下箭头;

水平分隔窗口与垂直分隔窗口中,也可对某个文件再次进行水平分隔或垂直分隔:
按组合键ctrl+w,松开后,按 s 键(水平分隔),按 v 键(垂直分隔);

也可打开单个文件后进行水平分隔:
按组合键ctrl+w,松开后,按 s 键;

也可打开单个文件后进行垂直分隔:
按组合键ctrl+w,松开后,按 v 键;

16、定制vim的工作特性
在末行模式下的设定,仅对当前vim进程有效;

如果要用久有效,则需把命令写入配置文件:
全局配置文件:/etc/vimrc
用户个人配置文件:~/.vimrc 如果此文件不存在,可手动创建,在文件中写入命令即可,比如如果要显示行号,文件中添加命令 set nu 即可;

16.1 显示与取消行号
:set  number     显示行号;
:set  nu               简写格式;

:set  nonumber       取消显示行号;
:set  nonu

16.2 括号匹配高亮显示
centos 7 版本,vim的此功能默认强制开启;

:set  showmatch     匹配括号高亮显示; 默认就是此模式;
:set  sm

:set  noshowmatch    取消匹配括号高亮显示;
:set  nosm

16.3 自动缩进
vim默认未开启此功能;

:set  ai         开启自动缩进功能;
:set  noai    取消自动缩进功能;

16.4 搜索到的内容高亮显示
默认开启此功能;

:set  hlsearch        搜索的内容高亮显示;
:set  nohlsearch   搜索的内容取消高亮显示;

16.5 语法高亮
默认开启此功能;

:syntax   on     启用语法高亮显示;
:syntax   off     取消语法高亮显示;

16.6 忽略字符大小写
:set   ic          启用忽略字符大小写;
:set   noic      取消忽略字符大小写;

==================

末行模式下获取vim的使用帮助:
:help
:help     subject

比如:
:help    set
:help    hlsearch

Leave a Reply

Your email address will not be published. Required fields are marked *