1、文本编辑器:
纯文本编辑器,ascii码(127个字符),unicode(全球统一编码)
2、文本编辑器分类:
行编辑器:sed
全屏编辑器:nano、vi、vim
3、vim编辑器模式介绍:
编辑模式:(也叫命令模式)
输入模式:
末行模式:内置命令行接口
4、vim编辑器模式之间转换:
编辑模式-->输入模式
i:insert;在光标所在处输入
a:append;在光标所在处后方输入
o:在光标所在处下方打开一个新的行
I:在光标所在行行首输入
A:在光标所在处行尾输入
O:在光标所在行上方打开一个新的行
输入模式-->编辑模式
ESC键
编辑模式-->末行模式
:
末行模式-->编辑模式
ESC键
5、vim新建或打开文件
格式:
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
option:
+#: 打开文件后,光标直接处于第#行的行首,如果不加#,+则代表处于文件尾行行首;
+/PATTERN:打开文件后,直接让光标处于被模式PATTERN匹配的第一次匹配的字符行的行首
6、vim退出
ZZ: 在编辑模式下,输入两个大写Z
q:不保存退出,在末行模式下输入q
q!:强制不保存退出,末行模式下
wq:保存退出,末行模式下
x:保存退出,末行模式下
w /path/to/somefile :保存至指定路径文件,末行模式下
7、编辑模式下(即命令模式)的相关操作
7.1、实现光标跳转:字符间跳转、单词间跳转、行首行尾跳转、行/句间跳转、段间跳转
字符间跳转:
h:向左跳转一个字符
l:向右跳转一个字符
j:向下跳转一个字符
k:向上跳转一个字符
#[hjkl]:向相应方向一次跳转#个字符;如2h,向左跳转2个字符一次
单词间跳转:
w:跳转至下一个单词的词首;
b:跳转至当前或前一个单词的词首
e:跳转至当前或下一个单词的词尾;
#[wbe]:跳转指定的#单词;
行首行尾跳转:
^:跳转至行首的第一个空白字符;
行间跳转:
#G:跳转指定的#行
1G:跳转至第一行
G:跳转至最后一行;
gg:跳转至第一行
句间跳转:
):跳转至下一句(右括号)
(:跳转至前一句(左括号)
#[()]:跳转至第#句
段间跳转:
}:跳转至下一段落
{:跳转至上一段落
#[{}]:跳转至第#段落
7.2、翻屏操作:
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
enter:按行向后翻
7.3、编辑模式下的命令
有如下:字符编辑、替换操作、删除操作、粘贴操作、复制操作、改变操作等命令
字符编辑命令:
x:删除光标所在处的字符
#x:删除光标所在处及其后的指定个数#的字符
xp:将光标所在处的字符与其后的位置字符交换位置
替换命令:replace
r:替换光标所在处的字符,r后跟要替换的单个字符;
删除命令:d
[#]d[hjklweb]:结合光标跳转字符操作
dd:删除光标所在的行
#dd:删除光标所在处及其后的共#行;
粘贴命令:p
p:小写p;缓冲区中的内容如果为整行,则粘贴在当前光标所在处的下行,如果不为整行,则粘贴至当前光标所在处的后方;
P:大写P;缓冲区中的内容如果为整行,则粘贴在当前光标所在处的上方,如果不为整行,则粘贴至当前光标所在处的前方;
复制命令:yank,y
y:复制,工作行为相似于“d”命令
yy:复制一整行
#yy:复制共#行
y[^$0web]
改变命令:c
改变命令c和删除命令d一样,只是比d命令多了模式切换。从编辑模式切换到输入模式。
c:
#cc
撤销命令:
u:撤销此前的操作,默认最多可撤销前50次操作
#u:撤销此前的#次操作
撤销此前的撤销命令:
ctrl+r :恢复此前的撤销操作。
重复执行前一次编辑操作:. (点号)
.
v:小写v;按字符选定
V:大写V;按行选定;
vim自带的练习教程:vimtutor
8、末行模式操作:
末行模式是内建的命令行接口。
他包括以下:地址界定、查找、查找替换等操作。
8.1、地址界定:可同编辑命令一同使用,实现编辑操作,如:d,y,c,w,r;注意编辑操作直接跟在界定后面,不用再加空格
地址界定格式:
:start_pos[,end_pos]//开始位置[,结束位置]
:# : 第#行;
如::5 表示第5行,
:#,N :指定范围,左侧为起始行,右侧为结束行
如::9,100 :表示从第9行到第100行
:#,+# :指定行范围,左侧为起始行绝对编号,右侧为相对左侧的偏移量;
如::3,+7 :表示从第三行到第10行
:. :点好表示当前行。
:$ :最后一行
如::.,$ :表示当前行到最后一行
:% :表示全文
相当于:1,$
:/pattern/ :从光标所在处开始,第一次被模式所匹配的行
如: :/fstab/ :表示查找第一次匹配到的fstab。
:/fstab/,$ :表示从光标所在处第一次匹配到的fstab到末行之间的行。
:/pattern1/,/pattern2/ :第一次被模式1匹配到的和第一次被模式二之间匹配到额行,很少用。
地址界定后跟编辑操作:
:5w /path/to/somefile:把第5行内容写到特定文件中
:5r /path/from/somefile:在第五行后追加其他文件的内容
:w/path/to/somefile :将范围内的文本保存到指定的文件中
:r/path/from/somefile :将指定文件中的文本读取并插入指定位置;
8.2、查找
:/pattern :从当前光标所在处向文件尾部查找,能够被当前模式匹配到的所有字符串;注意和地址界定中的:/pattern/ 的区别。
:?pattern :从当前光标所在处向文件首部查找,能够被当前模式匹配到的所有字符串;
注意: /pattern和?pattern可以配合n和N进行定位,n和命令方向相同,N和命令方向相反;
8.3、查找并替换: s
要查找的内容:可使用正则表达式
替换为的内容:不能使用正则表达式,但是可以引用。
注意:如果“要查找的内容”部分在模式中使用分组符号,在替换为的内容中使用后项引用; 直接引用查找模式匹配到的全部文本,要使用 & 符号。
修饰符:
i:查找时忽略大小写
g:全局替换。默认为替换每行中的第一个匹配项
注意:如果分隔符与查找的或替换的内容有冲突,可以将分隔符“/”替换成其他的非常用字符,如@、#
如::%s@\<t\([[:alpher:]]\+\)\>@T\1@g//匹配到t开头的单词,然后换成T开头的单词
:%s@\<t[[:alpher:]]\+\)@&er@g//匹配到t开头的单词,在其后加上er
:%s@#@@//将#号开头的行替换成空
练习1:复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首空白字符
[root@localhost ~]# cp /etc/grub2.cfg /tmp/
:%s/^[[:space:]]\+//
练习2:复制/etc/rc.d/init.d/functions文件至tmp中,用查找替换命令为/tmp/functions文件中的每个以空白字符开头的行的行首加上“#”
[root@localhost tmp]# cp /etc/rc.d/init.d/functions /tmp/functions
:%s/^[[:space:]]\+/#\1/g
练习3:为/tmp/grub2.cfg文件的前三行的行首加上#
:1,3s/.*/#&/
练习4:将/etc/yum.reposd/centos-base.repo文件中将所有enabled=0替换为enabled=1,所有的gpgcheck=0,替换为gpgcheck=1
[root@localhost tmp]# cp /etc/yum.repos.d/CentOS-Base.repo /tmp/centos-base.repo
:%s/\(enabled\|gpgcheck\)=0/\1=1/g
vim file1 file2 ... //依次新建、打开多个文件,默认打开的第一个,在新建的文件中进行切换,在末行模式下输入:next(下一个文件)、prev(上一个文件)、first(第一个文件)、last(最后一个文件)。
wall:保存所有文件
qall:推出所有文件
如:[root@localhost tmp]# vim fstab issue //依次打开fstab、issue文件,如果不存在,则新建。
vim -o file1 file2 //小写“o”水平分割同时显示file1和file2
vim -O file1 file2 //大写“o”垂直分割同时显示file1和file2
文件窗口之间的切换:按住ctrl+w松开后,用上下左右箭头选择需要操作的文本窗口。
打开文件后,按住ctrl+w松开,按s键水平分割;
打开文件后,按住ctrl+w松开,按v键垂直分割;
10、定制vim的工作特性:
末行模式下的设定,仅对当前vim进程有效;
全局配置文件:/etc/vimrc
个人配置文件:~/.vimrc //可能需要自己创建此文件。
如:vim /root/.vimrc
set number//显示行号。
vim特性:(末行模式下设定)
行号:
显示行号: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
忽略字符大小写:(查找替换中的修饰符g)
启用设置:set ic
停用设置:set noic
11、末行模式下的帮助命令:
help
help 关键字
12、设置vim编辑器中的tab缩进为四个字符
set ts=4 (注:ts是tabstop的缩写,设置tab宽4个空格)
set expandtab