zoukankan      html  css  js  c++  java
  • 11 vim文本编辑器

      和sed相比,sed为字处理器(行编辑器),将文本逐行放入到模式空间(也就是内存)中进行处理,并显示在屏幕上。而vim、vi以及nano都是全屏文本编辑器,而vim则是vi的加强版本,相对于vi,vim则拥有特殊字符着色的功能,也是最为常用的功能;

      本节我们重点介绍vim编辑器的常见用法;

    vim文本编辑器详解

      *Linux系统的核心就是通过文本来存储所有的软件配置文件*,所以,能够熟练的掌握文本编辑器对于学习Linux系统而言是至关重要的。

      vim编辑器作为vi编辑器的升级版,它将伴随我们学习Linux系统的整个过程!

      vi:Visual interface可视化接口;

      vim:VI iMproved vi的增强版;【vim编辑器实现是语法自动着色,方便我们判断自己缩写的语句是否正确】

    vim的模式

      vim编辑器分为三种模式(这点和vi编辑器相同),编辑模式(命令模式),输入模式,末行模式

      在我们通过vim进入文本的时候,默认处于编辑模式。

      模式切换:

        编辑模式 -> 输入模式

          i  在当前光标所在字符的前面,进入输入模式;

            a  在当前光标所在字符的后面,进入输入模式;

          o  在当前光标所在行的下面重启一行,进入输入模式;

          I  在当前光标所在行的行首,进入到输入模式(自动将光标移动到当前行行首);

          A  在当前光标所在行的行尾,进入到输入模式(自动将光标移动到当前行行尾);

          O  在光标所在字符的上一行,转换为输入模式(和 o 正好相反);

        输入模式 -> 编辑模式

          ESC键

        编辑模式 ->末行模式

          输入 “:” 即可

          在输入模式下可以关联vim的相关命令对文本进行编辑,或者切换光标位置:

          例如:5d  #删除第5行

               10,20d  #删除第10行到20行,总共删除11行

               set nu  #显示行号

               ! ls /etc  #在vim下关联shell命令

          【以上操作都是我们比较常用的操作】

       末行模式 -> 编辑模式

          ESC键

       【三种模式之间的切换要注意一点:输入模式不能和末行模式之间直接切换,必须通过编辑模式来进行切换!】

        模式切换总结如下图:

    vim下的常见操作

    一、文本打开方式

      首先  vim /path/FILE  可以直接打开文件;

      特殊使用方式:

        vim +数字 /path/FILE  可以打开文件,且直接将光标定义在数值指定的行;

        vim + /path/FILE  打开文件,将光标处在文件的末尾;

        vim +/string /path/FILE  打开文件,且将光标定义在string字符串处,类似于查找功能;

    二、文本关闭方式

      1、常见关闭文本都是在末行模式下进行

        :q  表示退出文本,不保存;

        :wq  保存并退出文本;

        :q!  如果修改了文本,不想保存,则通过 :q! 来强制退出文本;

        :w  只保存,不退出文本;

        :w!  强制保存文本,这个权限只有管理员root才拥有;

      2、在编辑模式(命令模式)下退出文本

        ctrl+z  退出文本,但是不保存

        ZZ  保存并退出文本

    三、光标移动

      注意:以下操作均处于编辑模式(命令模式)下运行;

      1、逐字符的移动光标:

        j 下

        k 上

        h 左

        l 右

        【这个“上下左右”要更加好于键盘的“上下左右”,它更加的方便】

        结合数字来使用,既可以同时移动多行,例如:5j  向下移动5行;6l  向右移动6个字符;

      2、按照单词为单位来移动光标

        w  光标处于单词首部,以单词为单位向后移动

        e  光标处于单词尾部,以单词为单位向后移动

        b  光标处于单词首部,以单词为单位向前移动

        同理,可以结合数字来使用:5e  向后移动5个单词位;10b  向前移动10个单词位;

      3、行内跳转

        0  表示跳转到行首(不包含制表符)

        ^  表示跳转到绝对的行首

        $  表示跳转到行尾

      4、行间跳转

        数字G  指定跳转到那个固定行,例如:5G  表示跳转到第5行;

        G  如果不加数字,则是直接跳转到最后一行;

        【末行模式下,也可以进行行间跳转;例如: “:5” 表示跳转到第5行;】

    四、翻屏

      编辑模式下:

      ctrl+f  向下翻一屏

      ctrl+b  向上翻一屏

      ctrl+d  向下翻半屏

      ctrl+u  向上翻半屏

    五、删除操作

      删除单个字符

        x  删除光标所处的单个字符;

        数字x  和之前移动光标原理相同,可以删除“数字”个字符;例如:5x  删除5个字符;

      删除命令--d

        dw  删除光标所在的那个单词;

        数字dw  删除“数字”个单词,从当前光标开始算起;

        dd  删除当前行;

        【在末行模式下,可以删除多行“:StartADD,EndADDd”删除startadd到endadd行;这里记住一个特殊符号:. (点,表示当前行),例如: :.,$-3d  这表示删除当前行到倒数第4行之间的所有内容;如果说要删除删除当前行到向下数十行的内容呢? :.,+10d 其中,+ 号表示向下多少行的意思,+多少,就是向下多少行】

        【vim下删除内容的时候要注意:删除的内容不会被立刻清除,还可以恢复删除的内容,最近一次删除的内容可以复制或者剪切到其他的地方,通过p命令粘贴到别的地方】

    六、复制--y

      复制的用法基本与删除用法相同

      其中  yy  复制当前行使用最为多;

      数字y  表示复制从当前光标单词算起,复制多少个单词;5y  复制5个单词;

    七、粘贴--p和P

      P:如果删除或复制的内容为整行的内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行内容,则粘贴在光标的前方;

      p:如果删除或复制的内容为整行的内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行内容,则粘贴在光标的后方;

    八、修改--c

      先删除掉内容,再转换为输入模式:

      cc  删除当前行后,直接进入输入模式进行编辑;

      c$  删除当前光标到末行的内容,在直接转入到输入模式进行编辑;

      【cc 和 c$ 是比较常见的两种用法】

    九、替换--r

      替换操作一般用于单个字符的操作:

      r字符或数字  将光标所在字符替换为输入的字符或数字;

    十、撤销--u

      u  撤销前一次的操作,连续桥u命令,则是撤销此前的n次操作;默认情况下最多撤销前50次操作;

      数字u  直接撤销前“数字”次操作;例如,5u  撤销前5次的操作;

      【取消最近一次撤销的操作则为 ctrl+r】

    十一、重复前一次的操作--.

      .  (点)这个符号就表示重复上一次的编辑操作

      例如:dd  删除了当前行,此时一致敲 . 则表示重复 dd 的命令;

    十二、可视化模式(标记内容)--v和V

      进入可是化模式,通过移动光标来选择要编辑的内容;

      v  表示按照字符来选取内容

      V  表示按照行来选取内容

      选择了对应的内容以后,再进行复制,删除等等操作;

    十三、查找,以及查找并替换

      查找:

        这个内容则和less命令的类似,就不在多说

      /PATTERN 从前面往后面找
      ?PATTERN 从后面往前面找
      【支持正则表达式】
      n 下一个
      N 上一个

      查找并替换:

        查找到对应的内容后,可以进行替换操作,这里和sed名的格式有点类似:

        ADDR1,ADDR2s@pattedn@string@gi  #其中ADDR1,ADDR2表示要替换的范围,s可以理解为sed命令,pattern选择出要替换的字符串,替换为后面的string,最后g表示全局替换,而i则表示不区分大小写

        例如: :.,$-1s@he@HE@g  #从当前行到倒数第二行,中的he全部替换为HE

        【1,$表示全文范围,也可以通过%来表示全文范围】

      练习:将/etc/yum.repos.d/server.rpo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum

      vim /etc/yum.repos.d/server.rpo

      :%s@ftp://inistructor.example.com/pub@http://172.16.0.1/yum@g

    十四、同时编辑多个文件

      vim是可以支持跨文件编辑的(例如,将file1中的内容复制粘贴到file2中去)

      vim FILE1 FILE2 FIEL3  #在vim后面接上多个文件的时候,实际上是打开了FILE1,FILE2,FILE3三个文件,但是显示只显示了FILE1的内容。

      在末行模式下:

        :next  切换到FILE2或后者其他文件

        :prev  切回到FILE1或则前面的文件

        :last  切换到最后一个文件

        :first  切换到第一个文件

        :q  只能退出当前文件,如果想退出所有文件,则需要使用

        :qa  退出所有文件

    十五、分屏显示同一个文件--ctrl+w [s|v] 或者 -[o|O]

      上面我们说到了同时打开多个文件,但是不在同一个屏幕上面显示,如何才能让屏幕同时显示多个文件呢?

      ctrl+w松开后,再按s  水平分割窗口  

        vim -o FILE1 FILE2

      ctrl+w松开后,再按v  垂直分割窗口  

        vim -O FILE1 FILE2  

      ctrl+w松开后,再按w或是小键盘上下左右  切换光标所在文件

    十六、将当前文件中部分内容另存到另外一个文件中--w

      在末行模式下进行操作:

      例如: :.,+5w /path/somefile  #保存当前文件光标所在行,到接下来5行的内容保存到另外一个/path/somefile文件中去;

    十七、将另外一个文件的内容填充到当前文件中--r

      在末行模式下进行操作:

      例如: :r /etc/inittab  #将/etc/inittab文件的内容填充到当前文件光标所在的地方;

    十九、调用shell脚本程序(调用命令)--!

      在末行模式下进行操作:

      例如: :! ls /etc  #这样就可以直接在vim编辑器中去运行ls /etc的命令;

    二十、高级操作

      1、显示或取消行号

        :set number  也就是简写为 :set nu

        :set nonu  取消行号

        【默认情况下是没有行号的,我们所如果想默认进来就看到行号,就必须去修改vim的配置文件】

      2、是否忽略大小写

        :set ignorecase  也就是简写为 :set ic

        :set noignorecase

      3、设置自动缩进功能

        默认情况下回车后是没有缩进的

        :set autoindent  也就是简写为 :set ai 

        :set nohlsearch

      4、查找到的文本的高亮显示与取消

        语言着色功能,默认开启(也叫做高亮显示)

        :set hlsearch

        :set nohlsearch  #关闭高亮显示

      5、语法着色功能(vim默认开启)

        :syntax on

        :syntax off  #关闭语法着色功能

    二十一、vim的配置文件

      /etc/vimrc  #为所有shell下的主配置文件,修改这里的配置文件,则在所有bash程序下生效;

      ~/.vimrc  #各个用户的家目录下去编辑这个文件(没有的可以自己创建),则只在本bash进程下,对vim的编辑才生效

    vim导师(vim的帮助文件)

      vimtutor  #vim编辑器的教程,这里有心的朋友可以自己慢慢去看;

    vim编辑文件时非法退出时遇到的问题

      如果在你编辑文件的时候,突然关闭了该shell程序,并不是通过 :q 或者 ZZ 正常退出的文件,则会在当前被编辑文件的同一个目录下生成  .swp  的隐藏文件文件;

      当你再次想编辑这个文件时候则提示如下:

      这里提示您上次在 dated 时间的时候进行过编辑,您是否继续编辑;

      O表示打开该文件,但是只读,E表示编辑这个文件,R表示覆盖这个文件重新编辑,D则是删除上次编辑的内容,重新再进行编辑,A则是表示退出并终止;

      此时,我们只需要按E进去正常保存,这样我们之前编辑的内容就不会丢失,再删除掉  .swp 的隐藏文件即可;

  • 相关阅读:
    从零开始写一个Tomcat(贰)--建立动态服务器
    从零开始写一个Tomcat(壹)
    struts2,hibernate,spring整合笔记(4)--struts与spring的整合
    struts2,hibernate,spring整合笔记(3)
    struts2,hibernate,spring整合笔记(2)
    struts2,hibernate,spring整合笔记(1)
    ANSYS018.1案例 三维冷热水混合器流体仿真
    详细分析小米抢购软件的实现步骤
    12306改版之后简单抢票软件的实现(二)完结
    12306改版之后简单抢票软件的实现
  • 原文地址:https://www.cnblogs.com/BurnovBlog/p/10402159.html
Copyright © 2011-2022 走看看