一、模式及模式间的切换
(一)模式介绍
1、vim文本编辑器提供了三种基本模式,分别是编辑模式(命令模式)、输入模式以及末行模式(命令行模式)
(二)模式间的切换
二、基础操作
(一)单文件的打开与关闭
1、单文件的打开:vim [options]… /path/to/somefile
2、单文件打开时的常用选项:
(1)+#:表示当文件打开时,直接让光标处于第#行的行首
(2)+/pattern:表示当文件打开时,直接让光标处于第一个被pattern匹配到的行的行首
3、如何在单文件打开时,实现多窗口功能?
ctrl+w松开后,按s,将单个窗口按照水平方式进行分割
ctrl+w洞开后,按v,将单个窗口按照垂直方式进行分割
4、单文件的关闭和另存为:
(1)ZZ:保存并退出
(2)wq:保存并退出
(3)x:保存并退出
(4)q:直接退出,不保存对文件内容的修改
(5)q!:强制直接退出
(6)w /path/to/somefile:另存为至somefile
(二)多文件的打开与关闭
1、多文件的打开:vim [options]… /path/to/somefile1 /path/to/somefile2 /path/to/somefile3
2、多文件打开时的常用选项:
(1)-o:以水平分割多个窗口的形式打开多个文件
(2)-O:以垂直分割多个窗口的形式打开多个文件
3、如何在多个文件之间进行来回切换?
(1):next 切换至下一个文件
(2):prev 切换至上一个文件
(3):first 切换至第一个文件
(4):last 切换至最后一个文件
4、多文件的关闭:
(1)如果对其中一个文件进行关闭,即使用单文件的关闭方法即可
(2)如果对多个文件同时进行关闭,具体方法如下:
-
wqall:保存所有文件并且退出
-
qall:退出所有文件,但不保存
三、编辑模式
(一)如何操纵光标?
1、字符间的光标跳转
(1)上下左右方向键
(2)k(上),j(下),h(左),l(右)
注意:以上2种字符间的光标跳转的方式,都可以在其前加上一个数字,表示需要跳转的字符的个数
2、单词间的光标跳转
(1)w:跳转至下一个单词的词首
(2)e:跳转至当前光标所在处的单词的词尾,或者光标所在处之后的一个单词的词尾
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This的T处,在执行了“e”之后,光标会跳转至This的s处
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This后的空白字符处,在执行了“e”之后,光标会跳转至all的第二个l处
-
# This all seem confusing? Look in /etc/sysconfig/init,
(3)b:跳转至当前光标所在处的单词的词首,或者光标所在处之前的一个单词的词首
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This的s处,在执行了“b”之后,光标会跳转至This的T处
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This后的空白字符处,在执行了“b”之后,光标会跳转至This的T处
-
# This all seem confusing? Look in /etc/sysconfig/init,
注意:以上3种单词间的光标跳转的方式,都可以在其前加上一个数字,表示需要跳转的单词的个数
3、如何跳转至行首OR行尾?
(1)^:直接跳转至行首的第一个空白字符
(2)0:直接跳转至首行
(3)$:直接跳转至尾行
4、如何在行间进行跳转?
(1)#G:“#”表示数字,“G”表示需要跳转至的行的行号
(2)1G:跳转至第一行,即首行
(3)G:跳转至最后一行,即尾行
5、如何进行翻页?
(1)ctrl+f:向文件尾部翻一页
(2)ctrl+b:向文件首部翻一页
(3)ctrl+d:向文件尾部翻半页
(4)ctrl+u:向文件首部翻半页
(5)Enter键:向文件尾部移动一行
(二)编辑命令 –> 主要针对于字符进行操作
1、删除命令
(1)x:删除光标所在处的字符
(2)2x:删除从光标所在处开始的2个字符
(3)xp:交换光标所在处的字符与其后面的字符的位置
(4)d:结合光标跳转字符,可以实现范围删除,具体如下:
-
d$:删除光标所在处至行尾之间的所有字符
-
d^:删除光标所在处至行首之间的所有字符
-
dw:删除光标所在处至下一个单词词首之间的所有字符,并且光标跳转至下一个单词的词首
-
2dw:删除光标所在处至之后的第三个单词的词首,并且光标跳转至第三个单词的词首
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This的T处,在执行了“2dw”之后,“This all”会被删除,且光标会跳转至seem的s处
-
# seem confusing? Look in /etc/sysconfig/init,
-
de:删除光标所在处至本单词的词尾之间的所有字符,并且光标跳转至下一个单词的词首之前的空白字符处
-
2de:删除光标所在处至之后的第三个单词的词首之间的所有字符,并且光标跳转至第三个单词之间的空白字符处
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在This的h处,在执行了“2de”之后,“his all”会被删除,光标会跳转至seem之前的空白字符处
-
# T seem confusing? Look in /etc/sysconfig/init,
-
db:删除光标所在行至本单词的词首之间的所有字符,并且光标会停留在执行命令“db”之前的光标所在处
-
2db:删除光标所在处至之前的两个单词的,并且光标会停留在执行命令“2db”之前的光标所在处
-
# This all seem confusing? Look in /etc/sysconfig/init,
-
上述文本光标处在seem的s处,在执行了“2db”之后,“This all”会被删除,光标会停留在seem的s处
-
# seem confusing? Look in /etc/sysconfig/init,
-
dd:删除光标所在行的整行
-
2dd:删除2行,从光标所在行开始计数
2、替换命令
(1)r:替换光标所在处的字符
3、粘贴命令
(1)p:缓冲区中的内容如果为整行,则粘贴至当前光标所在行的下方;否则,则粘贴至当前光标所在行的后方
(2)P:缓冲区中的内容如果为整行,则粘贴至当前光标所在行的上方;否则,则粘贴至当前光标所在行的前方
4、复制命令
(1)y:结合光标跳转字符,可以实现范围复制,具体如下:
-
y$:复制光标所在处之后至行尾之间的所有字符串
-
y^:复制光标所在处之前至行首的空白字符之间的所有字符串
-
y0:复制光标所在处之前至行首之间的所有字符串
-
yy:复制光标所在行的整行
5、改变命令
(1)c:结合光标跳转字符,可以实现范围删除,并且命令执行完成后,会转换至输入模式
-
c$:删除光标所在处之后至行尾之间的所有字符串,并且转换至输入模式
-
c^:删除光标所在处之前至行首的空白字符之间的所有字符串,并且转换至输入模式
-
c0:删除光标所在处之前至行首之间的所有字符串,并且转换至输入模式
-
cc:删除光标所在行的整行,并且转换至输入模式
6、撤销命令
(1)u:撤销之前一次操作
(2)3u:撤销之前三次操作
(3)ctrl+r:撤销之前执行的撤销命令
7、特殊命令
(1).:重复执行之前一个编辑命令
(2)v:按字符选定(注意:当选定字符串后,可对选定的字符串执行d、y、c等命令)
(3)V:按行选定(注意:当选定字符串后,可对选定的字符串执行d、y、c等命令)
四、末行模式
1、地址界定:[start_position[,end_position]] –> 可以配合d,c,y,w,r等命令一起使用
(1)#:“#”表示行数,明确第几行
(2).:表示当前行
(3)#,#:“#”表示行数,明确从第几行至第几行
(4)#,+#:“#”表示行数,明确从第几行开始向后数几行
-
5,+9:从第五行开始,向后数九行
-
.,$-1:从当前行开始至倒数第二行
(5)%:表示所有行
(6)/pattern/:表示从光标所在处开始向文件尾部至第一次被模式所匹配的行
(7)/pattern1/,/pattern2/:表示从被/patter1/匹配的行开始至被/pattern2/匹配的行
2、查找
(1)/pattern:从当前光标所在行处向文件尾部(或者向文件首部)查找能够被/pattern所匹配到的所有字符串
-
n:下一个,与命令方向相同
-
N:上一个,与命令方向相反
3、替换
【格式】
-
s@查找内容@替换内容@修饰符
【知识】
-
查找内容:支持正则表达式
-
替换内容:不支持正则表达式,可以使用/1或&来引用“查找内容”中使用正则表达式所匹配到的内容
-
修饰符:
-
i:忽略字母大小写
-
g:全局替换,默认情况下,只替换一次查找到的内容
【示例】
-
复制/etc/grub2.cfg文件至tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
-
%s@^[[:space:]]\+@@
-
复制/etc/rc.d/init.d/functions文件至tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;
-
%s@^[[:space:]]\+[^[:space:]]@#&@g
-
为/tmp/grub2.cfg文件的前三行的行首加上#号;
-
1,3s@^@#&@
-
将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;
-
%s@\(enabled\|gpgcheck\)=0@&=1@g
五、如何定义vim的特性
(一)配置文件
1、全局配置文件:/etc/vimrc
2、个人配置文件:~.vimrc
(二)定义特定的方式?
1、直接在末行模式下即可完成对vim的特性的定义,但是仅对当前vim进程生效
2、在配置文件(全局OR个人)中定义vim的特性,永久生效
(三)常用特性定义
1、行号
(1)显示行号::set number,可简写为“nu”
(2)取消行号::set monumber,可简写为“nonu”
2、高亮显示括号
(1)开启::set showmatch,可简写为“sm”
(2)关闭::set noshowmatch,可简写为“nosm”
3、自动缩进
(1)开启::set autoindent,可简写为“ai”
(2)关闭::set noautoindent,可简写为“noai”
4、高亮搜索
(1)开启::set hlsearch,可简写为“hls”
(2)关闭::set nohlsearch,可简写为“nohls”
5、语法高亮
(1)开启:syntax on
(2)关闭:syntax off
6、忽略字符大小写
(1)开启::set ignorecase,可简写为“ic”
(2)关闭::set noignorecase,可简写为“noic”
7、设置tab缩进为4个字符
(1)设置::set softtabstop=4
8、获取帮助信息
(1)全部::help
(2)指定::help subject,如:help ic
原创文章,作者:Tornado,如若转载,请注明出处:http://www.178linux.com/55388