突然翻到大学期间写的博文,重新在此发布。
本文以 Linux 操作系统为测试环境,并且要求对 vim 有些许了解,如果对 vim 完全没有概念,建议在命令行下输入 vimtutor 获取 vim 的入门教程,花一个小时左右即可入门。
据我了解,在命令行时代,如果根据编辑器的使用给程序员分类,几乎大致可以分为 vim 和 Emacs 两大阵营。我在刚刚接触文本编辑器的时候,也被灌输着必须二选一的思想。诚如传言,vim 确实很重要,只要接触 Linux 而不使用 vim 是不可能的,而 Emacs 的组合命令让我实在无法忍受,所以即使 Emacs 很强大,还没开始学我就决定放弃它了。
在折腾 vim 很长时间之后,特别是接触了 Atom、Sublime Text、VS code 等新兴文本编辑器之后,我又得出了一个结论:vim 不适合这个时代。也许有很多高手和老黑客还在青睐 vim,他们已经把 vim 玩得很 6 了,甚至离不开 vim 了,但是我必须承认有很多更好用的编辑器,我不想再折腾这个老古董了。
但是 vim 是又是必须的,它是一个很好用的辅助工具,因为一旦我们熟悉了 vim 的使用,就可以在很多地方包括以上提到的新兴编辑器使用,而 vim 也确实是一个高效的工作方式。我一直在使用 vim,在 Linux 下,我使用 vim 编辑小文件,在浏览器端,我使用 vimuim 插件支持 vim 快捷键,而我在使用新兴编辑器的时候,我依然是使用 vim 的键盘快捷方式。高效的辅助工具,这是我对 vim 的定位。
这个定位也是我写本文的原因。网上有很多 vim 的教程,但是讲的都很仔细,我也看了一遍又一遍,但是到头来,我发现我记住的还是那么多,因为我只用那么多。我想通过本文总结我在使用 vim 的时候用到的东西,而且是常用的、不会忘记的东西。
h 向左移动
k 向上移动
j 向下移动
l 向右移动
H 移动到屏幕的起始行
M 移动到屏幕中间
L 移动到屏幕的底行
gg 移动到文档首行
G 移动到文档尾行
NG N替换为数字,移动到文档的第N行
Ctrl + f 向下翻一页
Ctrl + b 向上翻一页
0 移动到行头
$ 移动到行尾
普通匹配如下,在命令模式下,先输入/,再输入 str 即可匹配到字符 str,然后按 n 则匹配下一个 str,按 N 匹配上一个 str。而如果输入的是?str,则 n 和 N 的功能相反,不管是/str 还是?str,在匹配到文始或者文末之后,都会从头开始。
/str 向下搜索匹配字符str
?str 向上搜索匹配字符str
而想要更精确的匹配,就要用到正则表达式匹配,基本使用如下,正则表达式的高级语法请自行百度。
:/str/ 正则表达式匹配字符str
r 替换单个字母
R 从当前字母开始替换
x 删除一个字母
dw 删除一个单词
dd 删除一行
d$ 从当前删除到行末
d0 从当前删除到行头
J 删除本行的回车符,将本行与下一行合并
i 在当前光标前插入
a 在当前光标后插入
o 在本行的下面新建一行并进入编辑模式
O 在本行的上面新建一行并进入编辑模式
yy 复制本行
p 在光标后面粘贴
P 在光标前面粘贴
更常用的做法是,在命令模式下,先按 v 进入可视模式,利用上面讲到的跳转命令选择文本,被选择的文本背景会反白,选择好要复制的文本后,按下 y 即可复制反白文本。
u 撤销上一次操作,常用
. 恢复操作
:w 保存而不退出
:w filename 保存副本
:q 退出vim
:q! 强制退出,不保存
:wq 保存并退出
:e path/file 在vim中打开文件
:f file 重命名文件
:set nu 显示行号
:syntax on 开启语法高亮
:set option 命令常常用来设置 vim 的界面与相关配置,如上两条配置命令只会临时起作用,而退出 vim 之后就会失效,所以最好的做法是,在用户主目录下新建一个.vimrc 文件,并把自己的配置选项写入文件中,这样 vim 就知道如何初始化自己了。
:f 或者 Ctrl + G 显示状态栏,这对于想看文件名很有用
:!cm 其中cm为shell命令,这允许我们在vim中运行shell命令
还有一些命令,我不常用,但是我认为可以了解,如下:
:sp 上下分屏
:vsp 左右分屏
Ctrl + w + h 切换到左边屏
Ctrl + w + j 切换到下边屏
Ctrl + w + k 切换到上边屏
Ctrl + w + l 切换到右边屏
其实 Ctrl + w 可以在不同的屏之间按顺序切换。
这是我对自己使用 vim 的总结,我认为对于 vim,我知道这些就够了,希望对你们有所帮助,发现错误欢迎指正,有意见欢迎反馈。