文本编辑器-vim

vim编辑器

文本编辑种类

  行编辑器: sed

  全屏编辑器:  nano, vi

  vi:  Visual Interface

  vim:  VI improved  vi增强

   

模式化的编辑器: vim

  vim自带教程

    命令:vimtutor

  基本模式:

    编辑模式, 命令模式

    输入模式:

    末行模式:

      vim内置有命令行接口

  vim [options] [filelist]

    选项:

      + #:  表示打开后直接处在第#行

      +/{pat} , 打开文件后 ,光标处于第一个正则匹配的地方

  模式转换:

    命令模式 -> 输入模式

      i:  insert, 在光标所在处输入

      a: append,  在光标所在处后输入

      -o:  在光标所在新开一行输入

      -I:  在光标所在行的行首输入

      -A: 在光标所在行的行末输入

      -O:  在光标所在行的上一行新开一行输入

    输入模式/末行模式 ->  命令模式

      ESC

    命令模式  ->  末行模式

      :

  关闭文件:

    ZZ:  保存并退出

    :q  退出

    :q!  不保存强制退出

    :wq  保存修改并退出

      此处可以分开执行

    :x  保存并退出

    :w  PATH  另存为

命令模式

   光标的移动

    字符间跳转

      h:  向左跳转一个字符

      l:  向右跳转一个字符

      j:  向下跳转

      k  向上跳转

        这些命令前面都可以跟上一个数字表示 向(上/下/左/右)跳转#个字符

    单词间跳转

      w:  下一个单词的词首

      b: 上一个单词的词首

      e: 当前或后一个单词的词尾

        这些命令前面都可以跟上一个数字表示 向(左右)跳转#个单词

    行首行尾跳转

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

      0:  跳转到行首

      $:  跳转到行尾

    跳转一个字符

      #G:  跳转到#行,  100G, 跳转到100行

      1G,  gg,  跳转到第一行

      G:  跳转到最后一行

    句间跳转

      ( : 上一句

      ):  下一句

    段间跳转    

      {: 上一个段落

      }:  下一个段落

  翻屏

    Ctrl+f:  向文件尾部翻一屏  forward

    Ctrl+b:  向文件首部翻一屏  back

    Ctrl+d:  向文件尾部翻半屏  down

    Ctrl+u:  向文件首部翻半屏  up

  vim的编辑命令:

    字符编辑

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

      #x:  删除光标所在处起始的向后#个字符

      xp:  交换光标所在处的字符及其后面的字符的位置,  此处可以分开来理解

      X: 删除光标所在处前一个字符

      #X:  删除光标所在处前#号个字符,  # 号的作用基本都一样

    替换命令

      r: 替换所在处的字符

    删除命令

      d:  删除命令, 可结合光标跳转字符,  实现范围删除

        d0:  删除当前光标之前到行首的位置

        dw:  删除当前光标之后的一个单词的位置

        db:  删除当前光标之前的一个单词的位置

        de:  删除光标后词尾

        d$: 删除当时前光标到行尾的位置

        d[#][hjkl]:  删除上下左右n行, 根据当前光标位置

        dd:  删除光标所在处的行

          #dd:  删除光标所在处的共#行

        以上这些删除的命令都会保存在缓冲区

    粘贴命令

      p:  缓冲区的内容如果为一整行,  则粘贴在当前光标所在处的下一行, 如果不是整行, 则粘贴在当前光标所在处的后面

      P:  p:  缓冲区的内容如果为一整行,  则粘贴在当前光标所在处的上一行, 如果不是整行, 则粘贴在当前光标所在处的前面

    复制命令(yank, y)

       y:  复制,  工作行为类似于d        

         y$

         y^

         y0

         ye, yw, yb

         yy

          # yy

    改变命令(change, c):

      命令模式 -> 输入模式, 实现删除模式,  相当于d命令, 并且直接进入输入模式, 相当于d和i命令的结合

        cc  #cc... 

     可视化模式

      v:  按字符选定

      V:  按行选定

      结合编辑命令选定(w, e, b...)

    撤销操作:

      u:  (undo)  撤销此前的操作

        #u:  撤销此前的#次操作

      Ctrl+r:  (recover)  恢复撤销的操作

    重复执行前一个操作:

      .  点号

  

末行模式

  末行是内置的命令行接口.

(1) 地址定界

  : start_pos[, end_pos]

    #:  特定的第#行, 例如5即第5行

    . :  当前行  点号

    $:  最后一行

    #, # :  指定行范围, 左侧为起始行,  右侧为结束行

    #, +#:  指定行范围,  左侧为行绝对编号, 右侧为相对左侧的编号

    %:  表示全文

      同1, $

 

    这些都还可以同编辑命令一起使用

      d, y, c

      :w path,  将内容保存到指定路径, 相当于另存为

      :r  path ,  将指定的文件中的文本插入到指定位置

(2) 查找

  /pattern/:  第一次被指定模式匹配到的行

  可与本身连用, 或是数字, $等定界符

  查找结果支持上下,

    n: 下一个

    N: 上一个

(3) 查找并替换

  s:  末行模式的命令: 使用格式

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

      要查找的内容:  可使用正则表达式

      要替换的内容:  不能使用正则表达式, 但是可以使用正则表达式分组后的引用\1...

      修饰符: 

        i:  忽略大小写, 

        g:  全局替换,  意味着如果一行中匹配到多次, 则替换多次

    例如 :%s/like/i love you/g  表示全局替换

  替换命令的时候, 可以把分隔符换成其他几种,  /  @  # 共有这几种方式

  注意, 此处的正则查找, 默认使用的最原始的正则guize, 写法非常麻烦, 可以在前面添加

    \v:  表示使用perl模式的正则

    \V:  表示使用纯文本来查找

    就像这样:  :%s/\v(\d+)/\15/g 

(4)  vim小练习

  1.  复制/etc/grub2.cfg文件到/tmp目录中

[root@localhost ~]# cp /etc/grub2.cfg /tmp
[root@localhost ~]# vim /tmp/grub2.cfg 
# 末行模式
:%s/\v^\s+/  

  2.  复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找命令替换/tmpfunctions文件的每个以空白字符开头的行首加上#

  

[root@localhost ~]# cp /etc/rc.d/init.d/functions /tmp
[root@localhost ~]# vim /tmp/functions
# 末行模式
:%s/\v^\s/# /  

  3.   为/tmp/grub2.cfg文件的前3行加上# 号

#末行模式
:1,3s/\v(.*)/#\1

  4.  将/etc/ yum.repos.d/CentOS-Base.repo文件中的所有的enabled=0替换为enabled=1, 所有gpgcheck=0替换为gpgcheck=1

 

vim的多文件功能

  vim FILE1 FILE2...

    大文件之间的切换

      :next  下一个

      :prev  上一个

      :first  第一个

      :last  最后一个

    退出所有文件

      :wqall  保存所有文件并图基础

      : wall  保存所有文件

      :qall  退出所有文件

  vim -o  FILE FILE2...   水平分屏

  vim -O  FILE FILE2...   垂直分屏

  Ctrl + w + ... 控制分屏和切换

  具体命令参考https://www.cnblogs.com/manziluo/p/5789700.html

 

定制vim的工作特性

  注意:  在末行模式下的设定, 仅对当前vim进程中有效

  永久有效, 配置配置文件

    全局:  /etc/vimrc

    用户个人:  ~/.vimrc

  1.  行号

    显示: set number, 简写为set nu

    取消显示:  set noumber,  set nonu

  2.  括号匹配高亮显示

    匹配:  setshowmatch,  set sm

    取消匹配:  set nosm

  3.  自动缩进功能

    缩进:  set autoindent, set ai

    取消:  set noai

  4.  高亮搜索

    启用高亮:  set hlsearch

    禁用:  set hlsearch   hl(highlight)

  5.  语法高亮

    启用:  syntax  on

    禁用:  syntax  off

  6.  忽略大小写

    启用:  set lc  ic(ignore case)

    禁用:  set nolc

  获取帮助

    : help

    : help subject

 

posted @ 2019-08-17 16:56  yscl  阅读(116)  评论(0)    收藏  举报