Skip to content

Latest commit

 

History

History
125 lines (86 loc) · 5.56 KB

README.md

File metadata and controls

125 lines (86 loc) · 5.56 KB

Vim 从入门到精通

Vim from zero to hero

转载请保留以上信息

Vim 的教程相对比较零散,系统的教程比较少,我也阅读过不少教程,走过很 多弯路。借着 Vim-china 组织组建这一契机,整理下自己学习过的内容, 分享给大家。

简介

Vim 是一款开源的模式化文本编辑器,项目源码公开在 Github。Windows 用户 可以从此下载最新的每日构建版: vim-win32-installer

什么是模式

Vim 不同于其他编辑器的主要特点就是模式化。什么叫做模式化?可以理解为 编辑器的一种状态,不同的状态下对用户的输入采取不同的响应方式。比较常 见的模式有 Normal(普通模式),Insert(插入模式)和 Visual(可视模式)。

Vim 打开是默认的模式是 Normal 模式,在这一模式下,按键不能直接将字符插入至文件,而是执行各种命令。比如 h 按键不是输入字符 h,而是将光标 向左移动一个字符位置。

插入模式,顾名思义,在这个模式下,按键的字符是直接插入的。

可视模式,这一模式有点类似于在普通编辑器里按住鼠标左键移动鼠标,即进行选择。

如何在模式之间切换

普通模式是 Vim 默认模式,任何模式下通过 <ESC> 按键都可以切换到普通模式。 普通模式想要切换到插入模式,方法有很多。比较常用的按键如下:

按键 描述
i 在当前光标字符前插入
a 在当前光标字符后插入
I 在当前行首插入
A 在当前行尾插入

普通模式切换到可视模式,按键就比较单一了,比较常用的是:

按键 描述
v 选中当前光标字符,并进入可视模式        
V 不同于小写 v,这时移动光标只会按行选择

可视模式切换到输入模式一般有以下几种情况:

按键 描述
s 删除当前已选择的内容,并进入插入模式
c 删除当前已选择的内容,并进入插入模式
di 删除当前已选择的内容,并进入插入模式

可视模式回到普通模式也有很多方式,比较直接的就是<ESC>,当然,还有其他一些按键:

按键 描述
y 复制当前选择区域,并退出可视模式        
Y 复制当前选择区域(按行),并退出可视模式

基本概念

Vim 的各种命令是可以灵活组合变通的,命令是解决问题的手段。

基本操作

Vim 的各种移动命令主要是在 Normal 模式下。最基本的移动命令是光标的上下 左右移动,当然,你可以使用方向键,但是我想更多的 Vim 用户比较喜欢使用 h、j、k、l 按键。

按键 描述
h 光标左移
j 光标下移
k 光标上移
l 光标右移

学会了这四个移动命令,你就可以自由地移动你的光标了,开始尽情地上下左右!

慢着,一个光标一个光标移动多慢啊,电脑上的其他编辑器可以鼠标定位, 还有那么多触控设备可以直接定位光标,用 Vim 的用户难道是慢吞吞的乌龟么?

还记得一开始说的灵活使用命令么?你可以输入“数字+移动命令”,一次性进行多次移动。

按键 描述
n+h 光标左移 n 个位置 ,n(umber) 指数字
n+j 光标下移 n 个位置 ,n(umber) 指数字
n+k 光标上移 n 个位置 ,n(umber) 指数字
n+l 光标右移 n 个位置 ,n(umber) 指数字

带上了数字后,你发现光标健步如飞,仿佛穿上了跑鞋:)

开放思想,当你编辑一个小文件时,正好光标在一行中部,你想跳到行首,你可以99h, 当你在文件中部,你可以99k跳到第一行,同理其他移动命令来达成行尾、末行的效果。

但如果一个文件有几万行几万列,我们也这样输入一个无穷大的数字来跳转么?

放心,Vim 已经内置了这些该有的命令。

当然 Vim 还有其他常用的移动光标的按键:

按键 描述
0 跳到行首,可以理解为无穷大的h
^ 跳到行首开始的第一个非空白字符
$ 跳到行尾,可以理解为无穷大的l
gg 跳到首行,可以理解为无穷大的k
G 跳到末行,可以理解为无穷大的j