Gvim常用操作
Gvim常用操作
[TOC]
1 前言
这篇笔记是vim使用记录。以前实习时用了半年多,从生疏到熟悉也花了一些时间,主要还是用到什么不会的就去百度一下。相关操作用的多了就还是很熟悉的。此外,长期使用后体会到gvim编辑器coding的效率是极高的。回到学校后在自己的windows上也安装了gvim,也在开发中使用。现在长时间不操作现在有些遗忘。
现在工作,决定整理出一个gvim常用操作的文档,可以在自己遗忘快速查阅,也可以共享于他人学习。
此篇笔记不涉及gvim及其插件的安装,默认已安装。
2 认识vim
vi/vim是Linux平台下常用的文本编辑器。
不同于Windows平台下的文本编辑器。如下图所示,vim分为三个工作模式:
1 命令模式
这是进入vim默认的模式。在该模式下可以直接输入命令对文本进行笔记。
如:按下键盘yy,则复制了光标所在行。再按下键盘p,则将寄存器里的文本粘贴到光标的下一行。
2 输入模型
输入模式下,就是通过键盘进行文本编辑。
进入输入模式有三种方法:键入i、a、o。区别在于,键入i进入输入模式时,光标在选中字符前。键入a进入输入模式时,光标在选中字符后。键入o进入输入模式时,光标在选中字符所在行的下一行(新建行)。
按Esc健退出输入模型,进入命令模式。
3 底线命令模式
底线命令模式下也是输入命令,主要是多字符命令。
在命令模式下输入“:”就会进入底线命令模式,然后键入命令回车即可执行命令,自动回到命令模式。
如,在命令模式下输入:w,表示保存文本内容。此外:!cmd可以执行终端命令,不过速度比terminal慢。
3 常用操作
vi/vim键盘图如下,从上可以看到很多常用操作。

3.1 基本命令
- 文件命令
| 命令 | 命令释义 | 备注 |
|---|---|---|
| gvim fimename | 通gvim新建filename文件并打开 | 在terminal中执行 |
| :open ./flda/filename | 在gvim打开时打开/新建文件(常用) | 在底部命令模式 |
- 进入编辑模式
| 命令 | 命令释义 | 备注 |
|---|---|---|
| i | 进入编辑模式,光标在选中字符前 | insert |
| a | 进入编辑模式,光标在选中字符后 | 个人理解为append |
| o | 进入编辑模式,光标在选中字符所在行下一行(新建行) |
- 文件保存
| 命令 | 命令释义 | 备注 |
|---|---|---|
| w | 保存文件内容 | write |
| q | 进入编辑模式,光标在选中字符后 | quit |
| ! | 强制执行 | |
| :w filename | 相当于另存为 |
在命令模式下,输入“:”进入底线命令模式下使用,三个可以按需组合。
:w保存文件,随后进入命令模式;
:q关闭当前文件,未更改内容生效,若文件内容发生变动则不会退出并给出提示;
:wq保存更改并退出文件;
:q!不考虑是否保存,强制退出,为保存内容将丢失。

- 文本编辑命令
| 命令 | 命令释义 | 备注 |
|---|---|---|
| yy | 复制光标所在行内容至寄存器中(剪切板) | |
| nyy | 从光标所在行开始复制,复制n行 | n这个操作用在很多地方 |
| shift+y (Y) | 等同于yy命令 | |
| y0 | 复制从行首字符到光标所在前一个字符,(不包括) | 不包括换行,粘贴时在光标字符后插入 |
| y$ | 复制从光标所在字符到行尾字符,(包括) | 同上 |
| p | 将寄存器内容粘贴,在光标的下一行() | paste |
| np | 相同内容粘贴n次 | |
| dd | 删除光标所在行 | delete |
| ndd | 从光标所在行开始删除,删除n行 | |
| shift+d (D) | 删除光标(包括光标字符)至行位的所有字符 | |
| x | 删除光标选中字符 | shift+x向前删除,不常用 |
| nx | 删除从光标字符起的n个字符 | 多次(单d+方向键)也可以 |
| r | 替换光标字符:输入r后光标会在当前字符会下方闪烁,再键入新的字符就完成替换。 | |
| shift+r (R) | 批量替换字符:输入R后,再输入的字符将替换光标所在字符,光标移至后一个字符。 | 我不常用 |
| u | 撤销上一步操作 | |
| ctrl+r | 重复上一次操作(cmd) | coding常用 |
以上都是在命令模式下键入的。
关于复制还有一个常用的就是复制一行中的指定几个字符:
一般先键入v进入可视模式,再移动光标选中要复制的字符,选择完成后键入单p进行复制,此时复制的内容和之前不一样不,不是整行。粘贴时键入p,就可以将寄存器内容粘贴(插入)在光标所在字符后面。
- 移动光标
| 命令 | 命令释义 | 备注 |
|---|---|---|
| h | 光标移动:左 | |
| j | 光标移动:下 | |
| k | 光标移动:上 | |
| l | 光标移动:右 | |
| gg | 光标快速跳到文本的开头 | |
| shift+g (G) | 光标快速跳到文本的末尾 | |
| n+G | 光标移动至第n行 | |
| :n | 光标移动至第n行 | |
| w | 以单词为单位,向后跳转 | |
| b | 以单词为单位,向前后跳转 |
方向移动我使用方向键和功能键更多,但是之前实习看工程师使用hjkl更多。
此外光标移动结合几个功能键使用:
home光标移至行首
end光标移至行尾
ctrl+home光标移至文件首,等同
ctrl+end光标移至文件未
3.2 命令操作
- 注释多行代码
1 光标放在待注释的位置(首行的行首)
2 键入ctrl+v进入可视块模式,
3 移动光标选择所需要注释的行
4 键入shift+i (I)进入输入模式
5 输入注释符(可多字符)
6 键入Esc完成注释
取消注释:ctrl+v选中多行注释符,键入d。
不一定是注释使用,相同模式都可以,如删除,段中分隔等。
注意:
v:可视,用于连续选择
ctrl+v:可视块,用于按列选择

- 查找内容
| 命令 | 命令释义 | 备注 |
|---|---|---|
| :/words | 向光标之下寻找一个名称为 words 的字符串。 | 这两个都会把所有匹配的结果高亮,我通常只用这个 |
| :?words | 向光标之上寻找一个名称为 words 的字符串。 |
若已知需要查找的某个词,可以将光标放在该词上,或在可视模式下选中该词,然后键入shift+8 (*)进入搜索。
查找后使用n和N在高亮的匹配词之间跳转:n下一个匹配词,N上一个匹配词。
- 替换内容
| 命令 | 命令释义 | 备注 |
|---|---|---|
| :n1,n2s/word1/word2/gc | 在n1和n2行之间进行搜索,搜索字符为word1,并替换为word2。 | 尾部的c是在替换时需要用户确认,可选,常加 |
| :%s/word1/word2/gc | 在整个文件之间进行搜索,搜索字符为word1,并替换为word2。 |
上面的n1,n2还可以使用通配符替代(我自己的理解),0:首行,$:尾行。
- 执行代码
:!+<终端中执行的命令>,以执行python脚本为例:
1 | !python auto_flow.py |
可以和终端一样,通过方向键切换历史执行命令。
3.3 窗口相关
多窗口使用场景很多,这块也需要熟练使用。
一些可能和插件相关,我不确定
- 切分窗口
直接切输入指令:sp和:vsp,命令执行后会切分窗口,新窗口会打开之前窗口打开的文件,在该窗口双击新文件即可。
:sp横向/水平切分
:vsp纵向/垂直切分(vertical split )

选中侧边树目录上的文件,这些看插件里的手册。
| 命令 | 命令释义 | 备注 |
|---|---|---|
| F3 | 打开侧边树目录(来自插件nerdtree) | |
| r | 在侧边树目录执行,刷新侧边树目录,文件变动需要刷新(常用) | |
| 以下命令前提时选中侧边树目录上的文件 | ||
| i | 横向/水平切割窗口 | |
| s | 竖向/垂直切割窗口 | |
| t | 在新窗口打开 |
- 窗口跳转
通过命令来切换窗口减少鼠标使用,能提升开发效率。
| 命令 | 命令释义 | 备注 |
|---|---|---|
| ctrl+w j | 活动文件跳转为下方的文件,下方的文件为当前活动文件 | |
| ctrl+w k | 向上移动 | |
| ctrl+w h | 向左移动 | |
| ctrl+w l | 向右移动 |
ctrl+w之后加普通方向键也是一样的,我目前还是用这种的。
还有一个简单点的就是ctrl+w后在键入w,循环切换窗口,选到自己想要的就停止。
- 关闭/退出窗口
:close关闭当前窗口
:quit关闭当前窗口(不常用)
:only保留当前窗口,关闭其他所有窗口
3.4 ctags
这个我用的也不多,但是之前公司工程师在用。占个坑,后面来填。
其他
按鼠标滑轮,可将选中文字快速键入
仅常用的,工作中想到再补充~
整理完成,再次感谢实习导师对我的悉心指导:happy:
