zoukankan      html  css  js  c++  java
  • 高级Linux运维工程师养成记-vim编辑器从入门到进阶

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

    vim编辑器概述

    vim是Linux平台上功能强大基于模式的文本编辑工具,可以用于文本编辑、脚本开发、甚至是程序开发等等应用场景。相对于gedit(图形化界面的文本编辑器)会让初学者感觉到挺难用,因为要记住大量的命令,但是一旦熟练运用后效率高于其他文本编辑工具。

    检查系统中是否安装了vim,只需要执行vim命令,如果能够输出如下所示的版本信息,则表示该系统上可以使用vim,退出vim可以使用:q<Enter>

    CentOS8.2的vim
    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文件
    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 /data/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 +# 定位指定的行数

    使用vim打开/data目录下的passwd文件,并且光标定位在以/bin开头的行

    [root@centos8 data]# vim +/^bin /data/passwd
    

    光标定位在以/bin开头的行
    光标定位在以/bin开头的行

    使用vim打开/data目录下的passwd文件,并且光标定位在包含FTP的行

    [root@centos8 ~]# vim +/FTP /data/passwd
    

    光标定位在包含FTP的行
    光标定位在包含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
    编辑source.txt

    编辑target.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比较文件的差异

    使用vim同时打开source.txt和target.txt

    [root@centos8 data]# vim -o source.txt target.txt 
    

    此时会同时开启来两个文本编辑的窗口,在左右两边窗口切换,可以先按快捷键Ctrl+w 松手后再按方向键左或者右来切换窗口,退出首先按esc,然后按:进入扩展命令模式,输入qall退出编辑窗口
    vim同时打开多个文件

    使用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可以跳到文件首行的第一个字符
       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$
      • y0
      • y^
      • ye
      • yw
      • yb
      • yy 复制行
      • Y 复制整行
    • 粘贴命令

      • p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的后面
      • P 缓冲区如存的如果为整行,则粘贴当前光标所在行的上方,否则粘贴至当前光标所在处的前面
    • 改变命令

      • c 修改后切换成插入模式
      • c$ 删除光标到行首并切换到插入模式
      • c^
      • c0
      • cb
      • ce
      • cw
      • cc 删除当前行并输入新内容,相当于S
      • C 删除当前光标到行尾,并切换成插入模式

    命令模式操作文本总结

    修改(替换) 删除(剪切) 复制
    cc dd yy
    字符 cl dl yl
    单词 cw dw yw
    句子头 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编辑器的命令扩展模式还提供了一些日常运维常用的功能

    1. 使用vim的扩展命令模式实现将/etc/issue文件的内容读取到/data/passwd文件中

    在扩展命令模式下输入r 然后加上文件路径并回车即可

    读取文件内容到当前文件中
    读取文件内容到当前文件中

    读取/etc/issue文件的内容
    读取/etc/issue文件的内容

    读取之后的文件内容
    读取之后的文件内容

    1. 使用vim的扩展命令模式实现将/data/passwd文件另存为passwd.old

    在扩展命令模式下输入w 然后加上另存为文件的名称并回车即可

    文件另存为
    文件另存为

    1. 使用vim的扩展命令模式实现查看之前另存为文件passwd.old的详细信息

    在扩展命令模式下输入!ls -l|grep passwd.old 并回车后即可查看该文件的详细信息,然后按回车可以返回到命令模式

    扩展命令模式下执行命令
    扩展命令模式下执行命令

    执行命令的结果
    扩展命令模式下执行命令的结果

    1. 使用vim的扩展命令模式读取内核版本到/data/passwd文件中

    在扩展命令模式下使用r!uname -a并回车后即可实现将内核版本信息写入文件

    读取内核版本写入到/data/passwd文件中
    读取内核版本写入到/data/passwd文件中

    写入内核版本信息成功
    写入成功

    vim编辑器的个性化定制

  • 相关阅读:
    一个简单而实用的JQ插件——lazyload.js图片延迟加载插件
    CSS预处理语言——less与sass的使用
    JQuery速成大法
    实现图片的循环滚动——JS的简单应用
    JS基础——循环很重要
    JS基础——入门必备
    做一个常规的banner图——负边距的使用、banner图的拼法
    网页侧边浮动条的实现
    如何做一个导航栏————浮动跟伪类(hover)事件的应用
    基于java代码的springmvc配置
  • 原文地址:https://www.cnblogs.com/ittimeline/p/13776468.html
Copyright © 2011-2022 走看看