vim 入坑指南

我的站点: 桃园

0. 前言

0.1 简介

vim 被誉为『编辑器之神』,与之同时代的 emacs 被誉为『神之编辑器』。能够看得出 vim 在编辑器的地位是很高的,得益于 vim 的指法,敲起代码来如行云流水。特别膜拜创始人创始出这么方便的敲代码的指法,这篇文章就是来带你入坑 vim 指法操做。前端

0.2 前端的我为何要学习 vim

在当今前端开发工具百花齐放的时代(VS Code、Sublime、Atom 以及 IDE Webstorm),我为何还要介绍 20 多年前开发的一个老古董呢?在这里我想说的是出身虽然老,可是所带来的价值并无减,一旦习惯了 vim 的指法以后,你会以为不用 vim 操做写代码会以为很不习惯,甚至不知道怎么操做。然而用在支持 vim 指法的编辑上写代码你会以为如行云流水,若是再配个机械键盘,简直是享受,特别符合极客的风格。正则表达式

一旦学会了 vim 的指法,会让你终身受益,至少在你敲代码的年代会收益,毫无夸张, 它会让你摆脱烦人的,在敲代码的时候频繁的移动鼠标,这也是 vim 的设计理念之一 -- 脱离鼠标。vim

0.3 文章适用读者

本篇文章比较适合前端开发者,由于我也只是用 vim 在前端领域作过一些开发,其余领域我没有发言权。微信

0.4 Q&A

Q:你推荐 vim 是要咱们彻底放弃之前的编辑器而投入 vim 的怀抱吗?app

A:固然不是。首先 vim 的学习成本仍是很高的,由于他跟平时咱们用的编辑器敲代码的方式根本不一样,由于它是不用鼠标的,纯键盘操做。你想一想若是你在你的 vs code 上不用鼠标操做,你上下左右全靠方向键,那敲代码的速度得有多慢。并且初学者想把 vim 打形成一个本身的 IDE 仍是颇有难度的。因此我这里推荐的是,不论是你的 vs code、sublime等,装一个 vim 插件。我在 vs code 上试过,很爽,只不过如今投身到 emacs 的怀抱了。编辑器

虽然我用 emacs 了,我仍是会装 vim 插件(Evil)。若是有兴趣,下次能够推荐一下 spacemacs 。

开题说了这么多,就是想吸引一下你们,以为 vim 的指法是值得去学习的,接下来进入正题。工具

1 助记符

vim 上的全部定义的快捷键都是有必定的意义的,在这里我先把经常使用的一些列出来。学习

1.1 正则表达式相关

  • $ : 移动光标到行尾
  • ^ : 移动光标到当前行的第一个字母位置。

1.2 移动类(motion)

h(左)、l(右)、j(上)、k(下)、f(front)、b(back)、u(up)开发工具

1.3 操做类(operator)

d(delete)、i(insert)、a(append)、c(change)、y(copy)、p(paste)spa

1.4 通常的缩写

w(word)、s(sentence)

2 理解 vim 中三种经常使用模式

vim 里面有好几种模式,可是由于我这里介绍的是在目前的编辑器里面装 插件,因此像命令模式这种用来保存文件、退出文件的就不介绍了。

  1. Nomal mode(默认模式,由于使用该模式场景最多,全部定为默认模式)。
  2. Insert mode (插入模式--少用,用了它 vim 就成 「哑吧」了)。
  3. Visual mode(可视模式,取名叫光标模式或者选择模式可能还比较好理解)

2.1 三种模式之间的转换关系

图片来源参考文章

3 教程篇

当咱们记住上面的助记符以后,咱们就能够像写英文短语同样操做了。

vim 快捷键语法:operator[motion],例如 删两个单词就是
d2w,operator 和 motion 我已经在前面给出来一些了。

3.1 移动光标

3.1.1 最基本的 h、j、k、l

最基本的上下左右移动(跟键盘上下左右的键盘效果相同,可是每每方向键在键盘的右下方,离主键盘区较远,这个也相对比较有优点):

  • h:光标向左移动
  • j:光标向下移动
  • k:光标向上移动
  • l:光标向右移动

移动属于 motion,因此在前面加上「count」就能够移动多行了,好比向上移动 10 行,就能够 10k。每每编辑器会有行号,定位须要作个加减法,若是采用的是相对行号,用这个就比较方便。不懂相对行号的同窗看下图就懂了。
相对行号

3.1.2 快速移动

w:光标往前移动一个词
b:光标向后移动一个词
0:移动光标到当前行首
^:移动光标到当前行的第一个字母位置(注意与 0 的区别)
$:移动光标到行尾
fx:移动光标到当前行的下一个 x 处(x为任意字母)
tx:和上面一个命令相似,移动到 x 的左边一个位置
):移动光标到下一个句子
( :移动光标到上一个句子
{:移动光标到上一段
}:移动光标到下一段

3.1.3 快速定位

在刚才介绍了经过相对行号来进行移动到行的光标,还有采用绝对定位来移动的。那就是 gg。
语法: [num]gg

  • 2gg : 光标移动到第 2 行
  • gg: 光标移动到文件首部
  • G:移动到文件胃部
  • H:移动到屏幕上面
  • M:移动到屏幕中间
  • L:移动到屏幕下面

书签功能:这个功能也是很方便,不多有编辑器有的功能,单独列出来说,强烈推荐。

  • m<x>:给当前行加入书签,x 为任意字母(m 是 mark )
  • ` <x>: 单引号加上刚才 m 以后的字母,就会调整到刚才标记的那一行

3.1.3 屏幕滚动

Ctrl + b:向上移动一屏(Foward首字母小写)
Ctrl + f:向下移动一屏(Backward首字母小写)
Ctrl + d:向下滚动半屏内容(Down首字母小写)
Ctrl + u:向上滚动半屏内容(Up首字母小写)

3.2 剪切、复制、粘贴

  • d[n]w:剪切后面 n 个单词的内容,dw 是剪切当前单词
  • [n]dd:剪切n行的内容, dd 为剪切当前行
  • D:剪切光标后到行尾的内容
  • yy/Y:复制当前行的内容
  • p:粘贴到光标后
  • P:粘贴到光标前

在 normal 模式下是没有删除操做的,d 这种删除也是剪切。

以上全是 normal 模式

3.3 编辑模式

在前面也说了,进入编辑模式也就变成了「哑吧」vim 了,就跟通常的编辑器没什么区别了。不少人就知道用 i 能够进入,还有不少命令可让你聪明的进入。

  • i:在光标处插入(insert首字母小写)
  • I:在行首插入(insert首字母大写)
  • a:在光标处后一个字符插入(append首字母小写)
  • A:在行尾插入(append首字母大写)
  • o:在上一行插入
  • O:在下一行插入
  • s:清除当前字符并进入插入模式
  • cc/S:清除当前行并进入插入模式
  • cw: 清除当前单词并进入插入模式

3.4 可视模式

要是前面都学会了,可视模式就比较简单了,并且你将会常常用到这个模式。我会把这个模式称作「选择模式」,接下来咱们就来探索一下是若是选择的。

其实也就两个关键的点:v(字符选择)、V(行选择)

3.4.1 v(小写 v)

在 normal 模式下,按一下 v,而后能够按 l,重复按 l,你会发现右边的在一直被选中(高亮的部分)。一样的操做,按了 v,而后再练习一下按 h、j、k。

选中的目的是什么呢?就是为了进行一些编辑操做,好比删除 d (实质是剪切)、复制 y。

小提示,经常选中以后用 c 也是比较好的选择哦,剪切并进入插入模式。

3.4.2 V(大写 V)

V 就是选中行,也很简单。按了 V 以后,而后按 j、k,就能够上下选择行了,而后一次性删除 d、复制 y,就比较方便。

3.5 组合操做

这个功能就比较强悍了,很适用,强烈推荐。
先来记公式:operator + i|a + scope

operator 就是咱们前面提到的插入(c)、剪切(d)、复制(y)以及选择(v),i 表示 scope 范围内,a 表示包含 scope 标签,scope 就是操做的范围了。

实例:
如下若是将 i 换成 a,则会将符号也包含进去
vib(选中小括号内的内容)
viB(选中大括号内的内容)
vi"(选中双引号内的内容)
vi'(选中单引号内的内容)
vi<(选中尖括号内的内容)

3.6 撤回、查找、替换

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” 前,先询问是否替换

这些操做通常编辑器都自带有很好的快捷键,记不住也没啥。

4 结束语

我写这篇文章的目的不是为了总结什么知识点(其实当你 vim 用熟了,这些命令彻底造成肌肉记忆了,根本不用记下来),或者说想发篇文章之类的,仅仅是想给 vim 作一个宣传,让更多的人接触 vim,让更多的开发者在开发上效率更高。若是你以为这篇文章对你有帮助,请转发给更多的人让他们都了解了解。

最后想提醒的就是,对于这些快捷键,死记是很难记完的,根据我总结的一些语义话的方式去记,有公式的记公式,可能要快一点,而后就是多实践,敲多了本身就记住了。我刚开始学的时候,还不知道有那些助记符,基本彻底靠死记硬背,我就是用一张纸,而后把命令手写抄到纸上,放在个人电脑旁,忘了就立刻拿来看看,别说,效果还挺好的。

祝大家好运!

你们好,我是桃翁,我为本身代言!

我的微信公众号,之后尽可能坚持每周一篇干货
我的微信公众号

参考文章:
VIM 百度百科
如何用Vim提升开发效率

相关文章
相关标签/搜索