vim 命令

光标移动

操作 说明 备注
+ 光标移动到下一行非空格处
- 光标移动到上一行非空格处
0 光标移动到这一行的最前面字符处 或功能键 Home
$ 光标移动到这一行的最后面字符处 或功能键 End$在正则里面表示是结尾
H 光标移动到屏幕最上方一行的第一个字符 H是 _header_的缩写
M 光标移动到屏幕中夬那一行的第一个字符 M是 _middle_的缩写
L 光标移动到屏幕最下方一行的第一个字符 L是 _last_的缩写
* 光标移动到下一个, 光标当前所在的单词 #是移动到下一个
Vim光标以单词为单位移动

w 或 W:光标移动至下一个单词的单词首
b 或 B:光标移动至上一个单词的单词首
e 或 E:光标移动至下一个单词的单词尾
nw 或 nW:n 为数字,表示光标向右移动 n 个单词
nb 或 nB:n 为数字,表示光标向左移动 n 个单词

Vim光标移动至行首或行尾

0 或 ^:光标移动至当前行的行首
$:光标移动至当前行的行尾
n$:光标移动至当前行只有 n 行的行尾,n为数字

Vim光标移动至指定字符

fx:光标移动至当前行中下一个 x 字符处
Fx:光标移动至当前行中下一个 x 字符处

Vim光标移动到指定行

gg:光标移动到文件开头
G:光标移动至文件末尾
nG:光标移动到第 n 行,n 为数字
:n:编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首

查找和替换

删除空格

%s/\ \+//g

将每行以0或多个空格开始、中间包含0或多个数字、并以0或多个空格结束的字符串替换为空。

:%s/^\s*[0-9]*\s*//gc

%代表针对被编辑文件的每一行进行后续操作;^ 表示行首($ 表示行尾),\s 表示空格,[0-9] 表示0~9的数字,* 表示0或多个

  • 查找 aabb/aa\|bb
  • 替换前显示提示字符给用户确认 (confirm) 是否需要替换::%s/string1/string2/gc
  • 删除空行:%s/^\n//gc
  • 删除行尾的空格::%s/ *$//gc or :%s/\s\+$//gc
  • 删除行首的空格::%s/^ *//gc
  • 行首添加字符串 string%s/^/string/gc
  • 行尾添加字符串 string%s/$/string/gc
  • 在2-7行之间,将ddd替换成fff::2,7s/ddd/fff/g
  • 在6~10行的行首加一个 # 号::6,10s/^/#/gc
\        取消后面所跟字符的特殊含义。比如 \[vim\] 匹配字符串“[vim]”

[]       匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母

[^]      匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符

.        匹配任意字符

*        匹配前一字符大于等于零遍。比如 vi*m 匹配“vm”、“vim”、“viim”……

\+       匹配前一字符大于等于一遍。比如 vi\+m 匹配“vim”、“viim”、“viiim”……

\?       匹配前一字符零遍或者一遍。比如 vi\?m 匹配“vm”或者“vim”

^        匹配行首。例如 /^hello 查找出现在行首的单词 hello

$        匹配行末。例如 /hello$ 查找出现在行末的单词 hello

\(\)     括住某段正规表达式

\数字    重复匹配前面某段括住的表达式。例如 \(hello\).*\1 匹配一个开始和末尾都是“hello”,中间是任意字符串的字符串