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慢。

img

3 常用操作

vi/vim键盘图如下,从上可以看到很多常用操作。

img

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!不考虑是否保存,强制退出,为保存内容将丢失。

1689403383138

  • 文本编辑命令
命令 命令释义 备注
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:可视块,用于按列选择

1689407862037

  • 查找内容
命令 命令释义 备注
:/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 )

1689411542834

选中侧边树目录上的文件,这些看插件里的手册。

命令 命令释义 备注
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: