vim是Linux平台上功能强大基于模式的文本编辑工具,可以用于文本编辑、脚本开发、甚至是程序开发等等应用场景。相对于gedit(图形化界面的文本编辑器)会让初学者感觉到挺难用,因为要记住大量的命令,但是一旦熟练运用后效率高于其他文本编辑工具。
检查系统中是否安装了vim,只需要执行vim命令,如果能够输出如下所示的版本信息,则表示该系统上可以使用vim,退出vim可以使用:q<Enter>
CentOS8.2的vim
如果安装系统是选择的最小化安装,则需要使用yum install -y vim来安装vim编辑器
vim编辑器的安装路径是/usr/bin/vim
[root@centos8 ~]# which vim /usr/bin/vim而安装包是vim-enhanced-8.0.1763-13.el8.x86_64,CentOS系列可以使用rpm -qf查看 软件安装包的来源
[root@centos8 ~]# rpm -qf `which vim` vim-enhanced-8.0.1763-13.el8.x86_64和vim编辑器类似的编辑器还有vi编辑器,它们两者不是同一个软件包,vim是vi(Visual Interface)的加强版。
查看vi编辑器的安装包
[root@centos8 ~]# rpm -qf `which vi` vim-minimal-8.0.1763-13.el8.x86_64vi和vim最大的区别就是可以语法加亮,在编辑文本时会给文本文件内容增加颜色(和路径相关)。vim完全兼容vi。
vi和vim编辑/etc/passwd文件
将/etc/passwd文件复制到/data目录下,然后使用vim打开
[root@centos8 ~]# cd /data/ [root@centos8 data]# cp /etc/passwd /data/ [root@centos8 data]# vim /data/passwd由于passwd文件的路径发生了变化(位于/data目录下),因此文件的内容不会有颜色,因为之前vim判断/etc目录是系统配置文件,才会给passwd文件的内容带颜色。
使用vim打开文件时,可以使用vim [option]... file...打开,其中常用的选项有
+# 打开文件后,让光标处于第#行的行首,+默认是行尾+/PATTERN 让光标处于第一个被PATTERN匹配到的行首-b file 二进制方式打开文件-d file1 file2 比较多个文件-m file 只读方式打开文件e 直接进入ex模式使用vim打开/data目录下的passwd文件,并且默认光标定位在第十行
[root@centos8 data]# vim +10 /data/passwd vim +# 定位指定的行数使用vim打开/data目录下的passwd文件,并且光标定位在以/bin开头的行
[root@centos8 data]# vim +/^bin /data/passwd 光标定位在以/bin开头的行使用vim打开/data目录下的passwd文件,并且光标定位在包含FTP的行
[root@centos8 ~]# vim +/FTP /data/passwd 光标定位在包含FTP的行使用vim比较两个文件的差异
在vim打开文件时,如果文件存在,文件被打开并显示文件内容,如果文件不存在,当编辑后第一次存到磁盘时创建它。 首先使用vim创建两个文件,source.txt和target.txt,并查看文件内容。
在编辑source.txt和target.txt文件内容时,首先按i进入编辑模式,编辑文件后按esc退出编辑模式,然后按:进入扩展命令模式,并按wq存盘退出。
[root@centos8 data]# vim source.txt [root@centos8 data]# vim target.txt [root@centos8 data]# cat source.txt this is test content [root@centos8 data]# cat target.txt this is test content THIS IS TEST CONTENT编辑source.txt
编辑target.txt
然后使用vim -d source.txt target.txt 比较两个文件的差异
如果想要退出可以按esc后使用:切换到扩展命令模式然后输入qall退出文本比较
[root@centos8 data]# vim -d source.txt target.txtvim比较source.txt和target.txt文件的差异
使用vim同时打开source.txt和target.txt
[root@centos8 data]# vim -o source.txt target.txt此时会同时开启来两个文本编辑的窗口,在左右两边窗口切换,可以先按快捷键Ctrl+w 松手后再按方向键左或者右来切换窗口,退出首先按esc,然后按:进入扩展命令模式,输入qall退出编辑窗口
使用vim以只读模式打开source.txt
[root@centos8 data]# vim -m source.txt只读模式提示文件进制修改
vim编辑器有三种模式,分别是命令行模式(command mode)、编辑模式(edit mode)、扩展模式(extended command mode)
命令模式是默认模式,主要用于查看文件、移动光标、剪切、粘贴文本,无法输入内容
编辑模式主要用于修改文本
扩展模式主要用于保存退出(:wq)、未修改退出(:q)、强行退出(:q!)等等。
ESC键总是用于退出当前模式,两次ESC键总是返回命令模式。
vim模式切换
vim编辑器默认的模式是命令模式
使用vim编辑(查看)/data目录下的passwd文件,此时是命令模式,不能修改文件
[root@centos8 data]# vim /data/passwd要修改文件需要从命令模式切换成编辑模式 命令模式切换成编辑模式可以通过 a、A、o、O、i、I键来切换
i表示在当前字符之前插入I表示在行首插入a表示在当前字符之后插入A表示在行尾插入o表示在下一行插入(另起一行)O表示上一行插入编辑模式下编辑/data/passwd文件
编辑模式新增内容编辑完成以后按esc可以退出编辑模式,然后按:进入扩展命令模式,输入wq即可保存修改的内容并且退出vim编辑器。w表示write,q表示quit
修改完成后可以使用只读的方式查看
当使用vim打开文件时默认就进入了命令模式,在命令模式下可以使用k,j,h,l实现基于字符之间的光标跳转。
k表示光标向上j表示光标向下h表示光标向左l表示光标向右 光标的上下左右移动在上下左右移动时,如果想要一次性移动多个字符,可以使用数字加k,j,h,l实现。例如3+h(先按3,再按h)表示向左移动3个字符。
vim命令模式下光标跳转除了基于字符跳转以外,还可以使用w,e,b来实现单词间的跳转
w表示下一个单词的词首e表示当前或下一个单词的词尾b表示当前或者前一个单词的词首 单词词首和词尾还可使用数字+w,e,b实现多个单词跳转
vim命令模式下光标跳转还能再当前页跳转,命令模式下当前页跳转的常用命令
H 页首M当前页的中间行L当前页的页底zt 将光标所在当前行移动到屏幕顶端zz 将光标所在行移动到屏幕中间zb 将光标所在当前行移动到屏幕底端当前页
vim命令模式还可以实现行、句子和段落的跳转
vim命令模式光标跳转还可以实现行首行尾跳转
0 跳转至光标所在行的行首$ 跳转至光标所在行的行尾^ 跳转至光标所在行行首的第一个非空白字符 行首行尾跳转vim命令模式光标跳转还可以跳转到指定的行,通过行数+G即可
在vim命令模式下输入10和大写字母G跳转到文件的第十行
行跳转gg可以跳到文件首行的第一个字符
G 可以跳到文件最后一行的第一个字符
shfit+( 和shift+)可以实现句子之间的移动,其中(表示上一句,)表示下一句,句子是以.号结尾的内容
使用(和)实现句子之间的跳转 使用{和}实现段落之间的移动,如果内容之间有空行就形成了段落,其中}表示下一段,而{表示上一段 使用{和}实现段落的跳转vim在命令模式下还可以使用相关的命令来完成字符编辑、替换、删除、复制操作
编辑命令
x 删除光标处的字符number+x 删除光标处起始的number个字符xp 交换光标所在处的字符以及后面字符的位置(例如im交换之后就是mi)shift+~ 转换大小写J 删除当前行后的换行符替换命令
r 替换光标所在处的字符(单个字符) -R 切换成REPLACE模式,此时会替换指定的内容删除命令
d 删除命令,可结合光标跳转字符,实现指定范围删除,例如dgg可以删除光标到行首的内容d$ 删除到行尾d^ 删除到非空行首d0 删除到行首dw 删除单词到下一个单词的词首de 删除单词到下一个单词的词尾db 删除到此到前一个单词的词首dd 删除所在行D: 从当前光标位置一直删除到行尾,等同于d$常用的删除操作是dd,即删除光标所在的行
复制命令
y 复制,可以结合光标跳转字符,实现指定范围复制y$y0y^yeywybyy 复制行Y 复制整行粘贴命令
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的后面P 缓冲区如存的如果为整行,则粘贴当前光标所在行的上方,否则粘贴至当前光标所在处的前面改变命令
c 修改后切换成插入模式c$ 删除光标到行首并切换到插入模式c^c0cbcecwcc 删除当前行并输入新内容,相当于SC 删除当前光标到行尾,并切换成插入模式使用vim打开文件时默认是命令模式,输入:可以切换成扩展命令模式
文件编辑修改完成后如果要保存退出,此时需要从编辑模式切换到扩展命令模式,输入冒号(:)即可从编辑模式切换到扩展命令模式
切换成扩展命令模式后,通常会输入wq表示存储修改的文件内容并退出vim编辑器。
vim在扩展命令模式下存盘退出还有其他几种形式
q vim打开文件并未做修改,此时可以在扩展命令模式下使用q退出q! vim编辑文件内容后不想保存修改的内容,可以使用q!退出,会丢失修改的内容w vim编辑文件内容后保存文件内容到磁盘除了存盘退出以外,vim编辑器的命令扩展模式还提供了一些日常运维常用的功能
使用vim的扩展命令模式实现将/etc/issue文件的内容读取到/data/passwd文件中在扩展命令模式下输入r 然后加上文件路径并回车即可
读取文件内容到当前文件中读取/etc/issue文件的内容
读取之后的文件内容
使用vim的扩展命令模式实现将/data/passwd文件另存为passwd.old在扩展命令模式下输入w 然后加上另存为文件的名称并回车即可
文件另存为 使用vim的扩展命令模式实现查看之前另存为文件passwd.old的详细信息在扩展命令模式下输入!ls -l|grep passwd.old 并回车后即可查看该文件的详细信息,然后按回车可以返回到命令模式
扩展命令模式下执行命令 执行命令的结果 使用vim的扩展命令模式读取内核版本到/data/passwd文件中在扩展命令模式下使用r!uname -a并回车后即可实现将内核版本信息写入文件
读取内核版本写入到/data/passwd文件中 写入内核版本信息成功