欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux基础之文本编辑器vim大全

程序员文章站 2022-10-27 16:29:08
linux基础之vim编辑器 1、vim编辑器 基本介绍 vim编辑器的前身叫做vi。vi的英文名:Visual Interface。中文解释文本编辑器,你不应该用他去打开二进制可执行文件 文本编辑器种类 行编辑器 sed 全屏编辑器 nano vi vim:Vi IMproved 基本使用 vim ......

linux基础之vim编辑器

1、vim编辑器

基本介绍

  vim编辑器的前身叫做vivi的英文名:visual  interface。中文解释文本编辑器,你不应该用他去打开二进制可执行文件

文本编辑器种类

  行编辑器

    sed

  全屏编辑器

    nano

    vi

    vimvi  improved

      基本使用

        vim是一个模式化编辑器

        vim编辑器默认打开文件后是编辑模式或者命令模式

      vim的基本模式

        编辑模式、命令模式

        输入模式

        末行模式

        可视化模式

      基本介绍

        vim内建了很多子命令,即内置了命令行接口,可以通过打开末行模式来执行vim内置的命令

        vim打开文件的语法

            vim  [options]  [file ..]

            vim  [options] -

            vim  [options]  -t  tag

            vim  [options]  -q  [errorfile]

        常用选项

          +num:打开文件后,直接让光标处于第num行。如果只有加号,没有num表示打开文件处于文件的最后一行

            使用案例

              vim  +  /tmp/fstab

              vim  +10  /tmp/fstab

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

    vim模式转换

      编辑模式转换到输入模式,需要键入的符号

        i:英文名insert,在光标所在处前面输入

        a:英文名,append,在光标所在处后面输入

        o:在当前光标所在行的下面打开一个新行,并转换为输入模式

        i:在光标所在行的行首输入.如果光标处于不在行首,那么他会移动到行首并转换为输入模式

        a:在光标所在行的行尾输入.如果光标处于不在尾首,那么他会移动到行尾并转换为输入模式

        o:在当前光标所在行的上面打开一个新行,并转换为输入模式

        c

        c

      输入模式转换到编辑模式,需要键入的符号

        esc

      编辑模式转换到末行模式

        :

      末行模式转换到编辑模式

        一次esc,这个如果在末行模式输入有命令,那么键入一次esc不能快速回到编辑模式

        两次esc可以快速回到编辑模式

    关闭文件方式

      在末行模式下,键入命令

        不保存退出

          q:直接退出,不保存

          q!:强行退出

        保存退出

          wq:保存退出

          x:保存退出

          w  path:将当前文本内容另存到path这个路径下

      在编辑模式下,键入命令

        保存退出

          zz:保存退出

  vim中快速实现光标跳转

    字符间跳转

      h:向左跳一个字符

      j:向下跳一个字符

      k:向上跳一个字符

      l:向右跳一个字符

    一次跳过指定的字符

      num  h:向左跳num个字符

      num  k:向上跳num个字符

      num  j:向下num个字符

      num  l:向右跳num个字符

    单词间跳转

      w:跳转到后一个单词的词首

      e:跳转到当前或者后一个单词的词尾。如果当前光标不在当前光标所在单词的词尾时,跳转到当前光标所在单词的词尾;如果当前光标在当前光标所在单词的词尾,那么跳转到后一个单词的词尾

      b:跳转到前一个单词的词首,如果光标不在一个单词的词首时,跳转到当前光标所在单词的词首

    行首行尾跳转(编辑模式下)

      ^:跳转至行首的第一个非空白字符

      0:跳转到行首

      $:跳转至行尾

    行间移动(编辑模式下)

      num  g:跳转到第num

      g:跳转最后一行

      1g或者gg:跳转到第一行

    句间移动

      ):跳转到下一个句子

      (:跳转到前一个句子

    段落间移动

      }:跳转到后一个段落

      {:跳转到一个段落

  vim编辑命令

    字符编辑(末行模式下)

      字符的删除

        x:删除光标所在处的字符

        num  x:删除光标所在处向后num个字符

        d + 行间移动|句间移动|段落间移动|行首行尾移动|单词间移动:d键加上行间移动|句间移动|段落间移动|行首行尾移动|单词间移动的字符可以实现范围删除

          案例演示

            删除光标所在位置到下一个单词之间的字符

              键入d+w

            删除光标所在位置到行尾之间的字符

              键入d+$

            删除光标所在位置到行之间的字符

              键入d+0

            删除光标所在位置到下一段之间的字符

              键入d+}

      交换字符位置

        x + p:交换光标所在的字符和后边字符的位置

     行的删除(编辑模式下)

      dd:删除光标所在行

      num + dd:删除num

      dd:删除光标所在行,并且新建空白行到光标所在位置

        注意:删除的内容都保留到了一个缓冲区,如果要撤回,键入u

      粘贴命令(编辑模式下)

        p:(小写)英文名paste,缓存区如果为整行内容,则如果粘贴,那么粘贴到当前光标所在行的下面。如果不是整行,则粘贴到当前光标所在处的后边

        p:(大写p)。如果缓存区为整行,那么粘贴时粘贴到当前光标所在行的上面行。如果不为整行,那么粘贴到光标所在处的前面

        num + p 或者num + p:一次性粘贴多次

      复制命令(编辑模式下)

        y + 行间移动|句间移动|段落间移动|行首行尾移动|单词间移动:y键加上行间移动|句间移动|段落间移动|行首行尾移动|单词间移动的字符可以实现范围复制

          使用案例

            复制光标所在处到光标所在行的行尾之间的字符

              y+$

            复制光标所在处到光标所在行的行之间的字符

              y+0

            复制光标所在处到光标所在单词的后一个单词之间的字符

              y+e

            yy:复制整行(复制的是单行)

              num + yy:复制num

      改变命令(编辑模式)

        c + 行间移动|句间移动|段落间移动|行首行尾移动|单词间移动:c键加上行间移动|句间移动|段落间移动|行首行尾移动|单词间移动的字符可以实现范围删除,并且从编辑模式进入输入模式

          使用案例

            删除光标所在处到光标所在行的行尾之间的字符

              c+$

            删除光标所在处到光标所在行的行之间的字符

              c+0

            删除光标所在处到光标所在单词的后一个单词之间的字符

              c+e

          cc删除整行(复制的是单行)并且从编辑模式进入输入模式

          num + cc:删除num,并且从编辑模式进入输入模式

      替换命令(编辑模式下)

        r char:替换光标所在处的字符

        num + r+ char:将光标所在位置向后指定num个字符全部替换成char字符

          使用案例

            将光标所在位置向后10个字符全部替换成a字符

              10  + r + a

      撤销命令

        u:英文名undo,撤销此前的操作

        num + u:撤销num次操作

        ctrl+r:撤销以后后悔了,这个命令是为了执行撤销的撤销操作

        重复前一个编辑操作

          .(点号)

  可视化模式

    在编辑模式下按小写或者大写v键可以进入可视化模式

      v:(小写),可以使用方向键选中我们要的内容

      v:(大写)。可以使用方向键选中我们要的内容

        小写和大写v的区别

          小写v当我们使用方位键时不会整行整行的选中,而大写v则会整行整行的选中

    通过可视化模式选中的内容可以结合编辑模式下的任何命令,比如:替换命令、复制命令、删除命令等进行一些操作

      使用案例

        进入可视化模式,选中一部分内容进行复制

          v+方位键+y

    vim实现翻屏操作

      ctrl+f:项文件的尾部翻一屏

      ctrl+b:项文件的首部翻一屏

      ctrl+d:向文件的尾部翻半屏

      ctrl+u:项文件的首部翻半屏

    vim自带的练习教程

      vimtutor命令

 

  vim末行模式

    vim内建了命令行模式,它具有的功能如下

    地址定界

      start_posend_pos:表示第start_pos行到end_pos行的内容

      start_pos:表示第start_pos

      start_pos+num:表示从第start_pos行开始向后多加num行之间内容

        使用案例

          表示是删除第一行向后再输20行的内容

            :1,+20d

      .(点号):表示当前行

      $:表示最后一行

      %:表示全文,相当于1,$

      start_posend_pos - num:表示从第start_pos行开始到end_pos行的前num行,也就是到了end_pos行后向前走num行,即end_pos行减num

      /pattern1/,/pattern2/:从第一次被pattern1模式匹配到的行开始,一直到第一次被pattern2匹配到的行结束之间的行

        使用案例

          第一次匹配name所在的行开始,到最后一行结束,之间的行的内容

            /name/,$

          第一匹配go.*g$所在行开始,到第一次匹配na.*一行作为结束。之间的行的内容

            /go.*g$/,/na.*/

      vim的地址定界后边可以接任何编辑模式下的命令。

        使用案例

          第一匹配go.*g$所在行开始,到第一次匹配na.*一行作为结束。删除之间的行的内容

            /go.*g$/,/na.*/d

          第一次匹配name所在的行开始,到最后一行结束,拷贝之间的行的内容

            /name/,$y

          第一次匹配name所在的行开始,到最后一行结束,另存之间的行的内容/tmp/name.txt这个文件中

            使用案例

              /name/,$w  /tmp/name.txt

    将鼠标放入一个位置,然后在末行模式下输入:

      r  path:表示在光标所在位置插入指定路径下的文件内容

      num +r  path:表示在100行插入指定路径下的文件内容

        使用案例

          :100r  /etc/fstab

          :r  /etc/issue

    vim的查找命令(末行模式下)

      /pattern:从当前光标所在处向文件尾部进行查找

      ?pattern:从当前光标所在处向文件首部查找

        使用注意

          当匹配到多个时,要想后跳一个匹配的使用下面的按键

            n:小写,同方向跳

            n:大写,反方向跳

    vim的替换操作(末行模式下)

      s:在末行模式先完成的替换操作

      替换操作的语法

        s/要查找内容/替换为的内容/修饰符

          要查找的内容

            可以使用模式匹配(默认使用的是基本模式)

          要替换的内容

            不可以使用模式,但是可以使用\1\2\3..等返向引用符号。还可以使用&符号引用前面查找时查找到的整个内容

          修饰符

            i:表示忽略大小写

            g:表示全局替换。默认情况下,每行只替换第一次出现被匹配到的内容

            使用注意:

              替换操作需要结合vim的地址定界符使用,表示在那个范围内容完成搜索替换操作。替换时,如果有些具有特定意义的字符需要转义

              查找替换的分割符可以使用其他字符,比如@#

    使用案例

        将光标所在位置开始到最后一行之间的内容,把匹配模式为r..t的单词替换成root,并且是全局匹配

            .,$s/\<r..t\>/root/g

 

        全文匹配,把匹配模式为r..t的单词替换成root,并且是全局匹配

          %s/\<r..t\>/root/g

    vim的末行模式也有命令历史的功能

    问题

      1、复制/etc/grub2.cfg/tmp下,用查询替换操作删除/tmp/grub.cfg文件中的行首为空白的字符

          :.,$s/^[[:space:]]\+//

      2、复制/etc/rc.d/init.d/functions文件至/tmp下。用查询替换操作为/tmp/functions文件的每行开头为空白字符的行的行首添加一个#

          :%s/^[[:space:]]\+/#&/

 

   vim的多文件模式

    基本介绍

      vim可以同时打开多个文件

    基本语法

      vim  [file1[file2[file3.......]]

    使用注意

      vim可以同时打开多个文件,但是默认显示的是第一个文件,如果想切换到另一个文件显示的换,可以进入末行模式,输入next命令。如果到了最后一个文件,可以使用first命令,回到第一个文件显示。同时也可以使用prev命令看前一个文件;last命令看最后一个文件

当我们同时修改了两个文件时,需要一起保存,那么可以在末行模式下输入wall命令,退出所有文件使用qall命令。当然你也可以在末行模式下一个一个的保存然后在退出

 

   vim中的窗口分割模式

    基本介绍

      我们可以将多个文件在同一个屏幕显示,那么需要使用到vim提供的窗口分割模式的功能

    基本语法

      vim  [options...]  file1[ file2[ .....]]

      常用选项

        -o:将多个文件水平分割显示在屏幕上

        -o:将多个文件垂直分割显示在屏幕上

      使用注意

          虽然我们窗口被分割成多个,但是鼠标只有一个,那么就需要在多个分割窗口进行切换

    在窗口间进行切换的命令

      ctrl + w + 上下左右箭头

        如果是水平分割,那么就可以使用   ctrl+w+左右箭头

        如果是垂直分割,那么就可以使用   ctrl+w+上下箭头

 

    vim单文件窗口分割

      基本介绍

         我们可以将一个大文件分割成多个窗口显示,这时候就会利用到vim提供的vim单文件窗口分割

      基本使用

        打开文件后使用命令将文件分隔成多个窗口显示,多个窗口间可以相互做一些编辑操作(拷贝、删除、替换、修改等操作)

          ctrl+w+s:将单个文件水平分割

          ctrl+w+v:将单个文件垂直分割

          使用注意

            ctrl+w一起按,然后松开按s或者v键,否则屏幕会被锁住,如果被锁住,使用ctrl+q命令解锁。因为ctrl+s是锁住终端命令

2、定制vim的工作特性

基本介绍

  vim也有自己的配置文件。配置文件定义的vim特性是永久有效,但是如果在末行模式下定制的vim特性,只有在当前vim进程有效,vim进程关闭就无效了,还原为原来的状态

  全局配置文件

    /etc/vimrc

  个人配置文件

    ~/.vimrc   

  vim常定制特性(在末行模式下)

    set  number   简写set  nu   显示行号

    set  nonumber   简写 set  nonu   关闭行号显示

    set   showmatch   简写set  sm    开启括号匹配高亮,当鼠标在左括号,那么右括号被高亮

    set   autoindent     简写  set   ai    开启自动缩进

    set   noai   关闭自动缩进

    set   hlsearch    开启搜索高亮显示

    set   nohlsearch    关闭搜索高亮显示

    syntax  on   开启语法高亮

    syntax   off   关闭语法高亮

    set   ic   忽略字符大小写

    set   noic   不忽略字符大小写

使用注意

  如果你想在个人下配置vim特性,并且是让他永久有效,那么实在家目录向创建一个~/.vimrc配置文件。这个文件默认是不存在的,需要用户自己创建。然后把vim的特性写入这个文件中