一. 前言
在编程世界的浩瀚星空中,Vim就像一颗璀璨的星辰,历经数十年风雨,依然熠熠生辉。Vim,全称Vi IMproved
,是从古老的Vi编辑器发展而来的一款文本编辑器。自1991年首次发布以来,Vim凭借其强大的功能、灵活的定制性以及无与伦比的效率,赢得了全球无数程序员和开发者的青睐。它不仅是一款编辑器,更是程序员手中的一把利剑,助力程序员在代码的海洋中劈波斩浪,所向披靡。
1.1 Vim的演化史
Vim的历史可以追溯到上世纪70年代,当时Bill Joy在Unix系统上开发了Vi编辑器。随着时间的推移,Vi逐渐成为了Unix及类Unix系统上的标准文本编辑器。而Vim,作为Vi的改进版,不仅继承了Vi的所有优点,还加入了更多的现代化特性和功能。Vim的独特魅力在于其高度可定制性和强大的文本处理能力。无论是简单的文本编辑,还是复杂的代码重构,Vim都能游刃有余地应对。此外,Vim还提供了丰富的插件和脚本支持,使得用户可以根据自己的需求进行个性化定制,进一步提升工作效率。
1.2 为何选择Vim
在众多的文本编辑器和IDE中,Vim之所以能成为高效编码的首选工具,我认为原因主要有以下几点:
- 轻量级与高效: Vim不依赖于图形界面,运行速度快,占用资源少。即使我们在老旧或资源受限的计算机上,也能保持流畅的操作体验。
- 键盘为中心: Vim强调通过键盘快捷键来完成大部分操作,极大地减少了鼠标的使用,从而提高了编码速度。熟练掌握Vim快捷键后,我们可以在不离开键盘的情况下完成几乎所有的编辑任务。
- 强大的文本处理能力: Vim提供了丰富的文本处理命令和正则表达式支持,使得用户能够轻松地进行复杂的文本编辑和查找替换操作。
- 高度可定制: Vim的配置文件(.vimrc)允许用户根据自己的喜好和习惯进行个性化定制,包括快捷键、插件、颜色主题等。这种高度可定制性使得Vim能够满足不同用户的需求。
- 社区支持: Vim拥有庞大的用户社区和丰富的资源库。如果我们在使用Vim过程中遇到问题,也能在社区中找到答案或得到帮助。除此此外,社区还不断贡献出各种优秀的插件和脚本,使得Vim的功能日益强大与健壮。
1.3 如何使用Vim进行高效编码
基于Vim的这些独特魅力和优势,我将给大家分享Vim的一些基础操作的使用技巧。希望能够帮助大家快速掌握Vim,从而提升代码开发效率。
二、基础篇(快速上手Vim)
2.1 Vim的基本模式
Vim编辑器有3种工作模式,分别是命令模式(command mode)、插入模式(insert mode)和末行模式(last line mode)。
- 命令模式: 命令模式是Vim的默认模式,用户打开Vim时便进入命令模式。在命令模式下输入的键盘动作会被Vim识别成命令而非文本输入。比如,输入
"i"
,Vim识别的是i命令。用户可以输入命令来控制屏幕光标的移动、文本的删除或某个区域的复制或者撤销等,也可以进入末行模式或文本模式。 - 插入模式: 当需要在文本中新增或修改内容时,我们需要进入插入模式。在命令模式下输入i命令就可以进入插入模式,按
Esc
键可以回到命令模式。在插入模式下,用户可以像使用普通文本编辑器一样输入文本。总之,想要在文本中输入字符,必须处在插入模式下。 - 末行模式: 命令行模式允许用户执行一些高级命令,这些命令通常与文件的保存、退出Vim、查找替换文本、设置Vim选项等操作有关。在命令模式下按
":"
键就会进入末行模式。例如,输入":w"
保存文件,":q"
退出Vim(如果文件未修改),":wq"
保存并退出Vim,":set nu"
设置显示行号等。完成命令输入后,按回车键执行命令。
2.2 三种模式之间的切换
1. 命令模式指令
注意:
命令模式下的指令只能在命令模式下使用,在其他模式下无效
字符串中间的+
代表是快捷键操作
- 从正常模式切换到插入模式
命令 | 作用 |
---|---|
i | 进入编辑模式,光标前插入字符 |
a | 进入编辑模式,光标后插入字符 |
o | 进入编辑模式,光标所在行的下一行插入 |
I | 进入编辑模式,光标所在行的行首插入 |
A | 进入编辑模式,光标所在行的行末插入字符 |
O | 进入编辑模式,光标所在行的上一行插入字符 |
s | 删除光标所在字符并进入插入模式 |
S | 删除光标所在行并进入插入模式 |
- 移动光标
命令 | 作用 |
---|---|
h | 命令模式下的光标移动 左移 |
j | 命令模式下的光标移动 下移 |
k | 命令模式下的光标移动 上移 |
I | 命令模式下的光标移动 右移 |
0(数字) | 光标移到行首,工作模式不变 |
$ | 光标移到行尾,工作模式不变 |
gg | 跳转首行 |
G | 跳转末行 |
w | 正向移动到下一个单词的开头 |
b | 反向移动到下一个单词的开头 |
f{char} | 正向移动到下一个{char}字符所在之处例如fa,移动到下一个a字符 |
Ctrl + f | 屏幕向下移动一页,相当于Page Down键 |
Ctrl + b | 屏幕向上移动一页,相当于Page Up键 |
Ctrl + d | 屏幕向下移动半页 |
Ctrl + u | 屏幕向上移动半页 |
n + Enter | n为数字,光标向下移动n行 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
H | 光标移动到屏幕最上方那一行的第一个字符 |
L | 光标移动到屏幕最下方那一行的第一个字符 |
line-G | 命令模式下行跳转 例11G,光标跳到11行 |
% | 大括号跳转命令模式下,光标处于左大括号时,使用%跳转到对应右大括号,再按%跳回去。其他括号也可以这样 |
- 删除文本
命令 | 作用 |
---|---|
x | 删除光标所在字符,工作模式不变 |
dx | 删除光标所在单词,要求光标在首字母上,如果不在首字母,只会删除当前位置到单词末,工作模式不变 |
D | 删除光标所在位置到行末,工作模式不变 |
d0 | 删除光标所在位置到行首,工作模式不变 |
d$ | 删除光标所在位置到行末,工作模式不变 |
删除指定区域 | 光标选中要删除的首字符,按v进入可视模式,再使用hjkl移动到要删除的末尾,按d删除 |
dd | 删除光标所在行(dd不是真正意义上的删除,而是剪切,消失的内容去了剪切板) |
ndd | 删除从光标开始的n行 |
- 复制和粘贴文本
命令 | 作用 |
---|---|
yy | 复制光标所在行 |
nyy | 复制光标所在位置的n行,包括光标所在行 |
p | 向后粘贴剪切板内容,如果复制整行,这里是粘贴在光标所在位置的下一行 |
P | 向前粘贴剪切板内容,如果是整行,这里是粘贴在光标所在位置的上一行 |
- 撤销操作
命令 | 作用 |
---|---|
u | 撤销操作 |
Ctrl-r | 反撤销 |
- 搜索和替换
命令 | 作用 |
---|---|
/findname | 命令模式下向下查找,按回车键启动查找后,按n,会自动找下一个,N跳到上一个 |
?findname | 向上查找 |
查找光标所在单词 | 光标在目标单词上时,*或者#查找下一个,这里不要求光标必须在首字母上 |
r | 命令模式下替换光标选中字符,替换单个字符 |
从vim中跳转manpage | 将光标放在待查看单词上,按K,默认看第一卷n+K,查看第n卷 |
[+d | 查看宏定义:命令模式光标放在待查看词上,即可查看 |
- 保存和退出
命令 | 作用 |
---|---|
ZZ | 保存退出 |
2. 末行模式指令
注意:
末行模式下的指令只能在末行模式下使用,在其他模式下无效
字符串中间的+
代表是快捷键操作
- 保存和退出
命令 | 作用 |
---|---|
:q | 退出Vim |
:q! | 强制退出Vim,修改过的文件不会被保存 |
:w | 保存修改过的文件 |
:w! | 强制保存修改过的文件 |
:wq | 保存文件后退出Vim |
:wq! | 强制保存文件后退出Vim |
- 搜索和替换
命令 | 作用 |
---|---|
:s /待替换词/替换词 | 单行替换 光标置于待替换行,需自己确定是否替换 |
:%s /待替换词/替换词 | 全文替换:这个默认替换每行的首个,一行有多个目标词时,后面的不会变 |
:%s /待替换词/替换词/g | 全文替换:真正意义上的全局替换 |
- 分屏操作
命令 | 作用 |
---|---|
:sp | 水平分屏 |
:vsp | 竖直分屏 |
分屏命令+filename | 分屏并打开这个文件 |
Ctrl+w+w | 分屏后屏幕切换 |
:q | 退出光标所在窗口 |
:qall | 退出所有窗口 |
- 其他操作
命令 | 作用 |
---|---|
:! + 命令 | vim下使用shell命令,操作后,会切换至终端显示结果,按Enter后回到vim界面 |
Ctrl + p | 在末行模式下按Ctrl + p快捷键显示末行模式下的上一条命令 |
Ctrl + n | 显示末行模式下的下一条命令 |
3. 插入模式指令
字符串中间的
+
代表是快捷键操作
命令 | 作用 |
---|---|
ESC键 | 在插入模式下按下 Esc 键会返回到命令模式 |
Ctrl + [ | 与ESC键作用相同 |
三、Vim配置文件
vim有两个配置文件
1. /etc/vim/vimrc
2. ~/.vimrc 其中,第二个配置文件会优先加载,属于用户配置
关于vimrc的配置,网上有很多教程,在这里我就不做分享了,大家直接找网上开源的配置直接导入即可。大家可以参考一下这个:Vim的终极配置方案,完美的写代码界面! ——.vimrc
好了,今天的文章就分享到这里,后续如果有其他有用的指令,我也会添加进来,大家有需要的可以关注收藏一下。