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

Linux文本编辑器-vi/vim

程序员文章站 2022-05-31 10:25:58
vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容 可以理解成普通的txt文本与word文档之间的差距。 注:还有一款全屏编辑器是nano,可以了解下 【vim的三种模式】 普通模式,编辑模式,命令模式 1.普通模式 使用vim命令打开文件,只能使用上 ......

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

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

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

 

【vim的三种模式】

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

  

  1.普通模式

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

 

  2.编辑模式

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

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

Linux文本编辑器-vi/vim

 

 

 

 

 

 

 

 

 

 

 

  3.命令模式

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

    Linux文本编辑器-vi/vim

 

 

 

 

 


  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:表示自动缩进;

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