Vim from zero to hero
- 本文链接:https://github.com/vim-china/hello-vim
- 作者:https://github.com/vim-china/hello-vim/blob/master/authors.md
转载请保留以上信息
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 |