先记住 Neovim 的模式
| 按键或命令 | 作用 |
|---|---|
i |
进入插入模式,开始输入文字 |
Esc |
返回普通模式 |
Ctrl+[ |
与 Esc 完全等价,手不必伸到键盘左上角 |
: |
在普通模式进入命令模式 |
如果快捷键没有反应,先按一次 Esc,再操作。
常用习惯:在插入模式按 Ctrl+[,快速回到普通模式。
保存和退出
| 按键或命令 | 作用 |
|---|---|
:w |
保存当前文件 |
:w main.c |
第一次保存,并把文件命名为 main.c |
:q |
退出(文件有未保存修改时会阻止退出) |
:wq |
保存并退出 |
:q! |
放弃未保存的修改并退出 |
撤销和重做
| 按键或命令 | 作用 |
|---|---|
u |
撤销上一次修改 |
Ctrl+R |
重做刚才撤销的修改 |
:earlier 5m |
回到五分钟前的编辑状态 |
:later 5m |
从旧状态向前恢复五分钟 |
撤销和重做需要在普通模式使用:先按 Esc,再按 u 或 Ctrl+R。
移动光标
| 按键或命令 | 作用 |
|---|---|
h |
向左 |
j |
向下 |
k |
向上 |
l |
向右 |
w |
跳到下一个单词开头 |
b |
跳到上一个单词开头 |
e |
跳到当前或下一个单词末尾 |
0 |
跳到本行最前面 |
^ |
跳到本行第一个非空字符 |
$ |
跳到本行末尾 |
f字符 |
跳到本行下一个指定字符,例如 f) 跳到右括号 |
t字符 |
跳到指定字符前面,例如 t; 跳到分号前 |
; |
重复上一次 f 或 t 跳转 |
, |
反方向重复上一次 f 或 t 跳转 |
gg |
跳到文件开头 |
G |
跳到文件末尾 |
数字 + G |
跳到指定行,例如 20G 跳到第 20 行 |
数字 + 移动键 |
重复移动,例如 5j 下移五行、3w 后移三个单词 |
{ |
跳到上一段代码 |
} |
跳到下一段代码 |
% |
在配对的 ()、[]、{} 之间跳转 |
Ctrl+D |
向下翻半页 |
Ctrl+U |
向上翻半页 |
Ctrl+F |
向下翻一整页 |
Ctrl+B |
向上翻一整页 |
zz |
把当前行放到屏幕中央 |
* |
搜索光标下的单词 |
Ctrl+O |
返回上一次跳转前的位置 |
Ctrl+I |
从返回的位置再次前进 |
移动原则:h/j/k/l 适合最后几格微调,大范围移动优先使用单词、搜索和跳转。
插入新内容
| 按键或命令 | 作用 |
|---|---|
i |
在光标前开始输入 |
a |
在光标后开始输入 |
I |
在本行第一个非空字符前输入 |
A |
在本行末尾输入 |
o |
在下方新建一行并输入 |
O |
在上方新建一行并输入 |
复制、粘贴和删除
| 按键或命令 | 作用 |
|---|---|
yy |
复制当前行 |
数字 + yy |
复制多行,例如 3yy 复制三行 |
p |
粘贴到光标后或当前行下方 |
P |
粘贴到光标前或当前行上方 |
dd |
删除(剪切)当前行 |
数字 + dd |
删除多行,例如 3dd 删除三行 |
x |
删除光标下的一个字符 |
v |
按字符进入可视选择 |
V |
按整行进入可视选择 |
Ctrl+V |
按矩形区域进入可视选择 |
y |
复制已经选中的内容 |
d |
删除已经选中的内容 |
Esc |
取消当前选择 |
gv |
重新选择刚才选过的范围 |
viw |
选择光标所在的整个单词 |
v$ |
从光标选择到本行末尾 |
vip |
选择当前一整段内容 |
vi( |
选择小括号里面的内容 |
vi{ |
选择大括号里面的内容 |
vi" |
选择双引号里面的内容 |
va{ |
连同大括号一起选择 |
ggVG |
选择整个文件 |
"+y |
把选中的内容复制到 Windows 剪贴板 |
"+p |
从 Windows 剪贴板粘贴 |
范围复制示例:按 V,使用 j/k 扩大范围,按 y 复制,再移动位置并按 p 粘贴。
当前已配置 Windows 剪贴板互通,普通的 y/p 会直接复制和粘贴系统剪贴板内容。
搜索和替换
| 按键或命令 | 作用 |
|---|---|
/文字 |
向下搜索,例如 /printf |
n |
跳到下一个搜索结果 |
N |
跳到上一个搜索结果 |
:%s/旧/新/g |
替换整个文件中的所有匹配内容 |
缩进
| 按键或命令 | 作用 |
|---|---|
>> |
当前行向右缩进 |
<< |
当前行向左缩进 |
=G |
从当前位置自动缩进到文件末尾 |
gg=G |
自动整理整个文件的缩进 |
C/C++ 代码补全
本节以及后面的编译运行快捷键依赖当前 Neovim 配置。
| 按键或命令 | 作用 |
|---|---|
Tab |
接受当前补全候选 |
Shift+Tab |
返回上一个候选或代码片段位置 |
上/下方向键 |
切换补全候选 |
Ctrl+Space |
手动打开补全菜单 |
Ctrl+K |
显示或隐藏函数参数提示 |
K |
查看光标下函数、变量或类型的说明 |
示例:
输入 pri 后,从菜单选择 printf,再按 Tab。
输入 ptr-> 后,会显示该结构体指针可以访问的成员。
编译、运行和错误跳转
| 按键或命令 | 作用 |
|---|---|
:make |
自动保存并编译当前 C/C++ 文件 |
F5 |
与 :make 相同:自动选择 gcc 或 g++ 编译 |
:Run |
运行已经编译好的程序 |
F6 |
与 :Run 相同:运行程序 |
:copen |
打开编译错误列表 |
F7 |
与 :copen 相同 |
]q |
跳到下一个编译错误 |
[q |
跳到上一个编译错误 |
:cclose |
关闭编译错误列表 |
推荐流程:
写代码 -> Esc -> F5 编译 -> 没有错误 -> F6 运行
运行程序的终端窗口
F6 运行程序后,Neovim 下方会打开终端窗口。
| 按键或命令 | 作用 |
|---|---|
Ctrl+\ 然后 Ctrl+N |
从终端输入模式返回普通模式 |
:q |
关闭当前终端窗口 |
最值得先记住的按键
| 按键或命令 | 作用 |
|---|---|
i |
开始输入 |
Esc |
回到普通模式 |
Ctrl+[ |
快速回到普通模式(等同 Esc) |
:w |
保存 |
:q |
退出 |
u |
撤销 |
Ctrl+R |
重做 |
F5 |
保存并编译 |
F6 |
运行 |
Tab |
接受代码补全 |