vim 笔记

vim_logo

一、Vim 模式

  • 编辑模式 : 键盘操作通常被解析为编辑命令
  • 输入模式 : 大部分键盘操作被存储到文档中
  • 末行模式 : 用于解释运行 Vim 内置命令

二、模式切换

1、 编辑模式 –> 输入模式

  • i : 在当前光标所在处输入
  • I : 在当前光标所在行的行首输入
  • a : 在当前光标所在处后方输入
  • A : 在当前光标所在行行尾输入
  • o : 在光标所在行的下方新增空白行
  • O : 在当前所在行的上方新增空白行

2、输入模式 –> 编辑模式

  • ESC : 从输入模式返回编辑模式

3、编辑模式 –> 末行模式

  • : : 从编辑模式进入末行模式,两次 ESC 返回到编辑模式

三、Vim 常用命令

1、退出

  • :q! : 不保存退出
  • :wq : 保存并退出
  • :x : 保存并退出
  • ZZ : 保存并退出(编辑模式)
  • :wq! : 强制保存并退出
  • :qall : 多文件打开时退出所有文件
  • :wqall : 保存并退出所有文件

2、打开

  • vim FILE1 FILE2 ... : 打开多个文件

    • :next : 跳转到下一个文件
    • :first : 跳转到第一个文件
    • :last : 跳转到最后一个文件
    • :prev : 跳转到前一个文件
  • vim -o FILE1 FILE2 ... : 以上下分屏模式打开所有文件

  • vim -O FILE1 FILE2 ... : 一左右分屏方式打开所有文件

    • Ctrl+W 在按上下/左右箭头 切换编辑区
  • Ctrl+w,s : 对当前文件进行上下分屏显示,类似 -o

  • Ctrl+w,v : 对当前文件进行左右分屏显示,类似 -O

  • vim +# FILE : 打开文件,并将光标定位到 # 行位置,不加数字则代表定位在文档末尾

3、光标移动

编辑模式下

  • [#] h : 向左移动[#]字符,不写默认1
  • [#] l : 向右移动[#]字符,不写默认1
  • [#] j : 向下移动[#]行,不写默认1
  • [#] k ; 向上移动[#]行,不写默认1
  • w : 跳至下一个单词的词首
  • b : 跳至当前/上一个单词词首
  • e : 跳至当前/下一个单词词尾
  • ^ : 跳转到当前行首
  • $ : 跳转到当前行尾(包含空白行)
  • 0 : 跳转到当前行首(包含空白行)
  • ) : 跳转到下一句行尾
  • ( : 跳转到上一句行首
  • } : 跳转到下一段行尾
  • { : 跳转到上一段行首
  • [#] G : 跳转到指定行,不写则默认文档最后一行
  • Ctrl+f : 向下翻一屏
  • Ctrl+b : 向上翻一屏
  • Ctrl+d : 向下翻半屛
  • Ctrl+u : 向上翻半屛

4、编辑

  • [#] x : 删除光标所在处其后的 # 个字符,不写删除当前字符
  • r 字符 : 替换光标所在处为指定字符
  • d [***] : 删除命令,可配合光标跳转命令删除字符
    • d w : 删除光标后一个单词
    • d b : 删除光标前一个单词
    • d $ : 删除光标后到行尾所有内容
    • d ^ : 删除光标到行首所有内容
    • [#] d d : 删除光标所在处后 # 行,不写删除当前行

末行模式下

  • START,END d : 删除 START 到 END 行内容

  • SATRT,+# d : 删除 START 行开始向后的 # 行内容

  • +#,END d : 删除从 END 行开始向上的前 # 行内容

  • $ d : 删除当前行开始到文件末尾

  • . d : 删除当前行

  • .,$-2 : 支持组合删除,前面的代表删除当前行开始,到文件末尾-2 行的所有内容

  • % d : 删除全文

  • /pat1/,/pat2/ d : 从光标所在行开始,删除从第一次被 pat1 匹配到的行开始到第一次被 pat2 匹配带的行结束 中间的所有行

  • c [***] : 改变命令,先删除内容再切换到输入模式,同 d 命令相同,可配合光标跳转命令改变字符

    • [#] c c : 删除光标所在处 # 行并进入输入模式,不写默认删除当前行并进入输入模式
  • y [***] : 复制命令,配合光标跳转命令使用,[#] yy 复制当前行开始的向下 # 行,不写默认复制当前行

  • p : 粘贴当前光标所在位置的后面(可能是行或者单词,取决于复制的内容)

  • P : 粘贴当前光标所在位置的前面(可能是行或者单词,取决于复制的内容)

  • u : 撤销修改

  • Ctrl+r : 撤销此前的撤销命令

  • . : 重复此前命令

5、查找

  • /keyword : 向下查找

  • ?keyword : 向上查找

  • n : 向下循环查找

  • N : 向上循环查找

  • set hlsearch : 开启高亮查找

  • set nohlsearch : 关闭高亮查找

6、可视化模式

  • v : 进入可视化,按照单词选择
  • V : 进入可视化,按照行选择

四、窗口属性设置

  • set nu : 显示行号
  • set nonu : 取消显示行号
  • set ai : 自动缩进
  • set noai : 取消自动缩进
  • set ic : 搜索忽略大小写
  • set noic : 取消搜索忽略大小写
  • set sm : 显示与之匹配的括号
  • set nosm : 取消与之显示的括号
  • syntax on : 开启语法高亮
  • syntax off : 关闭语法高亮
  • set hlsearch : 开启搜索高亮
  • set nohlsearch : 关闭搜索高亮

五、配置文件

  • 全局配置文件存放于 /etc/vimrc
  • 用户配置文件存放于 ~/.vimrc

六、查找替换

末行模式下

  • 命令格式 : 地址定界s/查找模式/替换内容/gi

    • s : 替换命令,可换成删除 d
    • g : global,全局操作,默认的 vim 搜索替换只匹配每行中的第一个被模式匹配的字符,如果有多个则忽略,g 代表全部替换
    • i : 忽略大小写
  • 对于分隔符 / 可以自定义,默认的 vim 认为紧跟在编辑命令 s 后的字符即为分隔符,所以为了避免路径替换时对 / 做转义可以使用自定义格式,如 地址定界s@匹配模式@替换内容@gi

  • & : 用于引用前面 查找模式 所匹配到的所有字符,通常用于插入式替换,如在非注释行前加入 # 注释符 : 1,$s/^[^#].*/#&/gi


vim 笔记
https://mritd.com/2016/05/26/vim-note/
作者
Kovacs
发布于
2016年5月26日
许可协议