我的站点: 桃园
vim 被誉为『编辑器之神』,与之同时代的 emacs 被誉为『神之编辑器』。能够看得出 vim 在编辑器的地位是很高的,得益于 vim 的指法,敲起代码来如行云流水。特别膜拜创始人创始出这么方便的敲代码的指法,这篇文章就是来带你入坑 vim 指法操做。前端
在当今前端开发工具百花齐放的时代(VS Code、Sublime、Atom 以及 IDE Webstorm),我为何还要介绍 20 多年前开发的一个老古董呢?在这里我想说的是出身虽然老,可是所带来的价值并无减,一旦习惯了 vim 的指法以后,你会以为不用 vim 操做写代码会以为很不习惯,甚至不知道怎么操做。然而用在支持 vim 指法的编辑上写代码你会以为如行云流水,若是再配个机械键盘,简直是享受,特别符合极客的风格。正则表达式
一旦学会了 vim 的指法,会让你终身受益,至少在你敲代码的年代会收益,毫无夸张, 它会让你摆脱烦人的,在敲代码的时候频繁的移动鼠标,这也是 vim 的设计理念之一 -- 脱离鼠标。vim
本篇文章比较适合前端开发者,由于我也只是用 vim 在前端领域作过一些开发,其余领域我没有发言权。微信
Q:你推荐 vim 是要咱们彻底放弃之前的编辑器而投入 vim 的怀抱吗?app
A:固然不是。首先 vim 的学习成本仍是很高的,由于他跟平时咱们用的编辑器敲代码的方式根本不一样,由于它是不用鼠标的,纯键盘操做。你想一想若是你在你的 vs code 上不用鼠标操做,你上下左右全靠方向键,那敲代码的速度得有多慢。并且初学者想把 vim 打形成一个本身的 IDE 仍是颇有难度的。因此我这里推荐的是,不论是你的 vs code、sublime等,装一个 vim 插件。我在 vs code 上试过,很爽,只不过如今投身到 emacs 的怀抱了。编辑器
虽然我用 emacs 了,我仍是会装 vim 插件(Evil)。若是有兴趣,下次能够推荐一下 spacemacs 。
开题说了这么多,就是想吸引一下你们,以为 vim 的指法是值得去学习的,接下来进入正题。工具
vim 上的全部定义的快捷键都是有必定的意义的,在这里我先把经常使用的一些列出来。学习
h(左)、l(右)、j(上)、k(下)、f(front)、b(back)、u(up)开发工具
d(delete)、i(insert)、a(append)、c(change)、y(copy)、p(paste)spa
w(word)、s(sentence)
vim 里面有好几种模式,可是由于我这里介绍的是在目前的编辑器里面装 插件,因此像命令模式这种用来保存文件、退出文件的就不介绍了。
当咱们记住上面的助记符以后,咱们就能够像写英文短语同样操做了。
vim 快捷键语法:operator[motion],例如 删两个单词就是
d2w,operator 和 motion 我已经在前面给出来一些了。
最基本的上下左右移动(跟键盘上下左右的键盘效果相同,可是每每方向键在键盘的右下方,离主键盘区较远,这个也相对比较有优点):
移动属于 motion,因此在前面加上「count」就能够移动多行了,好比向上移动 10 行,就能够 10k。每每编辑器会有行号,定位须要作个加减法,若是采用的是相对行号,用这个就比较方便。不懂相对行号的同窗看下图就懂了。
w:光标往前移动一个词
b:光标向后移动一个词
0:移动光标到当前行首
^:移动光标到当前行的第一个字母位置(注意与 0 的区别)
$:移动光标到行尾
fx:移动光标到当前行的下一个 x 处(x为任意字母)
tx:和上面一个命令相似,移动到 x 的左边一个位置
):移动光标到下一个句子
( :移动光标到上一个句子
{:移动光标到上一段
}:移动光标到下一段
在刚才介绍了经过相对行号来进行移动到行的光标,还有采用绝对定位来移动的。那就是 gg。
语法: [num]gg
书签功能:这个功能也是很方便,不多有编辑器有的功能,单独列出来说,强烈推荐。
Ctrl + b:向上移动一屏(Foward首字母小写)
Ctrl + f:向下移动一屏(Backward首字母小写)
Ctrl + d:向下滚动半屏内容(Down首字母小写)
Ctrl + u:向上滚动半屏内容(Up首字母小写)
在 normal 模式下是没有删除操做的,d 这种删除也是剪切。
以上全是 normal 模式
在前面也说了,进入编辑模式也就变成了「哑吧」vim 了,就跟通常的编辑器没什么区别了。不少人就知道用 i 能够进入,还有不少命令可让你聪明的进入。
要是前面都学会了,可视模式就比较简单了,并且你将会常常用到这个模式。我会把这个模式称作「选择模式」,接下来咱们就来探索一下是若是选择的。
其实也就两个关键的点:v(字符选择)、V(行选择)
在 normal 模式下,按一下 v,而后能够按 l,重复按 l,你会发现右边的在一直被选中(高亮的部分)。一样的操做,按了 v,而后再练习一下按 h、j、k。
选中的目的是什么呢?就是为了进行一些编辑操做,好比删除 d (实质是剪切)、复制 y。
小提示,经常选中以后用 c 也是比较好的选择哦,剪切并进入插入模式。
V 就是选中行,也很简单。按了 V 以后,而后按 j、k,就能够上下选择行了,而后一次性删除 d、复制 y,就比较方便。
这个功能就比较强悍了,很适用,强烈推荐。
先来记公式:operator + i|a + scope
operator 就是咱们前面提到的插入(c)、剪切(d)、复制(y)以及选择(v),i 表示 scope 范围内,a 表示包含 scope 标签,scope 就是操做的范围了。
实例:
如下若是将 i 换成 a,则会将符号也包含进去
vib(选中小括号内的内容)
viB(选中大括号内的内容)
vi"(选中双引号内的内容)
vi'(选中单引号内的内容)
vi<(选中尖括号内的内容)
u: 撤回上次操做(效果跟 command + z 效果同样)
/|?xxx:表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx能够是正规表达式。查找到之后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.
:%s/original/replacement:检索第一个 “original” 字符串并将其替换成 “replacement”
:%s/original/replacement/g: 检索并将全部的 “original” 替换为 “replacement”
:%s/original/replacement/gc:检索出全部的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换
这些操做通常编辑器都自带有很好的快捷键,记不住也没啥。
我写这篇文章的目的不是为了总结什么知识点(其实当你 vim 用熟了,这些命令彻底造成肌肉记忆了,根本不用记下来),或者说想发篇文章之类的,仅仅是想给 vim 作一个宣传,让更多的人接触 vim,让更多的开发者在开发上效率更高。若是你以为这篇文章对你有帮助,请转发给更多的人让他们都了解了解。
最后想提醒的就是,对于这些快捷键,死记是很难记完的,根据我总结的一些语义话的方式去记,有公式的记公式,可能要快一点,而后就是多实践,敲多了本身就记住了。我刚开始学的时候,还不知道有那些助记符,基本彻底靠死记硬背,我就是用一张纸,而后把命令手写抄到纸上,放在个人电脑旁,忘了就立刻拿来看看,别说,效果还挺好的。
祝大家好运!
你们好,我是桃翁,我为本身代言!
我的微信公众号,之后尽可能坚持每周一篇干货
参考文章:
VIM 百度百科
如何用Vim提升开发效率