回顾:
正则表达式(BRE,ERE)
基本正则表达式与扩展正则表达式之间的差别就是:
次数匹配和分组的时候扩展正则表达式没有了反斜线。
BRE:
字符匹配:点号(.),[],[^]
次数匹配:*,\?,\+,\{m\},\{m,n\}
位置锚定:^,$,\<,\>
分组及引用:\(\),\1,\2.............
ERE:
字符匹配:点号(.),[],[^]
次数匹配:*,?,+,{m},{m,n}
位置锚定:^,$,\<,\>
分组及引用:(),\1,\2,.........
或者:|
上面的或者“|”他获得的是整个事件的右侧或者左侧,所以我们如果仅仅是获得一侧的一部分内容的话,我们一定要加括号,当然这个括号依然起到分组的作用。
grep,egrep,fgrep
文本过滤器:PATTERN
-v
-o
-i
-q
-A
-B
-C
wc, cut, sort, uniq, diff, patch
vim编辑器
文本编辑器:
文本:纯文本信息,如果站在ASSII角度来讲,是不加任何修饰的信息:ASSII text;
word文档不是纯文本的,像记事本才是纯文本的编辑器。
ASIItext; Unicode;
文本编辑种类:
行编辑器:sed
全屏编辑器:nano,vi
vi:Visual Interface
vim: Vi IMproved
注意:vi与vim是不同的,有的linux系统发行版上只有vi,而没有vim
vim:
模式化的编辑器
(什么叫模式化?即对于vi来讲,他有很多不同的模式,在每一种模式下,用户击键所带来的功能是不一样,也就是说我们打开文本的方式不同,所带来的功能就不一样。)
基本模式:
编辑模式,命令模式
输入模式
末行模式:
内置的命令行接口;
打开文件:
本地没有此文件,我们会自动创建此文件,对于vim打开一个文件时,如果指定的文件路径事先并不存在,则事先会创建此文件,并把我们编辑的内容保留在文件中,如果文件事先存在的话,就会打开此文件,并让光标默认处在第一行的最左侧,即第一行的第一个字符上
格式:
#vim [options] [file ..]
vim打开一个文件后,我们再保存并关闭文件,则直接输入两个大写的“Z”:ZZ
+#: 打开文件后,直接让光标处于第#行的行首;
例:[root@centos6~]# vim +7 /etc/fstab
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
“+/”是固定的格式,后面直接跟正则表达式的模式
例:[root@centos6~]# vim +/tmpfs /etc/fstab
+:自动处在文件的尾行行首;(这个命令还是比较常用的,因为我们需要在文件尾 部添加配置时经常使用)
例:[root@centos6~]# vim + /etc/fstab
使用vim编辑器打开文件后,界面右下角显示光标处的位置,上面的截图为,光标处在第八行第一个字符;界面的左下角表示这个文件一共有16行,一共有899个字符
如果一个文件内容很多,使用vim打开时一屏显示不完,那么我们在往下查看的时候,界面的右下角会出现百分比。
模式转换:
编辑模式(命令行模式):默认模式
编辑模式------->输入模式
i:insert,在光标所在处输入;
a:append,在光标所在处的后方输入;
o:小写“o”表示在光标所在处的下方打开一个新行,光标处在行首;
I:大写“I”表示在光标所在行的行首插入;
A:表示在光标所在行的行尾插入;
O:大写“O”表示在光标所在行的上方打开一个新行;
输入模式--------->编辑模式(命令行模式):
键入“ESC”键即可。
编辑模式--------->末行模式:
:
使用冒号:进入末行模式,冒号就是内置的命令行接口,在末行模式下可以执行很多命令
删除第10行到100行
:10,100d
将vim文本内容加上行号:
:set nu //显示行号
:set nonu //表示取消行号
(vim是非常强大的内置的命令行接口;)
末行模式------------->编辑模式
连续按两次“ESC”
末行模式下:关闭文件:
ZZ:保存并推出;
:q:退出,文件没有执行过任何保存;
:q!:强制退出,不保存此前的编辑操作;
:wq:保存并推出;
:x保存并退出;
:w PATH/TO/SOMEFILE //将文件保存到什么位置
命令行模式下光标的跳转:
字符间跳转
h,l
h:是向左跳转一个字符;
l:是向右跳转一个字符;
j,k
j:是向下跳一个字符;
k:向上跳转一行;
(记忆J,K,就是想像成日本在韩国的下面)
#COMMAND:跳转由#指定的个数的字符,COMMAND表示h,l,j,k命令;
举例:6l:表示向右跳转6个字符
单词间跳转
w:下一个单词的词首;
e:当前或后一个单词的词尾;
b:当前或前一个单词的词首;
#COMMAND:跳转由#指定的个数的单词;(COMMAND,表示w,e,b)
行首行尾跳转
^:跳转至行首的第一个非空白字符;
0:数字“0”跳转至绝对行首;(tab键的空格在行首是跳不过去的,只跳行首空 格)
$:跳转至行尾;
行间跳转
#G:跳转至由#指定的行;
1G,gg:第一行;
G:最后一行;
句间跳转
):表示跳转至下一句;
(:表示跳转至上一句;
段间跳转
}:表示下一个段落
{:表示上一个段落
命令行模式下的翻屏操作:
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏;
ctrl+u:向文件首部翻半屏;
Enter:按行向后翻
vim的命令模式下编辑命令:
在编辑模式(命令行模式)下的操作:
字符编辑
替换命令
删除命令
粘贴命令
复制命令
字符编辑:
x:小写的x,删除光标所在处的字符;
#x:删除光标所在处起始的#个字符;
xp:交换光标处及其后面的字符的位置;
替换命令(replace):
r:替换光标所在处的字符;
rCHAR:CHAR表示要替换的内容
删除命令:
d:删除命令,可结合光标跳转字符,实现范围删除;
d$:删除光标处到行尾的内容;
d^:删除光标处之前到行首的内容;
dw:删除光标处的一个单词;
de:
db:
上面的 dw,de,db,前面还可以加上数字,表示删除多个单词
#COMMAND:
dd:删除光标所处的一整行内容;
#dd:删除光标所处的行起始的共#行;
注意:删除的命令,不会立即清掉,而是保存在缓存中,缓冲区中可以保留多个内容,但是只有最后一个才能被粘贴。
粘贴命令(p put paste):
p:小写“p”,缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否 则,则粘贴至当前光标所在处的后方;
P:大写“P”,缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否 则,则粘贴至当前光标所在处的前方;
注意:我们删除之后做了粘贴,那么就相当于移动;如果不粘贴,则就是删除;
复制命令(yank,简写y):
y:复制,工作行为相似于d命令;
y$
y^
y0
ye
yw
yb
#COMMAND:表示支持前面加数字
yy:表示复制一整行;
#yy:复制#行
改变命令(change,c):
编辑模式(命令行模式)----->输入模式,实现删除操作;
dd命令是删除一整行,但是模式还是命令行模式;
cc命令是删除一整行,但是模式由命令行模式成为输入模式;
用法:
c$ c^ c0
cd ce cw 并且还支持 #COMMAND
cc:删除光标所在的行,并转化为输出模式;
#cc:
可视化模式:
v:小写v,表示按字符选定;按小写v之后,使用方向键移动光标,就能根据字符选 中内容;
V:大写V,表示按行选定;按大写V之后,使用方向键移动光标,就能根据整行选中 内容;
结合编辑命令:
d:表示选中并删除
c:表示删除并修改
y:表示选中并复制
撤销操作:
u:小写“u”撤销此前的工作;
可撤销的操作可以有多个,一般而言默认为50个
#u:表示撤销此前的#个操作;
撤销此前的撤销操作:
ctrl+r
点号“.”:重复执行前一个编辑操作:
vim自带的练习教程:
vimtutor
我们直接在命令行中运行“vimtutor”即可打开教程;
vim末行模式:
进入末行模式使用冒号就行“:”
末行模式时内建的命令行接口