Vim的基本使用

最近了解学习了被称为编辑之神的vim,感觉很有意思,也很有用

推荐刚接触vim的可以去实验楼学习学习,贴个链接
也可以参考这篇文章进行学习。

一、关于vim的几种模式

vim是啥可以谷歌一下,这里想记录一下vim的六种基本模式

常用的是其中的普通模式、插入模式和命令执行模式

  • 普通模式
    ① 在普通模式中,用的编辑器命令,比如移动光标、删除文本等等。这是启动vim后的默认模式。
    ② 普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个d的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的j键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。
    ③ 在普通模式中,有很多方法可以进入插入模式中。比较普通的方法是是按a(append/追加)键或者i(insert/插入)键。
  • 插入模式
    ① 在这个模式中,大多数按钮都会向文本缓冲中插入文本。就跟平常的编辑器一样。
    ② 在插入模式中,可以按ESC回到普通模式中
  • 命令行模式
    在命令行模式中,可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/?键)或者过滤命令(!键)。在命令执行后,vim返回到命令模式之前的模式,通常是普通模式
  • 可视模式
    ① 这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。
    ② vim的文本对象也能和移动命令一样用在这个模式中
  • 选择模式
    这个模式和无模式标记器的行为比较相似(windows标准文件控件的方式)。在这个模式中,可以用鼠标或者光标高亮选择文本,不过输入任何字符的话,vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式
  • ex模式
    这和命令模式比较相似,在使用:visual命令离开ex模式前,可以一次执行多条命令

二、基本的三种模式的切换

  • ① vim启动默认进入普通模式,按ia可以进入插入模式
  • ② 普通模式中按:进入命令模式
  • ③ 命令行模式中输入wq回车后保存并退出vim
  • ④ 处于插入模式或命令行模式时只需要按ESC或者ctrl+[即可进入普通模式

在这里插入图片描述

三、进入插入模式

在普通模式下,使用下面的键将进入插入模式,并可以从响应的位置开始输入

命令 说明
i 在当前光标处进行编辑
I(大写的i) 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在的位置后到一个单词结尾的字符

四、保存文档但不退出vim

在普通模式下,使用下面的键将保存文档但不退出vim

命令 说明
w 保存文档
w+文件名 将文档保存为其他文件名或存到其他路径下

五、退出vim

在命令模式下:

命令 说明
wq 保存并退出编辑
q! 强制退出,不保存
q 退出
wq! 强制保存并退出
x 保存并退出
wq 保存并退出

在普通模式下:
使用组合键:shift+zz即可保存并退出vim

六、删除文本(命令模式下)

命令 说明
x 删除光标所在的字符
X 删除光标所在额前一个字符
delete 同x
dd 删除整行
dw 删除一个单词(不适用于中文)
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删除至文档首部

除此之外,还可以在命令之前加上数字,表示一次删除多行,如2dd表示一次删除2行

七、重复命令

vim可以重复执行上次执行的命令
普通模式下:

命令 说明
. (小数点) 重复上一次的命令操作
N(command),N表示重复后面的次数 执行指定次数的相同命令

使用dw或者daw删除一个单词,也可以使用dnw(n替换为响应数字)表示删除n个单词(类似的还有很多)

八、光标的快速跳转

行间跳转:
普通模式下,使用下列命令在行间按行号进行跳转

命令 说明
nG 光标移动到第n行
gg 光标移动到第一行
G 光标移动到最后一行

注:
① 如果默认没有显示行号,先进入命令模式,输入set nu显示行号

② 在完成一次跳转后,可以使用ctrl+o快速回到上一次(跳转前)光标所在的位置

行内跳转:
普通模式下,使用下列命令在行内按栈单词为单位进行跳转

命令 说明
w 到下一单词的开头
e 到当前单词的结尾
b 到前一个单词的开头
ge 到前一个单词的结尾
0或^ 到行头
$ 到行尾
f 字母 向后搜索指定字母并跳转到第一个匹配的位置
F 字母 向前搜索指定字母并跳转到第一个匹配的位置

九、复制粘贴和剪切

复制和粘贴文本

普通模式中使用y复制

命令 说明
yy 复制右边所在的整行(3yy表示复制3行)
y^或y0 复制至行首,不含光标所在的字符
y$ 复制至行尾。含光标所在的字符
yw 复制一个单词(y2w表示复制2个单词)
yG 复制至文本末
y1G 复制至文本开头
f 字母 向后搜索指定字母并跳转到第一个匹配的位置
F 字母 向前搜索指定字母并跳转到第一个匹配的位置

普通模式中使用p和P粘贴

命令 说明
p 粘贴至光标后
P 粘贴至光标前

剪切及粘贴

其实前面的dd删除命令就是剪切,每次dd删除文档后便可以使用p来粘贴
tip:这一点可以让我们实现一个很爽快的功能——交换上下行ddp

十、字符的替换和撤销命令

字符的替换和撤销命令都是在普通模式下的

命令 说明
r待替换字母 将光标所在字母替换为指定字母
R 连续替换,直到按下ESC为止
cc 替换整行,即删除整行,并进入插入模式
cw 替换一个单词,即删除一个单词,并进入插入模式
C 替换光标以后至行末
~ 转换光标所在字母的大小写
u 撤销一次操作
U 撤销当前行的所有修改
ctrl+r 撤销一个已经撤销的操作

十一、查找

快速查找

普通模式下输入/,然后键入要查找的字符串,回车后就会进行查找
?/功能相同,只不过?是向上而/是向下查找。
进入查找之后,键入nN可以继续查找。n是查找下一个内容,N是查找上一个内容

高级查找
普通模式下

命令 说明
\* 寻找光标所处的单词
\# 同\*,但\*是向前找,而#是向后找
g\* 同\*,但部分符合该单词即可
g\# 同\#,但部分符合该单词即可

以上查找n和N的继续查找命令依然可以用

十二、快速缩进

缩进操作在普通模式下有效

命令 说明
>> 将整行向右缩进
<< 将整行向左回退

命令模式下可对shiftwidth值进行设置可以控制缩进和回退的字符数

set shiftwidth=n 设置缩进字符数为n

十三、调整文本位置

命令模式下输入

命令 说明
ce 使本行文本内容居中(center)
ri 使本行文本内容靠右(right)
le 使本行文本内容靠左(left)
文章作者: Dar1in9
文章链接: http://dar1in9s.github.io/2020/01/19/教程/Vim的基本使用/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dar1in9's Blog