1. 基本操作

Visual模式

  • v: 进入Visual模式
  • V: 进入行模式的Visual模式
  • y: 复制到寄存器

Normal模式

基本移动

  • h/j/k/l: 左/下/上/右
  • gg: 跳到第一行
  • G: 跳到最后一行
  • Ctrl+u/d: 上/下翻半页
  • ^/$: 跳转到本行的开始/结尾
  • %: 跳到匹配的括号处

基于单词的移动

  • w: 下一个单词的首字符
  • W: 下一个连续空字符的首字符
  • b/B: 上一个单词/连续字符的首
  • e/E: 当前单词/连续字符的结尾

基于搜索的移动

  • /{pattern}: 文件中搜索下一个匹配的{pattern}
  • *: 相当于/{当前单词}
  • n/N: 下/上一个匹配单词

基于标记的移动

  • m+"a-z": 标记当前为”a-z”之一
  • '+"a-z": 找到标记为”a-z”处位置
  • '': 上次跳转前的位置(即返回跳转)
  • '.: 上次修改的位置
  • '^: 上次插入的位置

操作命令

ACTION = {Operation} + {motion}

常见操作符:

  • d: 删除
  • y: 复制

大部分操作符重复两次表示将其作用在一行上

结合motion的例子:

  • dw: 删除单词
  • y$: 复制到单词结尾

重复操作

  • .: 重复上一次修改
  • u: 撤销上一次修改

Insert模式

  • i/a: 在光标前/后插入
  • o: 下方插入一行开始输入
  • s: 删除当前光标后开始输入
  • I: 行首插入
  • A: 行尾插入
  • S: 删除当前行开始插入

Command模式

: 进入,常用命令:

  • :w
  • :q
  • :q!
  • :wq

Visual模式

  • v: 进入Visual模式
  • V: 进入行模式的Visual模式
  • y: 复制到寄存器

2. 进阶操作

组合操作

r 替换字符,r后接要替换成的字符。
c+{motion}c可能代表change,需要接一个修改的范围,将删除范围内容并进入插入模式,例如:

  • c3w 会删除3个单词并进入插入模式。

行号+G 跳转到指定行,例如:

  • 10G 跳转到第10行。
  • gg 跳转到第一行。

:s/new/old 替换当前行中所有的’new’为’old’.但注意只会替换当前行的第一个匹配字符串,不会全部更改。
如果想要在一行内替换修改某个单词,需要加上一个g使用::s/old/new/g
:%s/new/old/g 如果添加g则替换当前文件中所有的’new’为’old’.
:%s/new/old/gc 如果再添加c则会对每一个匹配的字符串提示是否替换,输入y则替换,输入n则不替换。
r 替换字符,r后接要替换成的字符。
R 替换字符,R后接要替换成的字符,会进入替换模式,输入ESC可以退出替换模式。

命令模式进阶

:! + 命令 可以执行shell命令,例如:

  • :!ls 会列出当前目录下的所有文件。
    关于保存文件:
    :w + "filename" 可以将当前文件保存为”name”,如果不添加name则会保存为当前文件。

寄存器相关

  • 输入dd会删除当前行,并将其保存在一个寄存器中,使用p可以将其粘贴到光标下一行。