要用越大入门代码工具Vim(工具文本自己的操作的是)

编者按:现在的技术界有一种倾向,将软件/应用操作简单化,用户能轻松上手
但是工具是否强大,取决于它能否灵活地满足使用者的各种需要
有些工具虽然很难入门,学会了便能对自己的操作有更深的层次的了解,能赋予创造和表达更大的自由度
本文编译自Quartz的原题为“Forget easy-to-use design. Choose something hard instead”的文章
Vim是一款文本编辑器,基于上世纪70年代开发的vi
试过的人都公认说难,就连程序员都觉得光是退出程序都不那么简单
但是Vim的用途很广,不管你用的是Mac还是Windows,软件都是已经自带的
而且,只要掌握了使用方法的人,很可能会逢人就安利不止
“这简直就是最好用的文本编辑器,跟汉堡店In-n-Out的汉堡一样让人满意
” 我就是Vim“神教”的信徒之一
现在我也要来安利一下
但是,我只是用Vim为例子,我要安利的不单是这款软件,而是各种“难用”的技术工具
Vim是从vi发展出来的一个文本编辑器, 在代码补全、编译及错误跳转方面,编辑功能特别丰富,很多程序员都使用Vim
Vim和Emacs并列成为类Unix系统用户最喜欢的编辑器
Vim的第一个版本发布于1991年,最初简称是为Vi IMitation,后来功能不断增加,正式名称改成Vi IMproved
Vim是一款自由软件
现在技术界有一股潮流,工具好不好,似乎都取决于是否易用
照这样的思维,最好的软件就是无需说明书,无需解释,无需教程,你只需要按1或者0
简单到这种地步,五岁的娃娃也可以很快上手应用自如了
这样的标准听起来很理想, 但是“简单”不是没有代价的,而且五岁孩子可不聪明,简单易用的工具,可想而知,肯定不是灵活的
如果一款软件将所有操作都简化成一个按钮,那么这个按钮在设计的时候,就需要对用户的操作做出很多假设
如果这些假设不符合你的具体情况的话,只能算你运气不好
举一个很明显的例子
智能手机和笔记本电脑就有很大的不同
在智能手机的应用里,比如Whatsapp,长按链接就会复制链接
那么,这个操作背后的假设就是——Whatapps的开发者想的是,如果用户长按链接,他们可能是想复制链接
但是事实可不一定如此
或许我长按是想分享链接到其他应用呢?或者我只想复制链接中的一部分内容,还有可能我是想将链接保存到稍后阅读清单里
这些操作在笔记本上都很简单,但是在手机上,有时反而很麻烦
问题就在于开发者觉得“易用”的设计,他们想象中的用户需求,以及用户真正的需求不总是吻合的
用户长按文本可能是想分享,怎么就复制了呢?Word也是如此,又是它总是自动缩进,改都改不了
如果软件开发者总是习惯于帮用户做决定,根据自己的假设来设计软件或应用的功能,这样的不匹配只会越来越普遍
这也是复杂工具的优势所在
与其想办法、花时间找最简单易使用的工具,倒不如花点时间掌握最强大的工具,然后精准地实现自己想要的操作
世界上最难用的文本编辑器Vim是什么?为什么那么难用?Vim是一款文本编辑器
编辑文本听起来不是什么难事,所以要说文本编辑器难用,估计很多人会不解
文本嘛,敲敲键盘,字就出现在屏幕上了,这能有多难?但是Vim的操作没这么简单
你用Vim输入文本的时候,敲了键盘,字母不一定会出现在键盘上
没错,因为它是一款“模式编辑器”,vim的模式可以有多种编辑状态,最常用的是普通模式,输入模式,视图模式,命令模式,普通状态是vim的默认模式,所有键盘的按键都是你可以使用的快捷键,使用Vim处理文本的时候,键盘不再用于输入字符,而是输入 vim的各种命令
这样,用户非常快速做各种改动
所以Vim常常是用来改代码
Vim里使用的命令很多都很简单,但是语法很强大,有动词、名词和修饰词
字母d代表“删除(delete)”,w代表“单词(word)”
如果你键入dw,就可以删除一个单词(delete a word)
你可以加上修饰词,比如数字5, 键入d5w就能删除光标后的5个字
如果你操作失误,可以按下u来撤销(undo),然后键入i来进入输入模式(insert),做正常的文本输入
y代表的是“yank”(拉),用于复制,yw就可以复制一个单字
实际使用起来如下图
通过这样的语法,用户可以组合出无数种命令,实现具体且非常复杂的操作
在不熟悉的人看来,这些操作可能很炫酷
只要敲几个键,你就能把好几句话从一段移到另一段;从光标处把下一个句号前的内容一下删除,然后重写句子;两个单字换位置;两段合为一段,等等
完全不用碰鼠标就能实现很多此类操作
学会使用难入门的工具有什么好处?就我个人来说,学用Vim给我的工作带来了天翻地覆的改变
在我使用比较熟悉的时候,我觉得自己之前输入和编辑文本,就像骑小孩子用的自行车一样,后轮两侧装着小轮子,跑得稳当,但是又慢又笨拙;就像弹钢琴,但是一次只按一个琴键,根本没意识到自己可以弹和弦,可以一次按下好几个键
甚至,我就像柏拉图洞穴隐喻中生活在山洞里的人,只能看到现实的影子,就以为影子是现实本身
“洞穴隐喻”——设想有这样一个大洞,通过一个长长的通道与外部世界相连,整个通道能够挡住任何阳光进入洞内
一组囚徒背对着出口,面向远处的墙壁
他们的四肢被套上了枷锁,并且他们的头颈也被固定住,无法转动,因此看不到他人,实际上也看不到自己身体的任何部分,而只能够看到面前的墙壁
他们在如此的环境下终其一生,不知道其他任何东西
在洞穴中,他们身后有一把明火
他们不知道自己和明火之间隔着与人一般高的土墙,在墙的另一边,人们头顶东西走来走去,东西的影子被火光投射到囚徒面前的墙壁上,人们的嘈杂声也回响到墙壁那边囚徒们的耳朵里
柏拉图说,这样一来,囚徒们一生中所感觉或经验到的唯一实在就是这些影子和回声
在此情况下,他们自然而然地会以为这些影子和回声成了全部的现实,他们能够谈论的,就是这种“现实”以及对这种“现实”的经验
这么说似乎消极了点,但是事实确实如此
掌握了Vim之后, 不断是在写代码,还是在用文字表达自己的时候,感觉都更自如,更得心应手
而Vim并不是什么新事物
几乎计算机普及以来就一直存在了
Vim是最早开发出来的一款文字编辑器
在鼠标普及之前就有了,所以没有鼠标,才更显出它的高效
Vim来自软件开发的早期,当时的编程人员面对有限的计算能力和灵活程度,只能靠使用起来略为复杂的工具来应对
Vim确实很难上手
放在今天看来,文本编辑这样简单的工作都可以这么复杂,可能难以想象
这是因为,开发Vim的人没想着做简单易用的工具,而是把决定权都交给用户
Vim的开发者考虑的是如何做出最好的工具,功能足够强大,能够解决用户处理任务需要的工具
在Vim的例子中,开发者觉得计算机的文本处理主要是编辑,而不是加入新字符
因此,Vim的默认模式是普通状态是编辑模式,可以剪切、移动、操纵文本
如果用户无法接受敲了d,屏幕上却没有出现的字母d的情况,那开发者就不能做出这样的软件了
只有假设用户愿意接受的情况下,这样的软件才有用户基础
找到你自己的想法使用Vim编辑是成年人学习的一项技能
这种技能想要学会并不简单,但是正如学烹饪,学修电器,学会拒绝他人一样,一旦学会,长期看来益处很大
当然,不是所有难学的技能都值得学习,有些程序很难用,很难上手,但是设计得也很糟糕、不实用
在学习Vim的过程中, 我意识到,很多“易用”的工具,用多了只会让自己越来越傻
现在新兴的易用型软件,有很多会降低我们的工作/学习效率
简单的工具一般会自带假设,中断使用者的思考过程,为了使用的流畅,牺牲的是效率的最优化
而让大家退避三舍的难用工具Vim,熟悉之后却能让我更自如地表达自己,降低了实现自己脑中所想操作和实际操作之间的阻力
我可以快速写出自己脑中文本的几个版本,非常灵活
如果我不喜欢Vim现有的操作,我可以增加其他用户做的特征,或删去自己不喜欢的功能,或者花点时间做出最适合自己的工具包
其实也不是这么难,你可以看看科学作家迪希特(Jay Dixit)的这个演讲,他也没有编程经验,但是他根据自己的工作习惯和节奏,把Vim的对手工具,Emacs定制成最适合自己的版本
所以,我们可以尝试接受复杂的工具:如果能学R语言或者Python,为何执迷于Excel?如果能用自制的Anki卡片,为什么要买做好的记忆卡片?我们不应该指望软件帮我们把事情通通完成,而是应该充分应用自己的大脑
编译组出品
编辑:郝鹏程
要用越大入门代码工具Vim(工具文本自己的操作的是)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息