Linux文本编辑器-vi/vim - Go语言中文社区

Linux文本编辑器-vi/vim


  vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容

  可以理解成普通的txt文本与word文档之间的差距。

  注:还有一款全屏编辑器是nano,可以了解下

 

【vim的三种模式】

  普通模式,编辑模式,命令模式

  

  1.普通模式

    使用vim命令打开文件,只能使用上下左右键移动光标,并且操作复制,粘贴,删除等之类的工作

 

  2.编辑模式

    普通模式下不能对文件内容进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”,等字母,进入编辑模式之后才可以执行录入文字

    编辑模式有一个插入的标记在屏幕的最下方

 

 

 

 

 

 

 

 

 

 

 

  3.命令模式

    在普通模式下,输入“:/  ?”时,光标会自动定位在那一行,此模式中可以执行保存,退出,搜索,替换,显示行号等相关操作

    

 

 

 

 

 


  vim [OPTION]...FILE...
  如果文件存在,则打开它,如果不存在,则打开一个新的文件,如果存盘则创建文件,不存盘则不创建文件

【vim打开文件进行快速定位】    

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

 vim +11 /etc/passwd

    -b:二进制方式打开文件
    -d:比较多个文件的差异
    -m:只读打开文件
    ex file 或 vim -e:直接进入ex模式

【模式转换】

  普通模式 ----> 插入模式
    i:insert,在光标所在处输入
    I:在光标所在行的行首输入
    a:在光标所在处的后一个字符输入
    A:在光标所在行的行尾输入
    o:在当前光标所在行的下一行新开一行 open
    O:在当前光标所在行的上一行新开一行

  字符间跳转:
    h:左
    j:下
    k:上
    l:右 #[hljk]:指定一次跳转多少的字符数

  单词间跳转:
    w:跳到下一个单词的词首
    e:当前或下一个单词的词尾
    b:当前或上一个单词的词首
  #[web]:指定一次跳转多少个单词数
  

  当前页跳转
    H:页首
    M:页中
    L:页底

   翻屏:
    Ctrl+f:向文件尾部翻一屏
    Ctrl+b:向文件首部翻一屏
    Ctrl+d:向文件尾部翻半屏
    Ctrl+u:向文件首部翻半屏

  行首行尾跳转:
    ^:调到行首非第一个非空白字符处
    0:调到行首
    $:跳转至行尾

  行间移动:
    #G:跳到第#行
    G:最后一行   例如:1G或gg:第一行
    

  字符编辑:
    x:删除光标处的字符
    #x:删除光标处起始的#个字符
    xp:交换光标所在处及其后面字符的位置 原理是:先删除光标所在位置,然后使用p粘贴
    ~:转换大小写

  替换命令:
    r:替换个光标所在处的字符 7rv 光标后7为替换成v
    R:切换成replace模式

  删除命令:
    d:删除命令,可结合光标跳转命令实现范围删除
    d$:删除光标至行尾的字符
    d^:删除光标至行首非空白字符处
    d0:删除光标至行首
    dw:删除光标当标至下一个单词的词首
    de:删除光标至当前或下一个单词的词尾
    db:删除光标至上一个单词的词首
    dd:删除光标所在行
    #dd:删除#光标后的#行

  复制命令:
    y:复制
    y$:从光标所在处复制到行尾
    y0:从光标所在处复制到行首
    y^:从光标所在处复制到行首的非空白字符处
    ye:从光标所在处复制至当前或下一个单词的词尾
    yw:从光标所在处复制至下一个单词的词首
    yb:从光标所在处复制至上一个单词的词首
    yy:复制光标所在行
    #yy:复制多行
  

  粘贴命令:
    p:粘贴,如果缓冲区为整行,则粘贴在光标所在行的下一行,否则,粘贴在光标所在处的后面
    P:粘贴,如果缓冲区为整行,则粘贴在光标所在行的上一行,否则,粘贴在光标所在处的前面

  可视化模式:
    v 按字符选定
    V 按航选定,经常结合编辑命令,d,c,y
    撤销此前的编辑
    u(undo)撤销此前的操作
    #u 撤销指定次数的操作
    撤销此前的撤销

 

vim中的末行模式:

    按“:”进入末行模式

(1)地址定界
  :start_pos,end_pos
  #     具体第#行,例如2表示第2行
  #,#     从左侧#表示行起始,到右侧#表示行结束
  #,+#     从左侧#表示行起始,加上右侧#表示的行数
  .       表示当前行
  $       表示最后一行
  %       全文,相当于1,$

  /part1/,/part2/
        从第一次被part1模式匹配到的行开始,一直到第一次被part2匹配到的行结束
    使用方式:
      后跟一个编辑命令
        d
        y
        w /PATH/TO/SOMEWHERE

:1,20w /tmp/.txt

        r filename:读取文件内容到当前文件中

:r /etc/fstab

        q:退出
        q!:强制退出
        wq:保存并退出
        wall 保存所有
        x:保存并退出
        ZZ:保存退出
        ZQ:不保存退出
(2)查找
    /PATTERN 从当前光标所在处尾部查找
    ?PATTERN 从当前光标所在处首部查找
    n 与命令同方向
    N 与命令反方向
(3)替换
    s 在末行模式下完成查找替换操作
    s/要查找的内容/替换为的内容/修饰符
    替换的内容可以使用反向引用1,2,可以使用&引用前面查找时查到的内容
  

  修饰符号:
    i 忽略大小写
    g 全局替换,默认情况下,每一行只替换第一次出现

 

【定制vim的工作特性】

  配置文件:永久有效
  全局 :/etc/vimrc
  个人:~/.vimrc 需要自己创建
  末行:当前vim进程有效

    (1)显示行号:
      set nu 显示;
      set nonu 取消显示;

    (2)括号成对匹配:括号高亮
      set sm:设置;
      set nosm:取消;

    (3)自动缩进:
      set ai
      set noai

    (4)高亮搜索:
      set hlsearch high light search
      set nohlsearch nohls

    (5)语法高亮:
      syntax on
      syntax off

    (6)忽略字符的大小写:
      set ic
      set noic


    (7)文本格式:
      set fileformat=dos :启用windows格式;
      set fileformat=unix:启用unix格式;

    (8)设置文本宽度:
      set textwidth=65 (vim only)
      set wrapmargin=16


    (9)设置tab键的缩进长度:
      set tabstop=4
      set softtabstop=4:设置一个退格键退回来的长度;
      set shiftwidth=#:设置每一级缩进的长度;
      set authindent:表示自动缩进;

      set noautoindent   取消自动缩进,使用方法:在粘贴数据之前使用,然后粘贴文件。如阿云托管k8s集群需要的config文件

    (10)帮助信息:
      :help option-list
      :set or :set alal

 

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/flashfish/p/10718708.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-11-10 12:02:30
  • 阅读 ( 771 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢