[Vim] Vim简文系列(基础篇)Mon Sep 11 2017

由于知乎的主账号被知乎封了: 亦俊 导致无法登陆,也无法继续维护知乎的Vim专栏,作为原版主表示非常的遗憾,超过4000+的Vim粉丝,如今已经将专栏转手交给了赵启明北大的高材生维护(版主)。当然,我对于Vim的热情并不会因此消减,这里整理一篇Vim的基础知识,后续还会有高级用法,组合式操作,如何更快,更高效的完成日常编辑操作,减少重复劳动。


简介

Bill Joy 发明了Vi,而后续由Bram Moolenaar完善发展成为Vim (Vi Improved),改良版的Vi(Vim)同时提供了众多的接口,可以支持通过各种语言为其编写扩展.

从1976 Bill Joy 发明它至今已经41年的历史了,这款古老的编辑器吸引了我的关注,从2014年学习前端的同时,由于以往的编辑器编辑方式太笨拙,鼠标加常规键盘,因此我需要一款能够快速编辑,并且可配置的编辑器,如此一来,Sublime Notepad++ Vim三者中,Vim就成为了我最终的选择.


模式的概念

Vi对编辑工作划分了模式的概念:

  1. Normal模式 (常规模式)
  2. Insert模式 (插入模式)
  3. Visual模式 (选择模式)
  4. Replace模式 (替换模式)

清楚的区分模式是Vim入门的基础,编辑时往往需要在不同的模式之间进行来回切换,以下我们简单的介绍各种模式.


NORMAL 模式

Vim打开的时候,通常就停留在Normal模式,文本光标为浮动状态,可以通过j,k,l,h 对其进行位置的移动,在Normal模式下也允许通过按下:, 进入指令输入状态,来完成各种快速批量操作。


INSERT 模式

Normal 模式下按i, 则进入Insert模式,这个模式下允许用户像使用记事本那样输入,编辑,执行各种常规的文本操作。但是初始化绑定的快捷键是根据系统,配着的不同来决定的。


Visual 模式

只要选中文本时,模式就会变为选择模式,可以对选中部分的文本执行快速操作


Replace 模式

在原有文本内容的基础上,对某个位置的字符进行覆盖式替换操作


基础快捷键

在介绍快捷键之前,我想优先介绍 Vim 中的 help指令,这是一个非常有用的指令,无论是在自学,还是查找问题,都可以帮你快速的定位到原生的Vim Help 文档输入指令是在Normal模式下,按下:(分号)键位,然后输入指令,按下Enter执行。

例如: 我不并不清楚 :w:q 有什么作用, 那么我们可以借助help指令进行查询 ,如图:(是不是很棒? 和Linux中的man很像)


Normal 模式中常用的基本快捷键

注意,在Vim中,是区分大小写的,也就是说,aA两者的作用是不同的.

快捷键作用
h j k l左,下,上,右
i进入Insert模式(插入模式)
ESC 或 Ctrl+[从其他模式或场景下,回到Normal模式(常规模式)
:(Normal)常规模式,(Virtual)选择模式下开始输入指令
gg光标位置回到最顶部
G光标位置回到最底部
v从光标位置起,进入选择模式
V选中当前一行,进入选择模式
d光标进入删除状态,等待下一个案件
D光标位置起(不包括当前光标位置)删除当前行后所有字符
a跳转光标位置字符后一个字符位置,并进入插入模式
c光标位置起剪切文本
C光标位置起剪切当前行所有的文本
A跳转到当前行最后末尾的位置,并进入插入模式
u撤销一次模式切换时间内的修改(请注意查阅Help)
f向后查找当前行内,特定的一个字符,并将光标移动到该字符的位置上
F向前查找当前行内,特定的一个字符,并将光标移动到该字符的位置上
r将当前光标下的字符,替换成指定的字符
R光标位置起直接进入Replace模式(替换模式)
w向后光标跳转过一个单词+空白字符的长度
e向后光标跳转过一个单词的长度(单词最后一个字符位置)
b向前光标跳转过一个单词的长度
o快速向下,另起一行,并进入插入模式
O快速向上,另起一行,并进入插入模式
y等待复制,在选择模式下直接复制选中文本
Y复制光标之后的一行内的文本
p在当前光标位置执行粘贴操作
P在当前光标位置所在行末尾执行粘贴操作

熟悉模式和基本的按键之后,才可以继续后面的学习,建议是多用Help文档,帮助自己快速定位键位信息,查询用法