这一章我们会讲到怎么更有效地学习Vim,不过在此之前需要先做一些小小的准备。
让我们先创建一个mapping,这个mapping会为你的左手减轻很多负担。执行下面的命令:
~~~
:inoremap jk <esc>
~~~
ok,现在进入插入模式然后敲击`jk`。Vim会返回到常用模式,就像你敲击了escape按键一样。
在Vim中有很多默认的方式可以退出插入模式:
* `<esc>`
* `<c-c>`
* `<c-[>`
使用上面的这几种方式,你都需要伸出你的爪子,这会让你感到很不自在。使用`jk`会很棒,因为这两个按键正好就在你最强健有力的两个手指下面,并且你不用搞得好像在演奏吉他和弦似的移动手指。
有些人可能更喜欢使用`jj`,但我更钟意`jk`,有两个原因:
* 使用两个不同的按键,你可以“滚动”你的手指而不是把同一个按键按两次。
* 如果你出于习惯在常用模式下按了`jk`,只会将光标向下移动一下,然后又向上移动一下,最终光标还是停留在原来的位置。但是在常用模式下按了`jj`的话,只会把光标移动到一个不同的地方。
不过需要注意的是,如果在你所用的语言中`jk`会经常组合出现(例如德语),你可能就需要选择一个不同的mapping了。
## 学习Map
ok,现在你已经有了一个新的mapping,你会怎么学习使用它呢?特别是你已经用了这么久的escape按键,使用escape按键都已经刻入了你的脑子中,以至于在编辑的时候你会不假思索的敲击它。
重新学习一个mapping的窍门就是_强制_将之前的按键设置为不可用,_强迫_自己使用新的mapping。执行下面的命令:
~~~
:inoremap <esc> <nop>
~~~
这个命令会告诉Vim在插入模式下敲击escape按键后执行`<nop>`(no operation),这样escape按键在插入模式下就无效了。ok,现在你就_不得不_使用`jk`这个mapping来退出插入模式了。
一开始你可能不太适应,你还是会在插入模式下敲击escape按键,并且以为已经退出到了常用模式,然后开始敲击按键准备在常用模式下做一些事情,从而导致一些不需要的字符出现在你的文本中。这会让你感到有些不爽,但如果你坚持一段时间后,你会惊讶的发现你的思维和手指会多么快的适应 新的mapping。用不到一到两个小时你就不会再在插入模式下敲击escape了。
这个方法适用于所有的用于替代原有操作方式的新mapping,包括在生活中也是如此。当你想改掉一个坏习惯的时候,你最好能够想一些办法使得这个坏习惯很难甚至是不能发生。
如果你想学会自己做饭,不想每天都吃盖浇饭,那么每天下班的时候就不要去成都小吃了。这样你就会在饿了的时候想办法去做点东西吃,当前你先要确保你家里没有泡面。
如果你想戒烟,那你就不要把烟带在身上,把它放到车上。这样当你的烟瘾又犯了的时候,你会觉得走到车里去取烟是一件很蛋疼的事,这样你就不会吸了。
## 练习
如果还是会在Vim的常用模式中使用方向键移动光标,那么就将它们映射为`<nop>`。
如果你在编辑模式下也会使用方向键,同样的,映射为`<nop>`吧。
正确使用Vim的关键就是使得自己能够快速的离开插入模式,然后在常用模式下进行移动。
- 前言
- 鸣谢
- 预备知识
- 打印信息
- 设置选项
- 基本映射
- 模式映射
- 精确映射
- Leaders
- 编辑你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 锻炼你的手指
- 本地缓冲区的选项设置和映射
- 自动命令
- 本地缓冲区缩写
- 自动命令组
- Operator-Pending映射
- 更多Operator-Pending映射
- 状态条
- 负责任的编码
- 变量
- 变量作用域
- 条件语句
- 比较
- 函数
- 函数参数
- 数字
- 字符串
- 字符串函数
- Execute命令
- Normal命令
- 执行normal!
- 基本的正则表达式
- 实例研究:Grep 运算符(Operator),第一部分
- 实例研究:Grep运算符(Operator),第二部分
- 实例研究:Grep运算符(Operator),第三部分
- 列表
- 循环
- 字典
- 切换
- 函数式编程
- 路径
- 创建一个完整的插件
- 旧社会下的插件配置方式
- 新希望:用Pathogen配置插件
- 检测文件类型
- 基本语法高亮
- 高级语法高亮
- 更高级的语法高亮
- 基本折叠
- 高级折叠
- 段移动原理
- Potion段移动
- 外部命令
- 自动加载
- 文档
- 发布
- 还剩下什么?