Vim常用命令

image-20211002115146766

移动命令
快捷键 说明 快捷键 说明
常用移动
h或者BackSpace 左移动 j 下移动
k 上移动 l或者空格 右移动
gg 移动到文本开头 G 移动到文本结尾
:n 移动到第n行开头 nG 移动第n行开头
gj 移动到一段内的下一行 gk 移动到一段内的上一行
+或Enter 把光标移至下一行第一个非空白字符 - 把光标移至上一行第一个非空白字符
w 移动到下一个单词开头 W 移动到下一个单词开头,但忽略一些标点
e 移动到下一个单词结尾 E 移动到下一个单词结尾,但忽略一些标点。
b 移动到上一个单词的开头 B 移动到上一个单词的开头,但忽略一些标点。
ge 移动到上一个单词的结尾 gE 移动到上一个单词的结尾,但忽略一些标点。
行内移动
0 移动到行首 ^ 移动到第一个非空字符
$ 移动到行尾
查询移动(字符)
fc 把光标移到同一行的下一个c字符处 Fc 把光标移到同一行的上一个c字符处
tc 把光标移到同一行的下一个c字符前 Tc 把光标移到同一行的下一个c字符后
; 配合f & t使用,重复一次 , 配合f & t使用,反向重复一次
查询移动(单词)
:/something 光标后在查找something字符串 :?something 光标后在查前something字符串
:/pattern/+number 将光标停在包含pattern的行后面第number行上 :/pattern/-number 将光标停在包含pattern的行前面第number行上
n 向后查找下一个 N 向前查找下一个
屏幕移动
ctrl+f 下翻一屏 ctrl+b 上翻一屏。
ctrl+d 下翻半屏 ctrl+u 上翻半屏
ctrl+e 向下滚动一行 ctrl+y 向上滚动一行
n%: 到文件n%的位置。 zz 将当前行移动到屏幕中央
zt 将当前行移动到屏幕顶端 zb 将当前行移动到屏幕底端
标记移动
m{a-z} 标记光标所在位置,局部标记,只用于当前文件 m{A-Z} 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效
`{a-z} 移动到标记位置 ‘{a-z} 动到标记行的行首
`` 移动到上次编辑的位置,如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i ‘’ 移动到上次编辑的位置行首
:marks 显示所有标记 delmarks a b 删除标记a和b
:delmarks a-c 删除标记a、b和c :delmarks a c-f 删除标记a、c、d、e、f
:delmarks! 删除当前缓冲区的所有标记 :help mark-motions 查看更多关于mark的知识
排版
<< 向左缩进一个shiftwidth >> 向右缩进一个shiftwidth
J 拼接当前行和下一行
u 可视模式文本变小写 U 可视模式文本变大写
Ctrl+i 前进 Ctrl+o 后退
插入命令
基本插入
i 在光标前插入 I 在当前行第一个非空字符前插入
a 在光标后插入 A 在当前行最后插入
o 在下面新建一行插入 O 在上面新建一行插入
文本对象
aw(around word) 当前单词及一个空格 aW(around WORD) 当前字串及一个空格
iw(inside word) 当前单词 iW(inside WORD) 当前字串
ip 当前段落(inside paragraph) ap(around paragraph) 当前段落及一个空格
is(inside sentence) 当前句子 as(around sentence 当前句子及一个空格
删除插入
c 删除在可视模式下选中的文本,进入插入模式 c$ 或 C 删除当前位置到行尾的内容,进入插入模式
[n]cc 删除(n)行,进入插入模式 c[n]w 删除光标后(n)个词,进入插入模式
c[n]h 删除光标前(n)个字符,进入插入模式 c[n]l 删除光标处(n)个字符,进入插入模式
c[n]j 删除光标所行及向下(n)行,进入插入模式 c[n]k 删除光标所行及向上(n)行,进入插入模式
[n]s 删除光标处字符,进入插入模式;相当于c[n]l [n]S 删除光标所在行,在当前行的行首开始插入模式;相当于[n]cc
替换
:s/old/new 用new替换当前行第一个old :s/old/new/g 用new替换当前行所有的old
:n1,n2s/old/new/g 用new替换文件n1行到n2行所有的old
:%s/old/new/g 用new替换文件中所有的old
:%s/^/xxx/g 在每一行的行首插入xxx,^表示行首 :%s/$/xxx/g 在每一行的行尾插入xxx,$表示行尾
删除命令
d 删除(剪切)在可视模式下选中的文本 d$ 或 D 删除(剪切)当前位置到行尾的内容
[n]dd 删除(剪切)(n)行,进入插入模式 d[n]w 删除(剪切)(n)个单词
d[n]h 删除光标处(剪切)(n)个字符 d[n]l 删除光标处(剪切)(n)个字符
d[n]j 删除(剪切)光标所行及向下(n)行 d[n]k 删除(剪切)光标所行及向上(n)行
[n]x 删除(剪切)光标处字符;相当于d[n]l [n]X 删除(剪切)光标前字符;相当于d[n]h
复制命令
y 复制在可视模式下选中的文本
y$ 复制光标处到行尾 y0 复制光标处到行首
ygg 复制光标处到文本首行 yG 复制光标处到文本末尾
[n]yy 或[n]Y 复制[n]整行文本 y[n]w 复制(n)个单词
y[n]h 复制光标处(n)个字符 y[n]l 复制光标处(n)个字符
y[n]j 复制光标所行及向下(n)行 y[n]k 复制光标所行及向上(n)行
粘贴
p 在光标之后粘贴 P 在光标之前粘贴
撤销与重做
u 取消一个改动 ctrl+r 重做最后的改动