vim 和 emacs 是牛人们的两大神器,sublime-text则是每一个人的编程利器。程序员
先说一下本人的感觉,vim用了一段时间,emacs也小试了一下,两大神器满是各类命令,另人眼花缭乱。编程
可是有一点我要提一下,vim 和 emacs 的 tutorial (基础教程)都是从 上 下 左 右 开始的,vim
vim 是 h(左) j(下) k(上) l(右),emacs 是 Ctrl-b(back:左) Ctrl-f(forward:右)sublime-text
Ctrl-n(next:下) Ctrl-p(previous:上),键盘上明明有上下左右键,为何要重复造轮子呢?优化
不光如此,包括 pageup pagedown home end 键两大神器也都进行了按键映射。教程
但是这些键明明都有啊!emacs
这里说明一下个人想法,键盘上是有方向键和编辑区,不光如此还有小键盘区,彷佛功能很全面,分工很明确。io
是的,对于普通人来讲这样的分工明确的键盘很受欢迎,毕竟一个萝卜一个坑,脑壳不乱。基础
但是对于程序员来讲,这个事情就得好好想想了,程序员无时无刻不在和键盘打交道,并且不一样于通常的输入,scroll
代码每每须要反复的修改,光标来回的挪动,文本反复粘贴复制。若是不合理地利用键盘,程序员的手将会受到
无尽的摧残。几乎每一个编程过一段时间的人都会有这样的感受,小键盘是用的最少的,主键盘区就不用说了,
由于要输入这个不可或缺,而编辑键和方向键又由于要反复地修改,因此使用频率也是很大的,鼠标自不用多说,
毕竟是在图形界面下,总要用一用的,加之鼠标功能全面,控制精确,有时也能够替代光标键和编辑区。
程序员的手(右手为例)主要处于如下四种状态:
1. 两手放在主键盘区,进行输入操做
2. 一只手放在主键盘上,另外一只手移动光标键
3. 一只手放在主键盘上,另外一只手放在小键盘上输入数字
4. 一只手放在主键盘上,另外一只手移动鼠标
每变幻一种状态,手腕(主要是右手腕)总要挪动一下,这对于时刻操做键盘的程序员来讲简直就是噩梦。
移动手腕比敲几个字符要累好多的,因此咱们的目标是尽量地减小状态数目,并进一步减小切换次数。
(其实减小状态总数,目的就是为了减小切换次数)
结合各键盘区功能和程序员的四种操做方式,咱们能够进行一些优化。
考虑到小键盘区输入频率较少的特色,咱们直接废掉小键盘,改成主键盘区输入,这样直接减小了一种状态。
方向键和编辑区使用频率比较大,看似不可或缺,可是鼠标又能够彻底替代它,二者只能二选其一。
咱们是在图形界面下工做,鼠标真是不能废,而方向键则不一样了,vim 和 emacs 首先就解决了方向键的
问题(固然编辑区也解决了),因此咱们决定把中间的鸡肋——方向键和编辑区,也给废掉。
那有的人说了,vim 和 emacs 太复杂了,我不会用怎么办?
^_^,咱们今天的主角登场了,sublime-text。最初被她吸引,是由于华丽的 monokai 主题界面,
后来渐渐体会到她那无微不至的细节,深深陷入其中,没法自拔。
对于用过 vim 或是 emacs 的用户,建议您选择 sublime-text 提供的 vintage mode 或是 emacs mode。
而对于没用过两大神器,或是不打算用两大神器的童鞋来讲,本位为您提供如下几个键绑定来消除方向键和编辑区这个鸡肋。
// up { "keys": ["ctrl+p"], "command": "move", "args": {"by": "lines", "forward": false} }, // down { "keys": ["ctrl+n"], "command": "move", "args": {"by": "lines", "forward": true} }, // left { "keys": ["ctrl+b"], "command": "move", "args": {"by": "characters", "forward": false} }, // right { "keys": ["ctrl+f"], "command": "move", "args": {"by": "characters", "forward": true} }, // half page up, you can change 15 to other number { "keys": ["ctrl+u"], "command": "scroll_lines", "args": {"amount": 15.0}, "context": [{ "key": "setting.command_mode" }]}, // half page down, you can change 15 to other number { "keys": ["ctrl+d"], "command": "scroll_lines", "args": {"amount": -15.0}, "context": [{"key": "setting.command_mode"}]}, // home, you can change ctrl+h to other key binding { "keys": ["ctrl+h"], "command": "move_to", "args": {"to": "bol", "extend": false} }, // end, you can change ctrl+e to other key binding { "keys": ["ctrl+e"], "command": "move_to", "args": {"to": "eol", "extend": false} }, // ctrl+left, you can change ctrl+l to other key binding { "keys": ["ctrl+l"], "command": "move", "args": {"by": "words", "forward": false} }, // ctrl+right, you can change ctrl+r to other key binding { "keys": ["ctrl+r"], "command": "move", "args": {"by": "word_ends", "forward": true} },