「TIL」常用的 Vim 操作

在各种 IDE 中使用 Vim Key Bindings 已经有将近一年时间了,在日常使用中其实并没有特别多很复杂的操作,基本上简单的光标移动和跳转、复制剪切、查找替换等操作已经可以覆盖大多数的日常使用场景了,再有更复杂的操作想要实现,会现用现查。今天又重新梳理和学习了一些平时会用到但是没有记下来的操作,这里做一个简单的记录。

光标移动

在普通模式(normal mode)下,最基本的光标移动操作就是四个方向的移动,按下 h, j, k, l 后光标会分别对应向左,下,上,右移动。
wb 可以分别向右或向左移动到下一个或上一个单词的开头,而 WB 则是移动到下一个或上一个空格后的单词的开头。
0$ 可以分别移动到当前行的开头或结尾,按 ^ 则会移动到当前行的首个字符。
Ctrl+fCtrl+b 可以分别向下或向上翻一页。
如果想要在匹配的括号(如 ()[]{} )间移动光标,可以按 % 进行跳转。
假设一个文件内定义了多个类,每一个类都是一个代码块,要在这些代码块间跳转可以按 [[]] 跳转到上一个或下一个代码块的开头;如果想要在方法间跳转,可以按 [m]m 跳转到上一个或下一个类或方法的开头。
{} 可以跳转到上一个或下一个空行。
ggG 可以跳转到文件顶部或底部,按 nG:n 可以跳转到文件的第 n 行,n 为任意整数。
大部分操作都可以搭配一个数字 n 使其重复执行 n 次,例如 2j 表示向下移动 2 次光标,2]m 表示跳转到当前光标往下第 2 个方法处。

输入模式

在普通模式下可以通过以下一些常用的操作方式进入输入模式(insert mode):
  • iI 在当前光标位置或当前行首字符处插入文本,进入输入模式
  • aA 在当前光标后的位置或当前行末插入文本,进入输入模式
  • oO 在当前光标所在行的下一行或上一行插入文本,进入输入模式

复制剪切

  • Y 复制光标位置到行末的字符
  • yy 复制当前行
  • xX 剪切光标所在位置或光标前一个位置的字符
  • D 剪切光标位置到行末的字符
  • dd 剪切当前行

粘贴文本

使用 Vim 的复制或剪切操作后,可以在同一个工作空间中任意位置粘贴对应的文本,按 pP 在光标后或光标前进行粘贴的操作。

文本选择

按下 vV 可以进入可视化模式(visual mode),前者的文本选择是以字符为单位的,而后者的文本选择是以行为单位的。在可视化模式下,可以配合光标移动的一些操作来实现快速选择文本,例如按 V 进入行可视化模式后按 5j 即可快速选中当前行以及下面5行的内容。

查找替换

字符查找分为行内搜索和整个文件内的搜索:
  • 按下 fF 后输入单个字符在当前行内向右或向左查找首个匹配的字符
  • 按下 / 后输入要查找的文本,然后按回车进入搜索模式,按 nN 可以跳转到下一个或上一个匹配的文本处
有时候会需要在查找内容的同时将匹配的文本替换成其他值,可以在普通模式下通过以下命令完成:
  • 输入 :s/old/new/,然后按回车,可以将当前行中的第一个 old 替换为 new
  • 输入 :s/old/new/g,然后按回车,可以将当前行中的所有 old 替换为 new
  • 输入 :%s/old/new/g,然后按回车,可以将整个文件中的所有 old 替换为 new
如果想要在匹配的项被替换前进行确认,在上述命令后加上 c 会对每一个匹配项的操作进行询问。

标记

可以使用标记 (mark) 功能来标记和跳转到文件中的某个位置,可以使用小写字母 a-z 或大写字母 A-Z 中的任意一个作为标记名称,按下 ma 则会在光标当前位置设置一个名称为 a 的标记,之后不管在当前文件的任何位置,只要按下 'a 即可跳转到标记 a 所在位置,按下 `a 则会跳转到标记所在行的首字符。

有时候可能会需要在一个文档内重复执行一些相同的操作,利用 Vim 的宏就可以像封装一个函数一样,把一系列操作录制下来注册成一个宏,在需要时直接调用重放这些操作。使用宏的步骤如下:
  • 在普通模式下,按 q 加一个字母开始录制。例如按下 qr,将该宏注册为 r
  • 接下来的 Vim 内操作全部都会被记录,直到再次按下 q 的时候,宏就录制完成了
  • 使用上面录制的宏,只需要在普通模式下按下 @ 加字母,例如按下 @r,就使用了一次宏 r
  • 如果想多次使用宏,可以在 @ 前加上数字,例如按下 5@r,就会执行 5 次宏 r
  • 如果想重复使用上一次的宏,可以在普通模式下按下 @@

©️
 本文采用 CC BY-NC-ND 4.0 许可协议。转载或引用时请遵守协议内容!

© Ruter Lü 2016 - 2024