写在前面

在命令行工具中打开并修改一个文件或者是在 git 操作时需要美化历史记录的时候就不得不和 vim 编辑器打交道。现在的操作系统基本都自带 vim 编辑器。借用维基百科上的一说话:对于大多数用户来说,Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。

因为日常会用到它,如果不仔细了解一遍它,会感觉到非常痛苦,就像正则表达式一样,一些奇奇怪怪的符号代表一些奇怪的含义,连 ctrl + c中断操作都不能退出 vim。因此就来学习一下 vim。

看了一遍 Vim简介入门教程,加上跟着实际操作,基本都了解了,只是有些特殊的符号对应特殊的意义需要单独记下来。这里记录常用的操作命令。

以下命令都是在英文输入法模式下,当按键不管用的时候,请看看是不是输入法不对!!!

普通模式按 i 进入插入模式,插入模式按 Esc 回到普通模式,普通模式按 (:命令) 进入命令行模式。插入模式和命令行模式之间没有直接联系,必须都回到普通模式进行切换。

1. 普通模式

普通模式就是 Vim 启动后自动进入的模式,在该模式下可以 移动光标 搜索与替换 复制与粘贴 删除

移动光标

  1. 上⬆下⬇左⬅右➡箭头移动光标
  2. 上下左右箭头前输入数字(n↑),为向哪移动多少个字符
  3. 0(/home) 移动到这一行的最前面,$(/end) 移动到这一行的最后面
  4. gg 移动到这个档案的第一行,G 移动到这个档案的最后一行
  5. n<Enter> 向下移动 n 行

搜索与替换

搜索

  1. /word 向下搜索,?word 向上搜索
  2. n 为重复向下搜索,N 为重复向上搜索。(需要输入 /word 回车后再按)

替换

  1. :n1,n2s/word/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2。
  2. :n1,n2s/word/word2/gc,加一个 c 表示在取代前显示提示字符给用户确认 (confirm) 是否需要取代!
  3. $ 表示最后。例如 :1,$s/word/word2/g 表示从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !

复制与粘贴

复制

  1. 复制光标所在的一行 yy
  2. 复制光标所在的向下 n 行 nyy
  3. 复制光标所在行到最后一行 yG
  4. 复制光标所在行到第一行 y1G
  5. 复制光标所在位置直到行尾的所有字符 y$
  6. 复制光标所在位置直到行首的所有字符 y0

粘贴

  1. 将数据粘贴在光标所在行的下一行 p
  2. 将数据粘贴在光标所在行的上一行 P

删除

  1. 删除光标所在的一行 dd
  2. 删除光标所在的向下 n 行 ndd
  3. 删除光标所在行到最后一行 dG
  4. 删除光标所在行到第一行 d1G
  5. 删除光标所在位置直到行尾的所有字符 d$
  6. 删除光标所在位置直到行首的所有字符 d0
  7. 删除光标向前一个字符(相当于backspace)X
  8. 删除光标向后一个字符(相当于 del)x
  9. 删除光标前后 n 个字符 nXnx

撤销与重做

  1. 撤销上一个动作 u
  2. 重做上一个动作 ctrl + r
  3. 重复上一个动作 .

2. 插入模式

普通模式进入插入模式 i

插入模式退出到普通模式 Esc

a,o,r 都会进入插入模式

3. 命令行模式

普通模式进入命令行模式,都需要以 : 开头。

  1. 保存 :w
  2. 保存并离开 :wq
  3. 离开,不保存会有警告 :q
  4. 强制离开 :q!

3. 其他

  1. 显示行号 :set nu
  2. 取消显示行号 :set nonu