• vim编辑器的使用和常用技巧


    vim编辑器的使用和常用技巧

    vim编辑器的介绍

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

    如果想要了解系统上是否已经安装了vim,只需要在终端上输入vim即可,如果安装系统时选择最小化安装,默认vim是没有安装的。
    如果终端上能输出vim版本相关的信息,那么就表示系统中已经安装了vim编辑器。退出vim编辑器按:q然后回车即可。
    vim
    如果想要了解vim的安装路径,可以使用which命令查看。

    [root@ittimeline ~]# which vim
    /usr/bin/vim

    vim是由 vim-enhanced-7.4.629-6.el7.x86_64 包安装的,可以通过rpm -qf来查询

    [root@ittimeline ~]# rpm -qf /usr/bin/vim
    vim-enhanced-7.4.629-6.el7.x86_64

    在执行rpm -qf时,还可以将which vim命令的执行结果作为rpm -qf命令的参数

    [root@ittimeline ~]# rpm -qf `which vim`
    vim-enhanced-7.4.629-6.el7.x86_64

    和vim编辑器类似的编辑器还有vi编辑器,它们两者不是同一个软件包,vim是vi(Visual Interface)的加强版。
    vi和vim最大的区别就是可以语法加亮,在编辑文本时会给文本增加颜色(和路径相关)。vim完全兼容vi。

    查看vi的软件包

    [root@ittimeline ~]# rpm -qf `which vi`
    vim-minimal-7.4.629-6.el7.x86_64

    vim编辑器的基本使用

    vim命令的使用方式是 vim [选项] 文件...,其中比较常用的选项有+#和+/pattern。

    +#:打开文件后,让光标处于第#行的行首,+默认行尾。

    使用vim编辑/root/anaconda-ks.cfg文件,此时光标定位在第十行

    [root@ittimeline ~]# vim +10 anaconda-ks.cfg 

    此时光标默认是选中的第十行
    anaconda-ks.cfg

    vi是不支持该选项(+#)

    +/pattern:打开文件后,直接让光标处于第一个被PATTERN匹配到行的行首。

    使用vim编辑/etc/passwd文件,然后让光标指向/etc/passwd文件中以bin开头的行

    [root@ittimeline ~]# vim +/^bin /etc/passwd

    此时光标定位在bin开头的行
    定位到bin开头的行

    使用vim编辑/etc/passwd文件,然后让光标指向/etc/passwd文件中包含FTP的行

      root@ittimeline ~]# vim +/FTP /etc/passwd

    搜索包含FTP所在的行
    搜索包含FTP所在的行

    在使用vim编辑器打开文件时,如果不想修改文件,可以使用vim -m file 只读的方式打开文件。

    [root@ittimeline ~]# vim -m /etc/passwd

    当使用只读模式修改文件时,如果尝试保存文件,此时vim会提示写入被‘write’选项禁用
    只读模式修改文件

    当使用vim 打开文件时如果文件存在则会正常打开,如果不存在则会提示新创建文件。

    [root@ittimeline ~]# vim guanglei.txt

    此时vim会创建guanglei.txt
    guanglei.txt

    如果想要使用vim编辑器同时打开多个文件,可以使用vim -O file1 file2,当执行该命令时左右两边同时打开窗口。
    使用ctrl+w在两个文本之间切换。

    [root@ittimeline ~]# vim -O /etc/passwd /etc/hosts

    vim同时打开多个文件
    vim同时打开多个文件

    想要退出使用:qa可以同时退出两个文件。

    如果想要比较多个文件的差异,可以使用命令vim -d file1 file2 ...来实现。

    [root@ittimeline ~]# vim -d /etc/fstab  /etc/issue

    此时会同时开启来两个文本编辑的窗口,如果想要在左右两边窗口切换,可以先按快捷键Ctrl+w 松手后再按方向键左或者右来切换窗口。
    比较文件差异

    vim编辑器的模式使用

    vim的三种模式以及切换

    vim编辑器有三种模式,分别是命令行模式(command mode)、编辑模式(edit mode)、扩展模式(extended command mode)
    命令模式是默认模式,主要用于查看文件、移动光标、剪切、粘贴文本,无法输入内容
    编辑模式主要用于修改文本
    扩展模式主要用于保存退出(:wq)、未修改退出(:q)、强行退出(:q!)等等。

    ESC键总是用于退出当前模式,两次ESC键总是返回命令模式。

    vim编辑器的三种模式
    vim编辑器的三种模式

    • a、A、o、O、i、I都是可以从命令模式切换成编辑模式
      i:表示在当前字符之前插入(光标前)
      光标之前插入
      I表示在行首插入
      在行首插入
      a表示在当前字符之后插入(光标后)
      当前字符之后插入
      A表示在行尾插入
      行尾插入
      o:表示下一行插入(另起一行)
      新起一行插入
      O表示上一行插入
    • 冒号(:) 进入扩展命令行模式
    • ctrl+v 进入可视块模式

    编辑模式按ESC由编辑模式进入到命令模式,扩展命令行模式按ESC进入命令模式。编辑模式没法直接进入扩展命令模式

    vim编辑器的命令模式

    vim编辑器的使用流程

    [root@ittimeline ~]# vim /etc/passwd

    首次编辑文件时,默认是命令模式
    命令模式

    vim编辑器的命令模式中常用的命令

    x表示删除光标处的一个字符
    X表示删除光标前的一个字符
    u表示撤销一步骤,每按一次就撤销一次
    #x表示删除光标处起始位置的#个字符
    ~表示转换大小写
    J表示删除当前行后的换行符
    r表示替换一个字符

    ZZ表示保存退出
    ZQ表示不保存退出
    hjkl 分别表示光标定位的左下上右,也可以使用方向键上下左右实现
    0或者home键表示切换到行首,$或者end键表示切换到行尾。
    H表示当前屏幕的第一行的行首,L表示当前屏幕最后一行的行首,M表示当前屏幕中间一行的行首。
    gg表示快速定位到文档的首行 G表示定位到文档的末行
    #gg表示快速定位到第#行
    /keyword 查找指定的关键字,如果内容比较多,还可以通过N和n实现向上向下查找,并且vim会对查找的内容进行高亮显示

    关键字查找
    关键字查找

    取消使用:noh 就可以取消高亮显示
    取消查找

    vim编辑器的编辑模式

    如果想要进入编辑模式,使用(a、A、o、O、i、I)键就可以从命令模式切换到编辑模式,编辑完成后如果想要从编辑模式切换成命令模式输入esc退出编辑模式,然后输入冒号(:)即可进入命令模式。
    在vim编辑器的编辑模式中有一些常用的命令

    x表示向后删除一个字符串,等同于delete
    X表示向前删除一个字符
    u表示表示撤销一步,每按一次就撤销一次
    r表示替换一个字符

    vim命令模式下对文本编辑

    复制操作:vim编辑器的命令模式下y键表示对单个字符进行复制,以字符为单位,如果要复制整行,用yy(以行为单位),如果想要复制N行,使用Nyy,比如2yy表示复制2行。粘贴使用p键
    复制/etc/passwd文件的最后一行,然后粘贴
    f复制一行并粘贴
    删除操作: vim编辑器的命令模式下dd表示删除当前光标所在行,如果想要删除N行,那就要使用Ndd,例如2dd表示删除2行。
    删除指定的行
    粘贴操作:vim编辑器的命令模式下p表示粘贴复制的内容
    剪切操作:vim编辑器的命令模式下dd还能表示剪切,然后使用p能粘贴剪切的内容。
    x能删除光标所在位置的字符
    D能从光标处删除到行尾。
    u是撤销操作。
    Ctrl+r还原撤销的操作,将做过的撤销操作再还原回去。

    vim编辑器的可视块模式

    vim编辑器从命令模式通过ctrl+v切换到可视块模式。可视块模式最典型的应用场景就是实现多行注释

    还是以/etc/passwd文件为例

    [root@ittimeline ~]# vim  /etc/passwd

    首先通过ctrl+v进入可视块模式
    可视块模式

    然后光标向上移动,选中倒数五行
    向上移动

    然后按I键进入插入模式,然后输入#(#表示注释)稍等片刻并按ESC退出可视块模式 即可注释倒数5行内容
    注释5行内容

    如果想要取消之前注释的五行内容,只需要通过ctrl+v进入可视块模式,然后向上移动光标选中五行,然后按d即可删除注释
    删除注释

    vim编辑器的扩展命令模式

    文件编辑修改完成后如果需要保存退出,此时需要从编辑模式切换到扩展命令模式,而扩展模式通过冒号(:)就可以切换,切换成扩展模式后通常会输入wq表示存储修改文件的内容并退出vim编辑器。
    如果文件是只读文件,必须是root用户操作,可以使用wq!强制保存退出。
    例如/etc/shadow文件是只读文件,如果想要强制修改并保存就要使用wq!

    [root@ittimeline ~]# ll /etc/shadow
    ----------. 1 root root 1247 6月  27 16:23 /etc/shadow
    [root@ittimeline ~]# vim /etc/shadow

    当使用vim编辑/etc/shadow文件时vim会提示修改的是一个只读文件
    shadow
    将root改成tony后使用wq!强制保存退出
    将root改成tony

    如果不想保存文件内容并退出vim文件,可以使用q!强制退出,放弃对文件的修改。
    如果使用vim编辑模式未修改文件,可以直接使用q退出。

    写磁盘退出
    写磁盘
    写入磁盘的内容
    写入磁盘的内容
    强制退出
    强制退出
    文件未被修改
    未做修改

    在vim编辑器的扩展模式中可以使用r filename 将指定的文件内容读取到当前修改的文件中

    将/etc/issue文件读取到/etc/passwd文件中
    首先查看/etc/issue文件的内容

    [root@ittimeline ~]# cat /etc/issue
    S
    Kernel 
     on an m
    

    然后使用vim编辑/etc/passwd文件

    [root@ittimeline ~]# vim /etc/passwd

    此时vim处于命令模式,使用快捷键END跳转到文件的末尾并回车后,按冒号进入扩展命令模式
    扩展命名模式
    然后输入 r /etc/isuse后回车
    r /etc/isuse

    此时/etc/issue文件的内容复制到了/etc/passwd文件中
    复制文件内容

    vim编辑器的扩展模式中。可以通过w filename命令 将当前文件的内容写入到另外一个文件中

    将/etc/passwd更改的内容写入到/etc/copy_passwd文件中

                                                                                                                                     
    :w /etc/copy_passwd

    copy_passwd
    copy_passwd

    查看copy_passwd文件信息

    [root@ittimeline ~]# ls -l /etc|grep copy_passwd
    -rw-r--r--.  1 root root     2275 6月  27 12:48 copy_passwd

    在vim编辑器的扩展命令模式中,如果想要执行其他的命令,可以使用!command 来执行。执行完成后回车就又可以进入编辑模式

    在修改/etc/passwd文件时查看当前文件路径
    pwd

    在修改/etc/passwd文件时查看系统版本信息
    uname -a

    在vim编辑器的扩展命令模式中,如果想要执行其他的命令,并将命令的执行结果写入编辑的文件中,可以使用r!command 实现。

    例如将whoami执行的结果写入到/etc/passwd文件中
    r!whoami
    r!whoami执行完成后会将root写入到/etc/passwd文件中
    root

    vim编辑器的扩展命令模式实现文本替换

    实现/etc/passwd文件中替换第一行到第三行出现第一个bin就替换成ittimeline
    替换之前
    替换之前
    替换之后
    替换之后

    如果想要将第一行到第三行中的bin替换为ittimeline,只需要加/g即可,/g表示全部替换
    替换之前
    替换之前
    替换之后
    替换之后

    如果把1,3换成3则会替换第三行的内容。

    将文本中第三行的bin替换成ittimleine

    :3 s/bin/ittimeline

    如果想要全文匹配,就可以改成%。

    将文本中所有的bin替换成ittimleine

    :%s/bin/ittimeline

    如果在替换时不需要区分大小写,可以在/g后面跟个i。

    将文本中所有的bin替换成ittimleine,并忽略bin的大小写

    :%s/bin/ittimeline/gi

    vim编辑器的个性化定制

    在扩展命令编辑模式中可以通过:set nu来设置行号
    设置行号
    如果想要取消行号,通过:set nonu 来取消设置行号。
    也可以通过:noh 取消高亮显示。

    需要主要的是:set nu,:set nonu和:noh都是临时的,如果想要永久生效,可以修改/etc/vimrc或者是/.vimrc文件,二者的区别是/etc/vimrc会影响所有的用户,而/.vimrc只会影响当前用户,如果没有该文件则自己新建一个。

    [root@ittimeline ~]# vim .vimrc

    然后编辑内容set nu保存后退出

    查看.vimrc的文件内容

    [root@ittimeline ~]# cat /root/.vimrc 
    set nu

    当再次使用vim编辑/etc/passwd文件时会看到行号的效果
    set nu

  • 相关阅读:
    java8
    java7
    java6
    java5
    java复习4
    学习笔记
    Reflection笔记
    通过Reflection来获得方法和信息
    學習反射2
    學習反射1
  • 原文地址:https://www.cnblogs.com/ittimeline/p/13199167.html
Copyright © 2020-2023  润新知