Back

键盘艺术的练习之路:vim和emacs

如何成为一个出色的键盘演奏者

两年前,我写了一篇叫做「如何像演奏乐器一样打字」的文字。那个时候,我改进了一个虽然非常微妙,但并不trivial的键盘使用技法,那就是使用shift键而不是caps lock键来切换大小写。这样做的好处在于:

  • 并不是所有的键盘的caps lock键都是用来切换大小写的,比如Mac的中文键盘这个位置的键是用来中英文切换的。
  • 我们需要持续输入大写字母的场合并不多,而且个人非常讨厌看到一堆连续的大写字母。需要大写字母的场合,往往都需要紧跟小写字母,这样如果是用caps lock反而会降低输入速度(热知识:SQL是大小写不敏感的,你可以一直根本不输入大写字母)

プロのようにvimを使う

最近练习的新技巧是很多人都已经可以熟练使用的vim快捷键。长久以来,我对于vim的习得程度就是「能用」。在没有GUI的计算机上我不得不效率低下地使用它编辑文本,但一到真正需要高效编辑的情形,我又会切换成最符合直觉的输入方式。

不过,我至少可以记忆vim快捷键的原因在于:长久以来我都在浏览器(Chrome和Firefox)上使用一个叫做Vimium的插件,你可以用vim的快捷键浏览网页,比如 j向下滚动, k向上滚动, /搜索, gg到网页最上方, G到网页底部。那个时候我曾经有一个仅仅使用键盘来流畅使用计算机的梦想。

最近一两个星期,我痛定思痛,决定纯粹使用vim快捷键来写代码。我大概需要追加记忆的快捷键大概有:o从下一行插入, a从一格插入, $定位到行尾, ^定位到有文字的行首, 0定位到行首, y复制, p粘贴,d删除。

经过一两个星期的习惯之后,现在已经可以非常熟练地输入了。尽管我觉得使用vim快捷键替代原来的输入方式在实际上并不一定能够带来什么好处,但我认为这是一个将键盘使用作为演奏艺术来看待的人的必修课。

除此之外,我觉得它还拥有的好处是,它会强迫你输入英文,因为vim快捷键仅在英文输入法下生效,在需要切换中英文的场景下,使用vim快捷键效率不高。于此同时,在工作的时候练习vim给枯燥的工作增添了乐趣。


意外にemacsも習得

众所周知,在编辑器领域,一直有所谓「编辑器之神」vim和「神之编辑器」emacs双足鼎力的说法。

长久以来,我都对RMS 充满了敬佩,因此在我心中,emacs永远是是格调的顶层。但它似乎离我非常遥远,我曾经尝试学习过一次emacs,但什么也记不住。

在这次练习vim快捷键的时候,有一个意外之喜,那就是被同时告知,MacOS其实原生就在文本编辑上绑定了emacs的快捷键。这样一来,在自己的打字风格中融入一点emacs就多了许多的现实意义。比如在很多地方control + a意味着移动到行首,control + e 意味着移动到行尾……诸如此类。于是我大概学习了10个左右的emacs快捷键,发现他们可以在非常多的场合下使用这些快捷键。我进一步替代了上下左右四个方向键的使用。

于此同时,我还意识到了vimemacs在哲学上的不同:

vim通过两个形态(insert mode 和非 insert mode)让同样的键盘多了更多的功能,同时可以通过连续的指令组合成更复杂的指令,众所周知,这是Unix的哲学。

emacs则是通过control键区分了「输入字符」和「输入命令」这两件事,也就是说,emacs强迫你不得不有时候同时按下两个以上的按键,这就是键盘演奏的「和弦」。


将来は?

对于一个中文世界的职业的键盘演奏者,我觉得我也不得不思考如何让中文输入更具艺术性。我现在使用的是拼音输入法,而且我不打缩写,也就是说,如果我要说:

如何像演奏乐器一样打字

我的输入是

ru he xiang yan zou yue qi yi yang da zi

而不是类似下面这种

rh xiang yz yq yy dz

中文的输入是更复杂的问题,它是一个在「准确度」和「效率」之间折中的艺术。如果你像下面的例子那样打了太多缩写,那么寻找正确的词汇会耗费你不少的时间,远远比你打全拼慢,而且如你看到的那样,没有任何技术和反思,我认为非常不优雅。

现在摆在我面前的选择有「五笔」和「双拼」,据说这两者是中文输入效率的极致,一个纯熟的「五笔」或是「双拼」的演奏者就像一个熟练的钢琴演奏家那样,光是看他们的输入,就使人心旷神怡。

「五笔」输入是一种颇为日式的选择,据我观察,熟练的日文输入者习惯使用键盘的假名输入日文,这样他们一次触键就能够抵得上我两次(假名往往是一个辅音一个元音,比如一个就比得上我输入mo触键两次),使用五笔的原理我想于此类似。但问题是,「五笔」是一种日渐衰败的艺术。我觉得一个新时代的拼音使用者还是应当弃暗投明,因此,我将「双拼」视为我下一步精进的目标。


付「如何像演奏乐器一样打字」的原文:

mooxiu 2019-07-20 18:50:35

小时候刚学习打字的时候,老师告诉我,左手四指应该放在A S D F上,而右手J K L 以及分号上,中间留出G H的空格,两只空闲的大拇指放在空格键上。

那个时候我住在父母的员工宿舍,一到放月假的时候,父亲的同事就会给我他宿舍的钥匙,我可以去使用他的电脑。但是那个时候电脑里面什么都没有,你可以想象,一个Windows98的系统,没有网线,你可以干什么。我那个时候还没办法打开命令行或者VBA给自己找点乐子。我猜我可能玩了有一千局的「纸牌」,五百盘的「空当接龙」和两百盘「红心大战」。

除此之外的活动就是练习打字。那个时候打字很快似乎是一件值得炫耀的事情,而且可能在大人的眼里也不是什么坏事。不仅我自己,我印象中我爸妈也苦练过打字,那是更久之前了。我印象中他们不仅可以使用五笔打字(Which 我现在还不会),甚至可以不看键盘盲打。但那个时候我并不把打字很快当作一件值得炫耀的,酷炫的事情,反而是当成一种一本正经,仿佛是和考试得了高分一样的那种优质特长。

我几乎每个周末都会在叫类似「金山打字」这样的名字的软件上花费五个小时以上。但我不仅没能熟稔盲打,而且还养成了偏离科学指法的怪癖。从我现在的习惯来说,我的右手可以说还是不偏不倚地放在J K L ;这四个键上,左手则是完全向左边移动了一位。小拇指放在大写键上,剩下三只手指则是A S D。原本仅仅应当空出G H,我则带着F一道空了出来。问题是,我用这种怪异的打字方式打起字来却是异常迅速。每到放假回家,我妈看着我对着电脑奋笔疾书的时候(我总觉得现在电脑键盘在我妈眼里就像是一摊油腻的猪肉,她总是用一根指头去小心翼翼地拨弄它们),都会抱怨「我整天听着你的键盘咚咚咚的声音!」。

但这不是我的问题,我不知道所谓「科学的键盘指法」这种东西是不是真的存在,但我现在想,这种东西或许根据内容的不同而各异。我现在的职业,姑且也算是写程序的一种,虽然也算不得什么了不起的代码,但多少每天也得输入不少东西。众所周知,不同的编程语言有不同的编程风格,比方说对于大小写就有自己的看法。就各位喜欢的Python而言,输入变量名或者是函数名,完全不需要切换大小写,仅仅在不同的单词之间插入下划线就行;Java则是老派的驼峰式命名规则,作为变量名的第一个单词之后的每一个单词首字母都应当大写,这种情况下,大小写字母的转换则是影响打字速度的核心。

关于打字,我常常会用演奏乐器来比对。我小时候学过二胡,摸过小提琴,长大之后弹过一点吉他和贝斯。尽管乐器各不相同,但是指法上都有共同点,那就是指尖按弦,而且按弦的时候要尽可能与指板垂直。(当然,我们可以看到一些朋克乐手按弦的时候往往不拘小节,左手斜着整个一块儿都按在弦上的情况也是有的,当然朋克乐手在很多人眼里都不算在演奏乐器。)我关注的一个问题是:如何弹得快呢?(如何优雅而快速地打字呢)

当然指法上而言,剪短指甲(露出指尖的肉),指尖按键是最基本的。我想,指尖按键可以避免不必要的动作,而且也可以最快地按在键盘上。剪短指甲则减少了错误按键。

另一个方面则是灵活使用小指以及快速变换把位。小指一直以来是刚刚学习乐器演奏的难点——它们很少被使用,往往不够有力,而且不够灵活,仿佛它们有一半不受我们本人控制。科学的演奏训练必然是有专门针对小指的练习曲。而变换把位,在我看来则是跟小指的灵活度是一种互补的关系。本来我们可以用小指头勾到的一个音,我们也可以移动整个左手用其他更灵活的指头去按。后者就是我现在的打字习惯,当我把左手向左边移动一位的时候,我事实上就是因为左手的小拇指不够灵活没办法平稳迅速地按到类似Shift键这种地方。

这就是我昨天在上班的时候意识到的问题,我废弃了对于左手小拇指的努力,而将迅速打字的希望寄托在了我的左手可以飞速移动上。久而久之,更加复杂的曲目(更加复杂的打字流程)一定会让我捉襟见肘。(尽管莫扎特有所谓用鼻子按琴键)。我觉得我愧对我受过的音乐训练。于是我开始在切换大小写时,努力训练自己用小指头去按住Shift键,而不是用无名指按一下CapsLock(所谓大写键)。尽管一开始,这种与我过去十几年打字生涯相悖的触键方式令我感到不适,但我知道,我现在终于走在一个正确的道路上了。我可能是整间办公室打字最优雅,指法最科学的键盘演奏家了。

不仅如此,我们怎么能忘了演奏乐器最核心的一点——情感呢?

我想象着Glenn Gould或者Keith Jarret弹钢琴的样子,我起伏着上身,感受着键盘上波浪一般的涌动的双手敲击的节奏,当然也别忘了用脚尖去轻轻踩脚下虚幻的踏板(这样音符会更柔和),我更确信,我是整个办公室,整个办公楼,整个街道,最优雅的键盘使用者了。


If you like my article and want to make a donation, you can click the 捐赠 Donation button on the side bar.

Built with Hugo
Theme Stack designed by Jimmy