Vim常用快捷键整理

Vim常用快捷键整理

文章目录

  • Vim常用快捷键整理
    • 1. 移动光标
    • 2. 删除复制
    • 3. 插入模式
    • 4. 编辑
    • 5. 查找替换
    • 6. 退出编辑器
    • 7. 多文件编辑
    • 8. 多标签编辑
    • 9. 执行shell命令
    • 10. VIM启动时分屏显示
    • 11. 格式化代码(自动缩进)
    • 12. 自动注释和取消注释

注意:本文中的记忆方法只是参考,非官方解释

1. 移动光标

按键 功能 记忆方法
h 光标向左 方向键最左边一个
j 光标向下 j 的长角向下
k 光标向上 k 的长角向上
l 光标向右 方向键最右边一个
ctrl + f 上翻一页 f 表示 front, ctrl 表示翻页
ctrl + b 下翻一页 b 表示 back,ctrl 表示翻页
ctrl + u 上翻半页 u 表示 up,ctrl 表示翻页
ctrl + d 下翻半页 d 表示 down,ctrl 表示翻页
w 跳到下一个字首,按标点或空格分割 word
W 长跳,只按空格分割 WORD, 大写跳得快
e 跳到下一个字尾,按标点或空格分割 end
E 长跳,只按空格分割 END, 大写跳得快
b 跳到上一个字 back
B 跳到上一个字,长跳 BACK,大写跳得快
0 跳至行首,不管有无缩进,跳到第0个字符 0表示行首,开头
^ 跳至行首的第一个字符,只到内容的第一个 帽子表示第一个
$ 跳至行尾 结束的时候要付费,美元符表示行尾
gg 跳至文首 小写表示开头,一个g表示gun,两个g又gun回来
G 跳至文末那一行 大写表示末尾,gun
5gg/5G 跳到第5行 数字表示行号,gun gun / Gun
gd 跳至当前光标所在的变量的声明处 gun去define
fx 在当前行中找x字符,找到了就跳转,否则不跳 find x
; 重复上一个f命令 分号,重复find
* 查找光标所在处的单词,向下查找 星号匹配 向下
# 查找光标所在处的单词,向上查找 井号匹配 向上

2. 删除复制

按键 功能 记忆方法
dd 删除光标所在行 delete delete 删除一行
dw 删除一个字 delete word
d$ / D 删除到行末 Delete 大写删至行末
x 删除当前字符 x是删除,小写删当前
X 删除前一个字符 大写删前者
yy 复制一行 y是复制(跟在x后面), 两个y复制整行
yw 复制一个字 yw表示复制一个字
y/Y 复制到行末 y/Y表示复制到行末
p 粘贴粘贴板的内容到当前行的下面 paste
P 粘贴粘贴板的内容到当前行的上面 Paste,大写往上一行粘

3. 插入模式

按键 功能 记忆方法
i 从光标当前位置插入 insert
I 进入插入模式,并置光标于行首 大写从头插入
a 追加模式,置光标于当前光标之后 add
A 追加模式,置光标于行末 大写加到行末
o 在当前行之下新加一行,并进入插入模式 open a new line
O 在当前行之上新加一行,并进入插入模式 大写表示在本行之上插入
ESC 退出插入模式 退出模式基本都一样

4. 编辑

按键 功能 记忆方法
J 将下一行和当前行连接为一行 join
cc 删除当前行并进入编辑模式 clean clear
cw 删除当前字,并进入编辑模式 clear word
c$ 擦除从当前位置至行末的内容,并进入编辑模式 clear to 行尾
s 删除当前字符并进入编辑模式 strike out
S 删除光标所在行并进入编辑模式 大写表示行删除
xp 交换当前字符和下一个字符 x是剪切,p是粘贴,so你懂的
u 撤销 Undo
ctrl + r 重做 re-do
~ 切换大小 写,当前字符 取反符号,切换大小写
>> 将当前行右移一个单位 右移符号
<< 将当前行左移一个单位 左移符号
== 自动缩进当前行 等等vim自动缩进

5. 查找替换

按键 功能 记忆方法
/pattern 向后搜索字符串pattern /向后查询
?pattern 向前搜索字符串pattern ?向前查询,跟/ 在同一个键位上
“\c” 忽略大小写,用法是写在pattern的最前面/\chello character c 小写表示忽略大小写
“\C” 大小写敏感,用法是写在pattern的最前面,如/\Chello C大写表示不忽略大小写
n 下一个匹配(如果是/搜索,则是向下的下一个,如果是?搜索,则是向上的下一个 next
N 上一个匹配(同上) Next,大写表示反向
:%s/old/new/g 搜索整个文件,将所有的old替换为new %s substitute g表示末尾
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次替换都要人工确认 c表示 command

6. 退出编辑器

按键 功能 记忆方法
:w 将缓冲区写入文件,即保存修改 存wenjian
:wq 保存修改并退出 存wenjian & quit
:x 保存修改并退出 exit safely
:q 退出,如果对缓冲区进行过修改,则会提示 quit
:q! 强制退出,放弃修改 quit!!!不用拦我

7. 多文件编辑

按键 功能 记忆方法
vim file1, file2, … 同时打开多个文件 一个逗号 多打开一个
:args 显示当前编辑的文件 参数查看,也就是状态查看
:next 切换到下一个文件 抬走,下一个
:prev 切换到上一个文件 Previous,上一个
:next! 不保存当前编辑文件并切换到下一个文件 下一个!
:prev! 不保存当前编辑文件并切换到上一个文件 上一个!
:wnext 保存当前编辑文件并切换到下个文件 wenjian 下一个
:wprev 保存当前编辑文件并切换到上个文件 wenjian 上一个
:first 定位首文件 第一个
:last 定位尾文件 最后一个
ctrl + ^ 快速在最近打开的两个文件间切换 帽子切换
:split[sp] 把当前文件水平分割 split分割
:split file 把当前窗口水平分割, file 分割 file
:vsplit[vsp] file 把当前窗口水平分割,file 垂直 分割 file
:new file 同split file 新打开一个file
:close 关闭当前窗口 关闭
:only 只显示当前窗口,关闭所有其他的窗口 只保留当前这一个界面
:all 打开所有的窗口 所有
:vertical all 打开所有的窗口,垂直打开 垂直 所有
:qall 对所有的窗口执行:q操作 退出 所有
:qall! 对所有的窗口执行:q!操作 退出 所有!
:wall 对所有的窗口执行:w操作 保存 所有
:wqall 对所有的窗口执行:wq操作 保存 退出 所有
ctrl - w h 跳转到左边的窗口 移动向左
ctrl - w j 跳转到下边的窗口 移动向下
ctrl - w k 跳转到上边的窗口 移动向上
ctrl - w l 跳转到右边的窗口 移动向右
ctrl - w t 跳转到最顶上的窗口 移动到最顶部
ctrl - w b 跳转到最底下的窗口 移动到最底部

8. 多标签编辑

按键 功能 记忆方法
:tabedit file 在新标签中打开文件file tab 标签 edit 编辑
:tab split file 在新标签中打开文件file tab 标签 split 分离
:tabp 切换到前一个标签 tab 标签 p previous 前一个
:tabn 切换到后一个标签 tab 标签 n next 后一个
:tabc 关闭当前标签 tab 标签 c close关闭
:tabo 关闭其他标签 tab 标签 o other 其他
gt 到下一个tab go to tab
gT 到上一个tab 大写表示反向
0gt 跳到第一个tab 0表示首个
5gt 跳到第五个tab 5表示第五个

9. 执行shell命令

按键 功能 记忆方法
命令模式下:sh 进入shell shell
命令模式下exit或ctrl + D 返回VIM 退出
!command 执行一条命令,命令完成后立即返回VIM !惊叹号,中断临时运行
ctrl + Z / fg 返回shell / 返回VIM编辑 组合使用,file go 返回
:!make -> 直接在当前目录下运行make指令 !编译

10. VIM启动时分屏显示

按键 功能 记忆方法
vim -o t1.txt, t2.txt, … 以水平分屏的方式打开多个文件 -open 同时打开多个, 小写表示水平方向展开
vim -O t1.txt, t2.txt, … 以垂直分屏的方式打开多个文件 -Open同时打开多个,大写表示垂直方向展开

11. 格式化代码(自动缩进)

按键 功能 记忆方法
编辑模式下直接ESC后输入gg=G 将代码全部格式化 gg 到达文件最开始 = 要求缩进 G 直到文件尾
编辑模式下直接ESC后输入nG=mG 将第n行到第m行的代码格式化 nG 第n行 = 要求缩进 mG 直到第m行

12. 自动注释和取消注释

以C++和Python为例.(Ubuntu系统)

连续注释行:

指令的格式应为:起始行, 结束行s/要替换的字符/替换后的字符/g

如:

​ C++源文件中注释掉6~18行,指令应为:

:6,18s/^/\/\//g

其中\/\/是//的转义表示.

Python源文件中注释掉6~18行,指令应为:

:6,18s/^/#/g

取消注释行:

命令跟上述相反,要互换替换字符和被替换字符

​ C++源文件中反注释掉6~18行,指令应为:

:6,18s/^\/\///g

​ Python源文件中反注释掉6~18行,指令应为:

:6,18s/^#//g

你可能感兴趣的:(Vim技巧与学习,Linux+Shell,vim,linux)