跳到主要内容

Vim Hotkeys

内置映射

[!NOTE]- 参见: 参考手册/第一章/index

插入模式

  • ctrl-c 退出插入模式
  • ctrl-g ctrl-j/k 往下/上一行
  • ctrl-o 执行单个命令
  • ctrl-r 插入寄存器内容
  • ctrl-u 删除到行首
  • ctrl-w 删除光标前一个单词
  • ctrl-x 子模式
  • ctrl-[ 同 esc
  • S-up/down PageUp/PageDown

普通模式

字母

default

shift

a 在光标处附加文本

A 在行尾附加文本

b 光标回退 N 个单词

B 光标回退 N 个 word

c 删除文本并开始插入
cc 删除 N 行并开始插入

C 同 c$

d 删除文本
dd 删除 N 行

D 同 d$

e 光标前移到第 N 个单词的结束

E 光标前移到第 N 个 word 的结尾

f 光标右移到第 N 次出现的 char 上

F 光标左移到第 N 次出现的 char 上

g

G 光标移动到第 N 行(默认末行)

h 光标左移 N 个字符

H 光标移动到屏幕顶部开始算的第 N 行

i 在光标前插入文本

I 在本行首个 char 之前插入文本

j 光标下移 N 行

J join N 行(默认 2)

k 光标上移 N 行

K 查找光标所在的关键字

l 光标右移 N 个字符

L 光标移动到屏幕底部开始算的第 N 行

m 在光标位置处设置位置标记

M 光标移动到屏幕的中间一行

n 重复最近的查找

N 反向重复查找

o 在光标下方开始一个新行并插入文本

O 在光标上方开始新行并插入

p 在光标后放置文本

P 在光标放置文本

q
q: 在命令行窗口里编辑:命令行
q/ 在命令行窗口里编辑/命令行
q? 在命令行窗口里编辑?命令行

Q 切换到 Ex 模式

r 用 char 替换 N 个字符

R 进入替换模式

s (替换)删除 N 个字符并开始插入, 同 cl

S 同 cc

t 光标移动到右侧第 N 次出现的 char 之前

T 光标移动到左侧第 N 次出现的 char 之前

u 撤销改变

U 撤销一行内所有最近的改变

v 开始面向字符的可视模式

V 进入面向行的可视模式

w 光标前移 N 个单词

W 光标前移 N 个 word

x 删除光标开始的 N 个字符, 同 dl

X 删除光标前的 N 个字符, 同 dh

y 抽出 Nmove 文本
yy 抽出 N 行

Y 同 yy

z

Z
ZZ 保存后关闭窗口
ZQ 关闭窗口但不保存

数字和符号

default

shift

` 光标移动到位置标记

~

1

!
!!

2

@
@:
@@

3

# 反向搜索光标所在的标识符

4

$ 光标移动到行尾

5

% 转到后一个括号

6

^ 光标移动到本行首个 char 上

7

&

8

* 正向搜索光标所在的标识符

9

(

0 光标移到行首字符

)

- 光标移动到上方 N 行的首个 char 上

_ 光标移动到下方第 N-1 行的首个 char 上

=
==

+<CR>

[

{ 光标回退 N 个段落

]

} 光标前移 N 个段落

\

| 光标移到第 N 列

/ 正向搜索

? 反向搜索

, 反向重复命令

<
<<

. 重复最后一次修改操作 (除 "u",CTRL-R 和冒号命令外)

>
>>

; 重复命令

: 开始进入 Ex 命令

'

"

其他

  • <Space> 同 l
  • ctrl-c 终止当前的(搜索)命令
  • ctrl-f/b 正/反向滚动 N 屏
  • ctrl-u/d 窗口上/下滚 N 行(半屏)
  • ctrl-e/y 文本上/下滚 N 行
  • ctrl-g 显示当前文件名和位置
  • ctrl-]/o jump into/back(old)
  • ctrl-r 重做 u 撤销的改变
  • ctrl-v 开始面向列块的可视模式
  • ctrl-w 窗口命令

[!note] 移动类命令 (参见 usr_03)

  • b/w 向前/后移动到词首
  • ge/e 向前/后移动到词尾
  • 0/^/$ 移动到行首/行首第一个非空字符/行尾
  • F/f 向左/右移动到指定的字符
  • T/t 向左/右移动到指定的字符的前一个字符
  • % 移动到匹配到括号处
  • [count]% 移动到百分之几
  • gg/[count]GG/GG 移动到文首/指定行/文尾

[!note] 编辑类命令 (参见 usr_04)

  • i/a 光标前/后插入
  • o 在光标下方新建行并插入
  • r replace
  • c change
  • s cl substitute
  • d delete
  • x dl delete char
  • p put
  • y yank
  • u undo

文本对象

可以用在操作符之后,或者在可视模式里选择一个对象。

operator[number]motion

参见: 参考手册/第二章 基本编辑/motion

窗口命令

ctrl-w

  • + 增加当前窗口高度 N 行
  • - 减少当前窗口高度 N 行
  • :
  • < 减少当前窗口宽度 N 列
  • = 使所有窗口同宽高
  • > 增加当前窗口宽度 N 列
  • H 移动当前窗口到最左
  • J 移动当前窗口到最底
  • K 移动当前窗口到最顶
  • L 移动当前窗口到最右
  • P 跳转到预览窗口
  • R 向上旋转窗口
  • S
  • T 移动当前窗口到新标签页
  • W 跳转到前面第 N 个窗口(回绕)
  • ] 分割窗口并跳转到光标所在的标签上
  • ^ 分割窗口并编辑轮换文件
  • _ 设置当前窗口高度为 N(尽量大)
  • b 跳转到底部的窗口
  • c :close
  • d 分割窗口并跳转到所在的定义上
  • f 分割窗口并跳转到光标所在的文件名上
  • F 分割窗口并编辑光标所在的文件名, 然后跳转到文件名后给出的行号上

方括号命令

g 开头的命令

z 开头的命令

操作符等待模式

可视模式

可视模式下大多数命令同普通模式的相同

命令行编辑

使用 ':'、'!'、'/' 或 '?' 命令进入命令行编辑

终端作业模式

Ex 命令

  • :buffers
  • :cd
  • :chd[ir]
  • :clo[se]
  • :colo[rscheme]
  • :di[splay] 显示寄存器
  • :e[dit]
  • :files
  • :h[elp]
  • :his[tory]
  • :ls 列出所有的缓冲区
  • :new
  • :o[pen]
  • :q[uit]
  • :qa[ll]
  • :r[ead]
  • :reg[isters]
  • :res[ize]
  • :ret[ab]
  • :s[ubstitute] 查找和替代文本
  • :se[t]
  • :sp[lit]
  • :tabnew
  • :tabs
  • :tab
  • :ta[g]
  • :tags
  • :vs[plit]
  • :w[rite]
  • :wa[ll]
  • :wq
  • :wqa[ll]
  • :x[it]
  • :xa[ll]:wqall

map

  • 普通、可视、选择和操作符等待
  • n 普通
  • v 可视和选择
  • s 选择
  • x 可视
  • o 操作符等待
  • ! 插入和命令行
  • i 插件
  • l 插入、命令行和 Lang-Arg 模式的 ":lmap" 映射
  • c 命令行
  • t 终端作业

修饰符

  • S Shift
  • C Ctrl
  • A Alt
  • T Meta
  • D Super/Command

操作符

参考