vim编辑器
回顾: 正则表达式(BRE,ERE)BRE: 字符匹配:. [] [^] 分组:\(\) \1,\2 次数匹配:* \? \+ \{m,n\} 位置锚定:^ $ \《 \> \b ERE: 字符匹配:. [] [^] 分组:() \1,\2 次数匹配:* ? + {m,n} //前字符 位置锚定:^ $ \《 \> \b 或者: |grep,egrep,fgrepwc,cut,sort,uniq,diff,patch wc 字,词行统计 cut 列切割 sort 排序 uniq 去除重复 diff 比较,制作补丁 patch 打补丁
目录
1.vim简介2.模式转换3.关闭文件:4.编辑模式光标调整5.翻屏操作6.编辑命令7.可视化模式8.撤销操作;undo9.重复执行前一个编辑操作10.vimturo教程11.vim末行模式12.编辑命令13.查找和替换14.vim的多文件模式15.定制vim的工作特性16.帮助
1.vim简介
文本编辑器:
文本:纯文本,ASCII text;Unicode字符集//全球统一编码
文本编辑器种类:
行编辑器
sed,
全屏编辑器:
nano ,vim ,vi
vi:visual interface
vim: VI Improved
模式化的编辑器
获取帮助信息:
:help
:help usr1_01.txt //获取帮助信息
2.模式转换
基本模式:
编辑模式:命令模式 //默认模式
编辑模式-->输入模式
i:insert,在光标所在处输入
a:append,在光标后方输入
o:在光标所在处下方打开一个新行
I:在光标所在行的行首输入
A:在光标所在行的行尾插入
O:上一行插入
输入模式--->编辑模式:ESC
输入模式:
末行模式:
编辑模式-->末行模式 :
1,10d //删除1-10行
vim +3 /etc/passwd //光标定位到第三行
vim +/PATTERN //打开文件后,直接让光标定位到第一个被PATTERN匹配到的行的行首
vim + file //定位到最后一行
3.关闭文件:
ZZ 保存文件 //编辑模式退出
:q 退出 //末行模式退出
:q! //强制退出,不保存
:wq //保存然后退出
:x //保存并退出
:w /PATH/TO/SOMEFILE //保存到其他文件
:w >> /PATH/TO/SOMEFILE //追加到其他文件
4.编辑模式光标调整
字符间调整
h,j,k,l //左,下,上,右 ,四个键刚好紧挨着
#COMMAND 跳转由#指定的个数的字符
10l //向右10个字符 小写的L
10h //向左
5k //向上几行
6j //向下几行
单词间调整
w:下一个单词的词首
e:当前或后一个单词的词尾
b:当前或前一个单词的词首
#COMMAND 跳转由#指定的个数的单词
行首行尾调整
^:跳转至行首的第一个非空白字符
0:跳转至绝对行首
$:跳转至行尾
行间调整
#G 跳转至#指定的行
1G,gg 第一行
G:最后一行
句间调整 //小括号
(
)
段间调整 //花括号
{
}
5.翻屏操作
//翻吧{一瓶},赌半屏
ctrl+f 向文件尾部翻一屏
ctrl+b 向文件首部翻一屏
ctrl+ d/u //向文件尾部/首部翻半屏
enter:按行向后翻
6.编辑命令
//编辑模式
字符编辑
x:删除光标所在处的字符
#x:删除光标所在处起始的#个字符
xp:交换光标所在处的字符与及其后面的字符位置
替换命令
r替换字符:替换光标所在处的字符
2r:光标所在处的两个字符都替换为输入的字符
删除命令
d:删除,可结合光标跳转字符,实现范围删除;
d$ :光标所在处到行尾
d^:光标所在处到行首
dw:删除当前单词
de:
db:
#d[w|e|b|...] //都可以结合数字使用
dd:删除一整行
3dd :向下删除3行
//删除的最后的东西,会被保存到缓冲区
粘贴命令
(p,put,paste)
P:小写:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下行
如果不是整行,站在当前光标的后面
p:大写:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上行
如果不是整行,站在当前光标的前面
复制命令
复制命令(yank,y)
y复制,类似于d命令
y^,y$,y0
ye,yw,yb
#COMMAND
yy:复制一行
改变命令:(change,C)//和d命令的使用一样
编辑模式-->输入命令,实现删除操作
cc :清空所在行,转为输入模式
cw:清空光标所在单词,转为输入模式
cb,ce,cw
#COMMAND //删除多个
7.可视化模式
v :类似于鼠标托选,字符选定
V大写:选中所在行,整行
结合编辑命令使用:d,c,y
8.撤销操作;undo
u;一步一步撤销
#u:撤销此前的#次操作
ctrl+r //redo
9.重复执行前一个编辑操作
. 重复执行上一个命令
vim自带的练习教程
10.vimturo教程
11.vim末行模式
地址定界
:start_pos[,end_pos]
#:特定的第#行,例如5即第5行
#,# //指定行范围
#,+# //指定行范围,第#行开始向后几行
. ,+# //当前行,往后几行
$ //最后一行
.,$-1 //当前行到倒数最后一行
1,$ //全文
% //全文
/pattern/: 从光标所在处向文件尾部,第一次被指定模式匹配到的行
/first/,$
/pat1/,/pat2/:从光标所在处起始,由第一次pat1匹配到的行,至第一次pat2匹配到的行结束
12.编辑命令
可同编辑命令一起使用,实现编辑操作:
d:删除
y:复制
c:修改
w /PATH/TO/SOMEFILE //将范围内容,保存至指定位置
5r /etc/passwd /从第几行之后读入某文件的内容
13.查找和替换
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有
s :末行模式的命令
s/要查找的内容/替换为/修饰符
要查找的内容可以使用正则表达式:
替换为的内容:不能使用正则表达式,但可以引用
如果“要查找的内容”,部分在模式中使用了分组符号;可以使用引用
直接引用查找模式匹配到的文本;&
修饰符:
i:查找时忽略大小写
g:全局替换,意味着一行中如果匹配到多次,则均替换
路径需要替换
/etc/sysconfig
\/etc\/sysconfig
分隔符:
/ /
@ @
# #
:%s@\《t\(.*\)\>@T\1@g
//小写t开头的替换为大写T
:%s#\《t\(.*\)#T\1#g
//注意,小括号得用转义符
:%s@\《t\([[:alpha:]]\+\)@T\1er@g
//开头变成大写,后面加上er
:%s@\《t\([[:alpha:]]\+\)@T&er@g
//使用&引用匹配到的所有文本
:%s@^[[:space:]]\+@@
//删除行首空白
14.vim的多文件模式
vim file1 file2 ...
last,next,prev,first
wqall :保存所有文件并退出
wall:保存所有文件
qall:退出所有
多窗口:
-o :水平分割
ctrl + 向上箭头|向下箭头 //切换文件
-O :垂直分割
ctrl + w 向左箭头|向右箭头 //切换文件
单文件多窗口分割查看:
ctrl+w s/v //水平和垂直分割,split,vertical
15.定制vim的工作特性
注意:在末行模式下的设定,仅对当前vim进程有效
永久有效:
全局:/etc/vimrc
个人:
1.行号
set nu /set number 显示行号
set nonu //取消显示
2.括号匹配高亮显示
匹配:set showmatch //set sm
括号对应,光标定位左括号,右括号会直接显示
取消:set nosm
3.自动缩进
set ai //auto indent缩进
set noai
4.高亮搜素结果
set hlsearch
set nohlsearch //取消高亮
5.语法高亮
syntax on/off
6.忽略字母大消息
set ic //ignorecase忽略大小写
set noic //取消忽略
16.帮助
:help
:help set //查看帮助文档
:help usr_01.txt //查看帮助信息
练习:
1.复制/etc/grub2.cfg文件到/tmp目录中,删除/tmp/grub2.cfg文件中以空白字符开头的行的行首字符
2.复制/etc/rc.d/init.d/functions/文件到/tmp目录中,用查找替换命令,为/tmp/functions文件的每个以空白字符开头的行的行首加上#
3.为/tmp/grub2.cfg文件的前三行的行首,加上#号
4.将/etc/yum.repos.d/CentOS-Base.repo文件中,所有的enabled=0,替换为enabled=1,所有的gpgcheck=0替换为1
:%s@^[[:space:]]\+@@
:%s@\(^[[:space:]]\)\+[^[:space:]]@#\1@
:%s@\(^[[:space:]]\)@#&@
//() 对应\1,vim可以使用&引用前者
//前面是空白,但是后面不是空白的行
:1,3s@^@#@
:%s@\(enabled\|gpgcheck\)=0@\1=1@
//中间的 | 也要转义
课外作业:
如何设置tab键缩进4个字符 //vim中
vim ~/.vimrc
set nu
set ts=4 //tabstop