高级Linux运维工程师养成记-vim编辑器从入门到进阶

    科技2025-03-25  16

    高级Linux运维工程师养成记-vim编辑器从入门到进阶

    高级Linux运维工程师养成记

    vim编辑器概述

    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_64

    vi和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打开文件时,可以使用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.txt

    vim比较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模式

    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命令模式

    vim命令模式-光标跳转

    当使用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命令模式操作

    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 删除当前光标到行尾,并切换成插入模式

    命令模式操作文本总结

    修改(替换)删除(剪切)复制行ccddyy字符cldlyl单词cwdwyw句子头c)d)y)句子尾c(d(y(段落头c{d{y{段落尾c}d}y}

    命令模式其他命令

    100iliu[ESC] 粘贴liu 100次 起始位置加命令加结束位置 0 行首y 从这里开始拷贝$ 行尾gU变大写gu变小写y 复制d 删除 选中行变大写 di" 删除双引号""之间的内容yi( 删除小括号()之间的内容vi[ 光标在[]之间,则选中[]之间的内容dtx 删除字符直到遇见光标之后的第一个x字符ytx 复制字符直到遇见光标之后第一个x字符

    vim编辑模式

    vim扩展命令模式

    使用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文件中 写入内核版本信息成功

    vim编辑器的个性化定制

    Processed: 0.009, SQL: 8