跳转至

Vim

Vi 是终端里的文本编辑器,Vim 是 Vi iMproved,即Vi编辑器的增强版,向上兼容

vivim 命令可以混用,是一样的

四种模式

普通模式

输入vivimvi/vim file则进入普通模式,其它模式下,通过ESC键回到普通模式

光标

在图形化或者远程终端使用键盘的方向键可以控制方向,但如果在字符终端,方向键可能会变成乱码,此时需要:h(左) j(下) k(上) l(右) 来控制

显示行号::set nu

  • 移动到第一行:gg
  • 移动到最后一行:G(shift+g)
  • 移动到指定的行:num+G
  • 移到行首:^(shift+6)
  • 移到行尾:$(shift+4)

操作

  • 复制:yy,复制3行:3yy,复制到行尾:y$
  • 剪切:dd,剪切3行:3dd,剪切到行尾:d$
  • 粘贴:p
  • 撤销:u
  • 重做:ctrl+r
  • 删除字符:x
  • 替换:r

插入模式

普通模式下按i(insert),进入插入模式,光标位置跟普通模式时一样,保持不变

  • a 光标到下一位
  • I 大写使光标定位到行首
  • A 光标到行尾
  • o 在下一行插入空行
  • O 在上一行插入空行

命令模式

普通模式下按英文冒号:进入命令模式,又叫末行模式

:w [path] # 保存,可以接保存路径
:wq  # 保存并退出
:q  # 如果没有修改,直接退出
:q!  # 如果有修改,强制退出,不保存

:!  # 在不退出的情况下,临时执行一些shell命令,比如:!ls 然后按回车返回编辑器

:/  # 查找字符,如果有多个会定位在第一个结果
"""
n 切换到下一个
shift+n 切换到上一个
"""

:s/old/new  # 替换当前光标所在行匹配到的第一个字符
:s/old/new/g  # 替换当前光标所在行匹配到的所有字符
:%s/old/new  # 替换全文匹配到的第一字符
:%s/old/new/g  # 全局替换
:3,5s/old/new  # 针对指定行替换
  • 设置
:set nu  # 显示行号
:set nonu  # 不显示行号
:set nohlsearch  # 不显示高亮

可视模式

普通模式下按v进入字符可视模式,按V进入行可视模式,按ctrl+v进入块可视模式

比较常用的是块模式,进入后可以通过方向键选择块范围进行操作,比如选中后

  • d删除
  • iI进行插入,然后按两次esc完成块操作