note_7.2_vim编辑器进阶
末行模式:
内建的命令行接口
- 地址定界
:start_pos[,end_pos]
#:特定的第#行,例如5即第5行;
.:当前行;
$:最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行;
#,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;
例如:3,+7
.,$-1
1,$
%:全文
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
/first/,$
/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
可同编辑命令一同使用,实现编辑操作:
d y c
w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
-
查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:下一个,与命令方向相同;
N:上一个,与命令方向相反;
-
查找并替换
s:末行模式的命令;
使用格式:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用下则表达式,但可以引用;
如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换;
可把分隔符替换为其它非常用字符:
s@@@
s###
示例:
%s@\<t\([[:alpha:]]\+\)\>@T\1@g
%s@\<t[[:alpha:]]\+\>@&er@g
练习
1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
:%s@^[[:space:]]\+@@g
2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;
:%s@^[[:space:]]\+@#&@g
3、为/tmp/grub2.cfg文件的前三行的行首加上#号;
:1,+2s/.*/#&/g
4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;
:%s/\(enabled=\|gpgcheck=\)0/\11/g
vim的多文件功能:
多文件:
vim FILE1 FILE2 ...
在文件间切换:
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
退出所有文件:
:wqall 保存所有文件并退出;
:wall
:qall
多窗口:
-o:水平分割窗口
-O:垂直分割窗口
在窗口间切换:Ctrl+w, ARROW
注意:单个文件也可以分割为多个窗口进行查看:
Ctrl+w, s(splite):水平分割窗口
Ctrl+w, v(vertical):垂直分割窗口
定制vim的特性
注意:在末行模式下的设定,仅对当前vim进程有效
永久有效:
全局:/etc/vimrc
用户个人:~/.vimrc
行号
显示:set number, 简写为set nu
取消显示:set nonumber, set nonu
//括号匹配高亮 这功能已炸
匹配:set showmatch, set sm
取消:set noshowmatch,set nosm
自动缩进
启用:set ai
禁用:set noai
高亮搜索
启用:set hlsearch
禁用:set nohlsearch
语法高亮
启用:syntax on
禁用:syntax off
忽略字符大小写
启用:set ic
禁用:set noic
获取帮助:
:help
:help subject
课外作业:如何设置tab键缩进4个字符;
:set tabstop=4
:set nu 显示行号
:set nonu 取消显示行号
:set ai 自动缩进
:set noai 取消自动缩进
:set ic 忽略大小写
:set noic 区分大小写
:set sm (show match)显示对应的括号
:set nosm 不显示显示对应的括号
:syntax on 语法高亮
:syntax off 取消语法高亮
:set hlsearch 搜索高亮
:set nohlsearch 搜索高亮