Published on

Vim使用手册

简介

vim 是一个向上兼容 vi 的文本编辑器,可用于编辑各种纯文本,在服务器上编辑文件时特别有用。1

模式类型

  • 命令模式 - 敲击键盘动作会被识别为命令。
  • 编辑模式 - 字符按键以及 shift 组合用以输入字符。
  • 底线命令模式 - 底线命令模式可以输入单个或多个字符的命令,用于文件保存等操作。

模式转换

命令模式 -> 编辑模式

  • i - 在光标所在处输入
  • a - 在光标在处后方输入
  • o - 在光标所在处的下方打开一个新行
  • I - 在光标所在行的行首输入
  • A - 在光标所在行的行尾输入
  • O - 在光标所在处的上方打开一个新行

命令模式 -> 底线命令模式

  • :

编辑模式 -> 命令模式

  • ESC

底线命令模式 -> 命令模式

  • ESC

关闭文件

命令模式

  • ZZ - 保存并退出
  • ZQ - 不保存直接退出

底线命令模式

  • q - 退出
  • q! - 强制退出,不保存此前的编辑操作
  • w - 保存
  • wq - 保存并退出
  • x - 保存并退出
  • w /PATH/TO/FILE - 保存到指定文件

命令模式光标跳转

行首行尾跳转

  • ^ - 跳转至行首的第一个非空白字符
  • 0 - 跳转至行首
  • $ - 跳转至行尾

行间跳转

  • #G - 跳转至由#指定的行
  • 1G/gg - 第一行
  • G - 最后一行

句间跳转

  • ) - 下一句
  • ( - 上一句

段间跳转

  • } - 下一段
  • { - 上一段

翻屏

  • Ctrl+f - 向文件尾翻一屏
  • Ctrl+b - 向文件首部翻一屏
  • Ctrl+d - 向文件尾部翻半屏
  • Ctrl+u - 向文件首部翻半屏
  • Enter - 按行向后翻

当前页跳转

  • H - 页首
  • M - 页中间行
  • L - 页底
  • zt - 将光标所在当前行移到屏幕顶端
  • zz - 将光标所在当前行移到屏幕中间
  • zb - 将光标所在当前行移到屏幕底端

编辑命令

字符编辑

  • x - 删除光标所在处的字符
  • #x - 删除光标所在处起始的#个字符
  • xp - 交换光标所在处的字符与其后面的字符的位置
  • r - 替换光标所在处的字符

删除命令

  • d$/D - 删除光标所在位置到行尾的字符
  • d^ - 删除光标所在位置到非空行首的字符
  • d0 - 删除光标所在位置到行首的字符
  • dw - 删除光标所在位置到下个单词词首的字符
  • de - 删除光标所在位置到当前单词或下个单词词尾的字符
  • db - 删除光标所在位置到当前单词或上一个单词单首的字符
  • dd - 删除光标所在处的行
  • #dd - 删除光标所处的行起始的共#行

粘贴命令

  • p - 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方
  • P - 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方

复制命令

  • y$ - 复制光标所在位置到行尾的字符
  • y^ - 复制光标所在位置到非空行首的字符
  • y0 - 复制光标所在位置到行首的字符
  • ye - 复制标所在位置到当前单词或下个单词词尾的字符
  • yw - 复制光标所在位置到下个单词词首的字符
  • yb - 复制光标所在位置到当前单词或上一个单词单首的字符
  • yy - 复制一整行
  • #yy - 复制#行

其他编辑操作

  • u - 撤销此前的操作
  • #u - 撤销此前的#个操作

地址定界

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

查找

  • /PATTERN - 从当前光标所在处向文件尾部查找能够被当前模式匹配的所有字符串
  • ?PATTERN - 从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
  • n - 下一个,与命令方向相同
  • N - 上一个,与命令方向相反

查找并替换

  • s/要查找的内容/替换为的内容/修饰符 - 示例:%s@<t([[:alpha:]]+)>@T\1@g %s@<t[[:alpha:]]+>@&er@g
    • 要查找的内容 - 可使用正则表达式
    • 替换为的内容 - 不能使用正则表达式,但可以引用,如果要查找的内容部分在模式中使用分组符号,在替换为的内容中使用后向引用,直接引用查找模式匹配到的全部文本,要使用&符号
    • 修饰符
      • i:忽略大小写;
      • g:全局替换,意味着一行中如果匹配到多次,则均替换

  1. 史上最全 VIM 使用手册