这篇文章上次修改于 184 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

……为啥啊

现在你大概会觉得我是满清遗老,兴许是80年代生人,怎么跑来推荐上古技术了。不不,我知道现在2023年还在用五笔打字的,要么是老一辈人,当年刚刚乘上个人计算机普及的春风;要么是特殊行业,譬如公安跟银行职员要大量输入人名,或是文科要打生僻字;要么同我一样,只是觉得一个小众爱好很酷罢了。

我用五笔的根本原因是装逼心理——不过实用角度来讲,只不过是我极度讨厌候选词框罢了,到了甚至将现在正在使用的 Rime 输入法(在 MacOS 上是「鼠须管」)的候选词框关掉的程度。当然这给我的输入造成了不少麻烦,比如「云去支」重码(fcu)的问题,记忆力不好就经常要试错。

但是真的很装逼。打字没有候选框诶。不帅么。

2020年上半年疫情,彼时我在大学。寒假无限延长,所有的课程都转线上了。第一次上网课(可能是吧)真是十分新颖的体验。恰好我正在学 Markdown 语言,干脆课堂笔记用电子记录来吧。当时 Typora 还是免费软件,我在用 Typora 跟 Windows 10 自带的拼音输入法做 Markdown 笔记。

大概到半期时,微积分笔记己经有10000字以上了,于是当时的 Typora 出现了诡异的问题:配合微软拼音打汉字时会卡很久才会出现候选框。

想了想我决定用五笔了。

你给我等下。不应该是换掉 Typora 或者换掉微软拼音么。

你说得对。但我就是决定用五笔了。我也不知道为啥。可能只是想学了吧。

于是我去知乎上查了86版五笔入门。先是在用 Windows 自带的微软五笔,然后试了几家其他输入法,最后决定是 Rime 了。这可是开源软件诶。之前我都没有想过输入法会有隐私问题的,发现 Rime 后我才意识到这事。开源真的太棒了。还有,写代码自定义配置与挂载码表很酷诶。

学会86五笔的规则是一天以内的事,这套规则不算太难理解。看着规则和字根表,试打几个字出来,一下子就明白了。后面的事情就是肌肉记忆了,但这也是最难的部分。从来没接触过五笔的人,谁看到单人旁「亻」会一下子就明白它在W键上呢。这种事只能靠多打字来记了。最初的体验很痛苦,突然一下子变得很难往自己熟悉的电脑里面输入了,一分钟只能打一两个字,还要不停去看字根表找字根。另一些字则根本想不到怎么拆字根出来,譬如我直到现在都很痛恨的「曳」字(连读音我都一直念错成「ㄧˋ」。顺带一提正确读音是「ㄧㄝˋ」)其实要打作「日+匕+末笔丿杂合」,也就是「jxe」。刚开始学五笔时我还不敢在课堂笔记里用,因为速度太慢,老师一下子就讲超过去了。但后来在其他场合逐渐用得熟练,便开始用到笔记里。最后就变回与打拼音一样速度了。

因此只是勤学苦练的问题罢了。

五笔基础知识

历史

五笔由王永民教授在1983年发明,因此全称叫「王码五笔」。这个逻辑的叫法你还可以看到「郑码」「张码」。王码公司出品的五笔一共有三版,分别是「86版」、「98版」和「新世纪版」。后面两版都有些改进,也有些改不进。但总之用86的人最多,软件跟教程支持最丰富,而且我学习五笔时微软五笔里面只内置86,因此我也只会86,并且也推荐学86。后人又发明出许多民间改进型,譬如「091」「092」「蓝宝石」,跟宝可梦的作品命名一样复杂,若是觉得有趣可以去学下。不过那样就变得和用 Dvorak 键盘一样,不能借用其他人的电脑了。

维基上有介绍五笔的页面,讲得比我好,若是对历史、各版本相较之类的事有兴趣可以去读。

优劣

因为大多数人都在用拼音,特指全拼,因此我就跟全拼比了。

优点:

  • 重码率低。

    这条对我来说最重要,因为我真的讨厌选字。不过重码率低不是不重码。例如我刚才说的「云去支」都是「fcu」。如果你喜欢打词而不是单字,这问题会更严重,例如「调整」与「高速」都是「ymgk」。

    但总之比拼音好得多。举个最极端的例子,你试试打「shishi」。即使不提这个,至少我觉得分清「他她它」「的地得」很重要。

    当然你要是一般整句输入拼音,那这优点就不太存在了。云输入确实智能。我只是不喜欢它偶尔不智能,那就要回删一大段了。

  • 打什么就是什么。

    和英文一样,打字不会出现不确定性(要是出现了,那怪我不熟练。譬如没有记住「薛恭」「璧譬」重码,忘记要选第二个)。真的有种掌握了输入的感觉,想什么打什么,必不会错。盲打就该连屏幕都不用看才叫盲打。

  • 对于不成词、句的字段,输入速度不会变慢。

    举例来说,输入人名,或是文言文。打拼音的话就要一字一字地选了。

    怎么总觉得我前面说的这三条优点大同小异。

  • 码长最多4个键。

    这勉强算个优势。拼音打「床」要按六个键。五笔没有超过4键的按法。

    但拼音需要按六键的情况并不太多。况且有个东西叫双拼,每字码长最多2键。

  • 打字节奏感好。

    打单字的话不明显(我就在打单字),但如果打词,那就是4键一词,大概算是2键一字,很有节奏。但也只是大概,毕竟双拼才是真的2键一字。

缺点:

  • 学习成本高。

    即使是最极端的五笔吹都不得不承认这个。计算机普及时代,这一条就可以致命了。拼音小学就学过,义务教育普及到今天应该不会有什么难度。但五笔就要学很久,而且开头一个月打字都很慢。

  • 不会写的字就打不出来了。

    很多人说五笔的优点是「不会读的字也能打出来」,其实算是这条缺点的镜像。日常生活中,一般人哪有那么多不会读的字呢。一般不都是不会写么。

    但反过来说,也能一定程度防止提笔忘字。

  • 一般日常输入,都是先想到音再想到形。

    可能比较牵强,因为熟练的五笔用家不会非要在脑内想一下字的形状。举例来说,如果你己经会用五笔了,你打「的」字决不会想一下R键,因为这个指法是如此熟悉。

    但实际用了三年五笔后,我的结论是三年过去了我还是偶尔要想下字形。所以拼音更直接些——或者说双拼其实更好,按键更少,但也是输入音,熟练了就不需要多想。

总觉得快要写成双拼安利文了。

还有一件重要的事:所谓的「五笔打字比拼音快」在搜狗发明后就不存在了。云输入使得人人都可以用实质无限大的词库,再长的句子也能组好组对,新词也第一时间就有。五笔比拼音快只限于当年没有云输入的情况——组些词出来己经是极限了,更不能从上下文推断你打算输入什么。这时五笔的不用选词才有优势。

拆字

五笔把汉字划为五类:横竖撇捺折。下图中的五种颜色就是了。(图源:维基百科)

86五笔字根图

快速看一遍哪些「部件」是字根,有大概印象即可,后面只要多练习自然就记住了。图上写了个「字根口诀」,千万不要看。不小心看到了请遮住眼,赶紧忘记。那东西没用。

「字根口诀」为什么没用?

理由是我自己想的,仅供参考。

背口诀可以让你记得G键上有「戋」,但不能让你记得「戋」在G键上。

试想你现在忘记了「亻」在哪里,你可千万不要一路从「王旁青头戋五一」一直背到「人和八」,就算背到了大概也很难想起来这句是W键。所以,不如从一开始就记住「亻」在W上还更好些。

简单直观的字

最简单的一类拆字不言自明。例如「慢」,显然是「忄日罒又」,查字根表得「njlc」。再例如「紧」,拆成「刂又幺小」,查字根表得「jcxi」。

这里有个问题:如果多于四个字根怎么办?86五笔规定,只打「第一个字根」「第二个字根」「第三个字根」「最后一个字根」。例如「赢」,虽然拆成「亠乚口月贝几」,但只打「亠乚口丶」。

那要是不到四个字根呢?如果是三个或两个字根,就要用到「末笔识别码」,下面再讲。如果是一个字根(字本身就是字根),我们下面再讲「字根字」。

拆字原则

稍难一点的例如「知」,应当是「𠂉大口」(tdk)。等等,为什么不是「牛去掉竖」「人」「口」(rwk)?

重点来了。五笔拆字原则如下:

  • 能散不連
  • 兼顧直觀
  • 能連不交
  • 取大優先

第三条说「能连不交」。显然「𠂉」「大」是连,「牛去掉竖」「人」是交。因此前者是正确拆法。

「交」

有字根相交的字初次见到大概要想一下。例如「两」,应当是「一冂人人」(gmww)。注意要按笔顺来。再比如「津」,是「氵彐二丨」(ivfh)。

取大优先

「春」字怎么拆?上半部分的「𡗗」,「三人」「二大」两者都是交,似乎都是可以的。但拆字要求「取大优先」,那么首先拆出来的部件应当取最大的拆法,也就是「三」。

这也能解释为什么「矢」不拆成「丿一大」或者「丿一一丿乀」……后者那叫笔划输入法。

但取大优先是优先度最低的规则,只有前三条都不满足时才会用到。例如「牜」,只能拆成「丿扌」,不能拆成「𠂉十」,即使「𠂉」比「丿」大也不行,因为「能连不交」。

特殊拆法

「末未」「土士」怎么办?这是两种不同情况,我们先说「末未」。86五笔认为F键上的「二」是上短下长的,因此「末」只能拆成「一木」,「未」则取大优先拆成「二小」。

「土」是键名字,「士」是字根字,我们下面再讲。

末笔识别码

五笔每个键都有许多字根,这样拆字的按键难免有重叠,例如「全」为「人王」,「伍」为「亻五」,似乎都要按「wg」键。那怎么区别呢?

86规定,若一字拆完不够打4码,则要追加一个「末笔识别码」,规定如下:

  • 先看书写笔划最后一笔是「横竖撇捺折」哪个。「提挑」算横,「竖钩(亅)」算竖,「点」算捺。「横竖撇捺折」分别为1、2、3、4、5。

  • 然后看该字是「左右/左中右」、「上下/上中下」、「杂合(其他)」哪种结构。「左右」「上下」「杂合」分别为1、2、3。

组合这两位数,得到类似于51、23这种两位数。查字根表,就知道是哪一键了。

举个例子。「伍」为「亻五」,末笔为横,因此是G(11)F(12)D(13)三个键中的一个;左右结构,那么就确定了,是G(11)键,打作「wgg」。

再举一例。「全」为「人王」,末笔为横,因此是G(11)F(12)D(13)三个键中的一个;上下结构,那么就确定了,是D(12)键,全码「wgf」。

再来一例。「栈」为「木戋」,末笔为「撇」……我知道你可能觉得末笔应该是「点」,但80年代发明五笔时,王永明教授认为是先点再撇。关于这件事详见下面的「小陷阱!」。末笔为「撇」,因此是T(31)R(32)E(33)三个键中的一个;左右结构,那么就确定了,是T(31)键,打作「sgt」。

再来一例。「连」为「车辶」,注意笔顺。末笔为「乀」……不对,那这和「边」字无法区别啊!杂合型的这种半包围、全包围结构,书写时常常是那个「包」后写,那末笔就要一样了。因此特殊规定又来了:「末笔」取「被包」的末笔。对「连」字来说就是取「车」的末笔,是「竖」,因此是H(21)J(22)K(23)三个键中的一个。半包围算杂合结构,那么就确定了,是K(23)键, 打作「lpk」。

最后一例。「图」为「囗」「夂」「两点」。外框永远是最后封口的,因此不要取外框的末笔。「被包」的末笔为点,因此是Y(41)U(42)I(43)三个键中的一个;全包围算杂合结构,那么就确定了,是I(43)键,全码「ltui」。

我知道这东西很麻烦难记。这东西也被很多人评为86版的败笔,因此后世的改进版都在优化这东西。不过既然我们在学86,那就只能硬着头皮上了。

那要是还区分不了呢?比如「云去支」,怎么拆都是「fcu」;「万尤尢」,怎么拆都是「dnv」。很不幸,这就无解了,只能重码。打字时必须选字。

键名字

上面提到「土士」的问题。怎么解决呢?

回看字根表,每个键上的第一个字根,规定为连按四下该键打出。例如「土」就是「ffff」。同理,「王」就是「gggg」,「金」就是「qqqq」。

字根字

再说回「土士」。「士」在F键上,本身就是个字根,这该怎么打?

字根如果能成字,则规定先按一下该键,再打字根的第一笔、第二笔和最后一笔。如果字根只有两笔,那就是前一笔和后一笔。

  • 三划及以上:「该键」「第一笔」「第二笔」「最后一笔」

  • 两划:「该键」「第一笔」「第二笔(最后一笔)」

  • 一划:「这一笔」「这一笔」「L」「L」。一划那就是笔划了。我们在下面特殊规定那里讲。

那么对于「士」字,就是「士一丨一」(fghg)。

再举个三码的例子。「八」,即「八丿乀」(wty)。

这样拆也是会有重码字的,例如「雨寸」(fghy),也没有什么办法。

一简字、二简字、三简字

80年代,有二十五个汉字特别常用,因此被定为一简字,只要按一键接着打空格就会出字。按「gfdsa、hjklm、trewq、yuiop、nbvcx」的顺序,它们是:

一地在要工、上是中国同、和的有人我、主产不为这、民了发以经」。

2023年了,「主」、「产」、「民」这种字哪有那么常用。就连「经」我都认为可以定为二简。但谁教五笔是80年代发明的呢。

大多一简字都是全码第一键,但有一些字只是有关联,并不是第一个字根,它们是「有–E」「不–I」「这–P」。没有理由,硬性规定的字,则是「我–Q」「为–O」「发–V」「以-C」。

二简字是精选的大约600个常用字,只用打前两码就能出字。例如「如」全码「vkg」,简「vk」。

三简字则是更多的常用字,只用打前三码就能出字,或者干脆全码就是三码。例如「例」全码「wgqj」,简「wgq」,再例如「仁」全码「wfg」就是三码。

还有一些字,你可能感觉好像很常用,但它就是要四码打齐。比如「都」「常」「文」「等」。这是正常现象,请忍耐。

只有一简需要背一下。二三简打字多了自然就记住了。

特殊规定

「劳动」与「蔻」都是「apfc」。按照86五笔的设计思路,在候选窗里单字要放在词组前面。但「劳动」显然比「蔻」常用得多,要是每次都要选二选就太烦人了。因此强制规定,「蔻」编码为「apfl」。没有任何道理,就是硬改。

另一个同样情况的是「大」与「靥」,后者强制规定为「dddl」。但要我说这没有道理,大不了「靥」放二选也不会有人抱怨嘛。

关于「蔻」「靥」的问题,有些输入法决定不改,就要坚持「apfc」「dddd」。另一些输入法两种选择都提供了。选择输入法时注意确认一下此事。

一丨(亅)丿丶(乀乁)(乛⺄乚𠃌)」等笔划成字,强制规定为按两下笔划,再按两下L,也就是「ggll」「hhll」「ttll」「yyll」「nnll」。

五笔没有用到Z键,所以很多输入法给Z发明了花哨功能。这跟输入法软件各家创意有关,因此请自行研究。

小陷阱!

其实你练习拆字时可能己经注意到了,「口(K)」「囗(L)」不是同一个字根。区分方法是后者是全包围结构的外框。

同理,「匕(X)」「七(A)」也不同。区分方法是「匕」为「丿乚」,「七」为「一乚」。因为这个理由,「花」要拆成「艹亻匕」,因为那一划是撇而不是提。

「牛」「牜」的笔顺其实不同。很多人不知道此事。「牛」是「丿一一丨」先横再竖,而「牜」是「丿一丨一」先竖再提。因此「牜」其实是拆成「丿扌(tr)」。

「车」在作偏旁时(「辆」)其实也是先竖再提。不过五笔里面都只用打L键,所以不用管了。

「象」按照80年代的旧写法,中间不是「口」而是「横日」,因此是「qje」。同理「像」是「wqj」(三简)。

「彦」。你可能会想到「六厂彡」,但它其实是「立丿彡」末笔E(utee),因为上面那不是「六」——「六」的末两笔是「八」,但这里写的是「丷」。

有个严重的问题是,86五笔在83年发明,但我国正式规定汉字笔顺是97年的事。因此「我」的最后两笔定为了「丶丿」而不是「丿丶」,因为王永明教授当时认为前者是对的。同理「羲」「戋」「戈」等字也是最后写「丿」。但「载戴截栽」等一类字不是,它们最后写的是左下角。其他的例子包括「万」,定为了「丆𠃌」末笔V,虽然应该先折再撇才对;「瓦」,定为了「一𠄌丶⺄」,虽然应该先折再点才对;「力」,定为了「力丿𠃌」,虽然应该是「力𠃌丿」。此类例子不一而足。

「凹凸」两字不算陷阱,单纯就是难拆。「凹」是「长得像几的东西」「冂」「一」末笔D(mmgd),「凸」是「丨」「一」「长得像竖+𠄎的东西」三简(hgm)。其中那个「长得像几的东西」「长得像竖+𠄎的东西」真的就只有这里用到了,不常使用的话根本想不起来。

词组

刚才讲到了「劳动」是「apfc」,有些超纲了。五笔可以直接打词组,这样可以大大加快输入速度(代价是重码率变高了)。

  • 二字词:「第一字第一码」「第一字第二码」「第二字第一码」「第二字第二码」,即「AABB」。

  • 三字词:「第一字第一码」「第二字第一码」「第三字第一码」「第三字第二码」,即「ABCC」。

  • 四字及以上词:「第一字第一码」「第二字第一码」「第三字第一码」「最末字第一码」,即「ABCZ」。

举例来说,「中华人民共和国」取「中」「华」「人」「国」各第一码,是「kwwl」。

举些更常用的例子来说,「直接」取「直(fh)」前两码,「接(ruv)」前两码,是「fhru」。

「加快」。取「加(lk)」前两码,「快(nnw)」前两码,是「lknn」……怎么和「回忆」重码啊!

「高速」。取「高(ym)」前两码,「速(gkip)」前两码,是「ymgk」……这次又和「调整」重码了。

如此可见,打词组的问题在于会出现非常多的重码。尽管「加快」「高速」的例子是我精心挑选的,但86的重码问题的确很严重,到了连「五笔打字可以高速输入,加快打字速度」这句安利都很难打出来的状态了。我们会在下面「五笔进阶知识」里讨论单字和词组的问题。

五笔进阶知识

下面的内容包括很多经验之谈,以及许多主观偏见。

我该用哪个输入法?

工欲善其事,必先利其器。五笔和全拼拼音一样,只是一种输入方案,而要使用这种方案输入汉字,则需要一个输入法软件。人们对输入法的需求各不相同,因此世面上的各种输入法各有侧重。不会有某一种输入法完胜其他所有输入法,也不会有某一款输入法能同时达到所有人有时互相冲突的需求。我的推荐只基于我使用过的输入法,并且指出的优缺点也只限于针对我的需求。

Rime 输入法(中州韵输入法)是一个输入法引擎,以此为核心在 Windows 平台上为「小狼毫」输入法,macOS 平台上为「鼠须管」输入法,Linux 各发行版上基于 IBus 框架为ibus-rime,基于 Fcitx 框架为fcitx-rime。其他平台上另有一些第三方支持、基于 Rime 核心的输入法。我喜欢它的原因是:

  • 开源。

    这是安全性问题。我输入自己的个人信息时,闭源输入法的厂商就有可能收集到我的输入文本,从而获取到我的隐私。一想到这点我就浑身不自在。而开源软件把它的代码直接向公众发布,谁有任何质疑都可以自己去读源码或自己编译。另一方面,如果你是大佬,就可以自己修改源码,定制最适合自己的功能,或是亲手修复 bug。虽然我不是大佬。

  • 强自定义性。

    强到什么程度呢——所有的输入方案都是配置文件。从全拼、双拼、五笔、仓颉、注音,到中古汉语、国际音标,不仅有无限可能性,而且可以自己设计喜爱的方案;超多的功能可以自行设置,从候选窗字体跟颜色甚至到选项横写还是直写,都可以自行配置。甚至可以写 lua 脚本,定义自己想要的功能。每个键想要出什么选项都可以自定义,也能根据输入历史自动造词。

  • 不联网,而且有多设备同步。

    这对我来说算优点,但要是打拼音那还是算了,云输入还是必要的。但即使不联网,也可以一键同步配置文件,只要自己设法同步这些文件(例如网盘),就可以多端同步 Rime 配置了,甚至连历史输入和个人词库也能同步。

  • 没有配置界面,而是写 yaml 代码来配置很帅。

    ……反过来说,不有点折腾的热情这东西就很难用了。一般人相比改配置文件还是更喜欢用鼠标点选项。

这样一看 Rime 的缺点也很明显了——比较折腾,稍有些面向极客。那我如果不想折腾,有没有什么推荐呢?

那么我推荐系统自带的输入法。对于 Windows 10/11 来说,就是「微软五笔」;对于 macOS 来说,就是系统「简体五笔」方案。

苹果加入五笔是比较晚的事了,但在这方面非常用心,一上来就有86/98/新世纪三版方案可用。我唯一的不满就是自定义性太差,到现在也不能用; '作二三选,也不能切换到仅单字输入模式。

至于微软,我手边没有 Windows 没办法验证,但直到21年他们都只支持86版。而且也不能用; '二三选。这功能很多人在当年的极点五笔上都在用,不知为何这两家如同似乎不知道有这事一样。哦对了,微软五笔用家推荐 wubiLex,可以替换码表、增设特殊符号,也能解决没有单字模式的痛点。

那么著名的极点五笔呢?如果极点还在更新的话它就真的是神器了,那可是定义一个时代的输入法。只可惜极点的作者没再更新下去,到 Windows10 时代就开始出现各种兼容性问题了。因此不再推荐。

是单字好,还是词组好?

各有利弊。

单字

  • 重码率极低。基本上打字不用选字,所想即所得。这也是我可以关掉候选窗的原因。只有少数重码字需要特别记忆一下。

  • 击键多。经常要打三码,时时甚至要打全四码。空格键按得也特别多。

词组

  • 输入节奏好。大约两码一字,因为两字词比较多。如果输入法支持四码顶字上屏,那么就可以一连串输入不用按空格,后面的词自动把前面的词顶至上屏。

  • 击键少,理论输入速度上限高。

  • 重码严重。比如「调整」「高速」问题。这两个词我都用得很多,所以打字还是经常要选词。

  • 有时不知道一个词「是不是个词」,如果打了下试试发现不是词,又要回删。比较烦。例如在我的 macOS 自带五笔里,「较大」是个词,「偏左」不是个词。

因此这事见仁见智。各位可以自己决定。

新手大多会喜欢词组,因为可以回避掉很多烦人的末笔识别码。但说真的,这东西迟早都要面对。

快速选择二三选(输入法支持)

一些输入法支持使用分号和引号; '、左右 Shift LShift RShift 来选择第二、第三个选项。我觉得分号引号比数字2、3好按多了,因此开启了该功能。你可以检查一下自己的输入法是否有这项功能,强烈推荐,能极大提升输入体验。

之后如果想到别的东西再来补充。