VIM编辑器详解
今天主要讲一下Linux文本编辑器中的一个重要工具Vi/Vim,Vim是Vi的提升版本,所以主要讲解Vim的使用。Vim对于应用Linux操作系统异常重要,无论是脚本,还是修改配置文件,亦或是获取你想要的信息都离不开Vim。总而言之,只要你想学习Linux,Vim编辑器是你必须要学的。
Vim(Virtual Interface Improved)
Vim命令的使用格式:Vim [optinos] /path/to/somefile
一、 Vim的命令的使用有三种方式:
1、编辑模式:此模式大致的意思是通过Vim命令直接进入文本之后的默认状态即是此模式。你可以直接通过键盘的字母键对其进行操作,比如:x 为直接删除光标所在符号或字母。
2、输入模式:输入模式,顾名思义,即是你在该模式下可以对打开的文本进行输入或删除操作。
进入该模式可使用如下方式:
i:当前光标处输入内容
I : 在当前光标所在行的行首 a:在当前光标所在处的后面 A : 在当前光标所在行的行尾输入 o:在光标所在行的下方新增一行空白行 O : 在光标所在行的上方新增一行空白行3、末行模式:进入末行模式的方式是 ":" (冒号),输入冒号需使用shift功能键,进入该模式后屏幕最下方左侧会出现:,你可以在:后进行相应的文本操作。在该模式下,你可以编辑、查找任意你想要的文本。
如图:所示,即进入了末行模式。
以上为进入三种模式的相关方式,而在生产环境下三种模式之间的来回切换更加常用:
编辑模式——>末行模式 :
末行模式——>编辑模式 ESC
编辑模式——>输入模式 a,A,i,I,o,O
输入模式——>编辑模式 ESC
输入模式——>末行模式 先进入编辑模式
末行模式——>输入模式 先进入编辑模式
4、退出vim编辑界面
末行模式下:
:x //save & quit
:q //可以在文本尚未进行任何改变的前提下退出
:q! //不保存编辑,强制退出
编辑模式下:
ZZ 保存并退出
输入模式下:
无法直接退出,需切换至前两种模式下退出
二、用vim打开文件
vim可以直接打开多个文件,如:vim /etc/passwd /etc/sysconfig/network 打开之后默认显示最前面的文件,即/etc/passwd,如想切换至/etc/sysconfig/network 可在末行模式下 : next 即可进入network文件中。
总结如下:
:next 下一个
:prev 上一个 :first 众多文件中的第一个 :last 最后一个 :qall 退出所有的文件 :wqall 修改并退出多个文件也可利用vim加适当选项来以一种特定的方式来打开文件,如:
vim -o /etc/passwd /etc/sysconfig/network
打开显示为:
/etc/passwd与/etc/sysconfig/network两个文件的显示方式为上下显示,光标停留在/etc/passwd文件中,移至下面的文件,Ctrl+w 松开案件之后 按↓箭头即可切换。
如想切换至上面的文件,Ctrl+w 之后按↑箭头即可切换。
使用Ctrl+w还可以在光标所在屏幕中继续分屏
Ctrl+w松开时候 按v键 左右再次分屏,按s键上下再次分屏
-O 大O选项可以将文件左右分屏,切换原理大致相同,只是改变箭头方向,
vim还可以跟上+来使用,如
vim + /etc/passwd 打开/etc/passwd文件并将光标停留在最后一行
也可加行数使用 : vim +3 /etc/passwd 打开/etc/passwd文件并光标停留在第三行
注意 : \\ vim -o/O 选项这里不要和切换到输入模式下的o,O混淆,尤其初学者由于知识点较多容易造成混乱。
三、在编辑模式下的光标移动
单字符移动:
h:左
l :右
k:上
j :下
移动时可以和数字组合使用,默认为移动一个字符
比如:3 k 则是向上移动三行,6 l 则是向右移动六个字符
单词间移动:
w:移至下一个单词的词首
b:当前单词或者下一个单词的词首
e:移至下一个单词的刺猬
行内移动:
0:绝对行首
^:行首(左侧第一个非空白字符)
$ :绝对行尾
句子间移动:
):上一句
(:下一句
段落间移动:
}:上一段
{:下一段
注:句子间移动与段落间移动应用较少
行间移动:
#G:移至第几行
G:最后一行
编辑操作:
x:删除光标所在处的字符
#x:删除光标所在处向后#个字符
r:替换光标所在处的单个字符
#r:替换光标所在向后的#个字符,但只能替换相同的字符,所有不是使用频率不是很高
删除操作:
dd:删除光标所在行
#dd:删除光标所在行及其之后的行,共删除#行
dw:删除光标所在单词的字符及其之后的字符
复制操作:
y:yank 复制
用法和d的方式相同,支持#y
粘贴操作:
p:paste 粘贴
用法:p可以使用的前提是之前的操作必须是删除d操作或者复制y操作,如果是d删除操作, 则和windows中的剪切类似。
p的结果取决于删除或者复制的字符,如果是整行:
p:当前行的下一行(小p)
P:当前行的上一行(大p)
如果不是整行:
p:粘贴在光标所在字符的后面
P:粘贴在光标所在字符的前面
撤销编辑:
u:undo 撤销上次操作
#u:撤销上#次操作
Ctrl+r:撤销此前的撤销操作
.:重复此前的命令操作,可与dd等命令结合使用
翻屏操作:
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏 ctrl+d:向文件尾部翻半屏 ctrl+u:向文件首部翻半屏 Enter:下一行j :下一行
k :上一行
可视化操作:
v:按字符为单位进行选定
V:按行为单位进行选定
选定之后有点像word的“先选定,后操作”法则,可以对其进行删除、复制、粘贴等操作
四、末行模式下的应用
末行模式下的范围定界:
格式:“ :/part1/,/part2/”
/part1/,/part2/:可以使用绝对定界,也可以使用相对定界
. : 表示当前行 $ : 最后一行 $-2 : 倒数第3行例如:
代表删除进入末行模式之前光标所在行至末行之间所有的数据(包括范围边界) 末行模式下的窗口定义:
窗口属性的定义:
:set nu 显示行号 :set nonu 取消显示行号 :set ai 自动缩进 :set noai 取消自动缩进 :set ic 忽略大小写 //指寻找关键字是是否忽略大小写,马上会介绍到寻找关键字 :set noic 识别大小写 :set sm 显示对应的括号:set nosm
:syntax on 语法高亮 开:syntax off 关
:set hlsearch 搜索高亮 开 //与搜索关键字有关 :set nohlsearch 关我们来单独介绍一下查找关键字:
/keyword
?keyword n:如果查找到多个匹配的关键字,n代表下一个 N:N代表上一个格式如上,在编辑模式下 / 后加 所想要的关键字即可,关键字支持正则表达式
:set nohlsearch 关闭高亮显示,对当前shell有效五、vim的配置文件
和大多数的linux软件工具一样,全局配置文件存放在/etc/目录下
vim的配置文件:
全局:/etc/vimrc 个人:~/.vimrc最后我们来讲一下vim一个非常重要的功能——查找替换功能:
:地址定界s/查找模式/替换为的内容/gi
g:全局替换 i:不区分大小写 :地址定界s@查找模式@替换为的内容@gi &:用于在替换为的内容部分中引用前面匹配到的所有内容%:代表全文
是在末行模式下的进行的,
以下为查找替换的相关例题,请大家参考:
1、复制/etc/grup.conf至/tmp目录,删除/tmp/grub.conf文件中行首的空白符
:%s\^[[:space:]]\{1,\}\\g 2、复制/etc/rc.d/rc.sysinit至/tmp目录。将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行,行首加#号 :%s@^[[:space:]]\{1,\}.*@#&@g 3、删除/tmp/rc.sysinit文件中以#开头且后面跟了至少一个空白字符的行的行首的#和空白符 1,%s@^#[[:space:]]\{1,\}@@g 4、为/tmp/grub。conf文件中的前三行的行首加#号 1,3s@^@#@g 5、将/etc/yum.repos.d/CentOS-Media.repo中enable=0一行最后的0改为1; %@\(enabled=\)[0-9]@\11@g本文有些啰嗦,内容多且有些杂乱,但是我所介绍的也不过是vim编辑器中的一小部分,叫详解有些不恰当,只是将大家可能经常用到的大致讲了一下,如果读者对于某个功能还是很迷惑,可以前往Internet搜索该功能的专题博客。
还是开篇的那句话,如果想用好linux那么Vim编辑器是读者所必需掌握的,如果本文对读者并没有起到什么实际作用,但是能让您意识到了vim编辑器的重要性,笔者的辛苦也是值得的。
时间不早了,连续整理三天写完了这个博客(笔者白天还要上班),洗簌一下,准备休息啦。
晚安~