谨慎引入新欢。但对markdown确实很方便。

全部配置见我的 dotfiles

本来打定主意只用各终端自带的输入法了,但是写markdown的代码部分,需要反引号,不停切换中英文真是要疯。本来一直在键盘映射上动脑筋,最后发现鼠须管可以自定义映射按键:输出字符,这个方便不止提升一点点。

所以配置一下。网上教程很多了已经,这里只挑我配置时卡住的点记录一下。

配置文件

初始卡在,==我以为自己写的配置文件都在同一个文件里。但其实不是。== 它分了好几类配置,每一种配置都要写在相应的文件里,写错地方没反应。
最终自己自定义创建的文件包括这四个:

~/Library/Rime/   # 一般rime的mac中路径就是这个
├── squirrel.custom.yaml  # 第一个修改的文件,配置相当于输入法的框的主题皮肤样式,以及指定应用默认的配置(like iterm2就想默认英文)。
├── default.custom.yaml   # 第二个配置的文件,这个里面设置快捷键、输入法等等。
├── luna_pinyin.custom.yaml   # 本来只想配通用设置,不想针对某个输入法,但有几个关键的配置必须放在这里面,其他地方不起作用
└── symbols.yaml  # 最后发现按键映射可以写这里,还是尽量挪到通用配置文件里。

鼠须管文件的命名规律类似于:文件名.yaml 对应的用户自定义文件叫 文件名.custom.yaml,加了个custom。
用户自定义文件的优先级更高,会覆盖默认版。默认版一般在 <rootpath>/build/里,custom版就在<rootpath>/下。

用法

mac可参考。
安装好了以后,没有直接出现在输入法那栏。而是【我还重启了一次】,要打开系统设置 → 键盘 → 输入法的编辑 → 点+,在简体中文那里。点添加。

然后会出现一条横list让你选,这里面这些乱七八糟的都是输入法的名字。我就删的剩一个了,就是明月拼音。
选择对应的序号就进入下级菜单,这里面黑点的字就是当前正用的,灰字就是可以换,点序号就直接换了。我当前的设置就是:简体、半角、中文。

Alt text

我的样式是上面这样的是因为我配置了

# ~/Library/Rime/default.custom.yaml

patch:
  schema_list:  # 其他输入法都删了,有个雾凇拼音蛮火,等熟悉下rime再试。
    - schema: luna_pinyin # 朙月拼音

  switcher:
    hotkeys:  # 叫出这个配置的快捷键。grave就是反引号的键。
      - F3
      - Alt+grave
    caption: 
      "【设置菜单】"  # 把默认的繁体名字改成简体了

  menu:
    page_size: 9  # 候选字数 

以及

# ~/Library/Rime/squirrel.custom.yaml

patch:
  style:  # 修改程序外观
    horizontal: true      # 候选词是否横排
    #font_face: Hei      # 字体
    font_point: 16         # 候选词大小
    inline_preedit: false   # 輸入碼內嵌
    color_scheme: clean_white  # 这个选择列表在 ~/Library/Rime/build/squirrel.yaml 里选

❗️然后改完任何配置需要重新部署,才会生效。遗憾我还没找到设置重新部署的快捷键,所以每次都在它的图标里点。谁知道这个可以告诉我🥀

语法

自定义文件里的配置都要写在patch:后,但symbols.yaml好像不用。
就像我第一个上手改的,把候选列表改成横的

# ~/Library/Rime/squirrel.custom.yaml

patch:
  style:  # 修改程序外观
    horizontal: true      # 候选词是否横排

其次要注意的是,这个分级可以合并,比如上面可以写成 style/horizontal:,但是有比较复杂的触发条件,但是分开换行写,是所有都可以适用,所以我一律分开换行写。

还有一个是变量和值不用引号都可以,不分什么string,int的,很自由。比如

  key_binder:
    bindings:
      - { accept: equal, send: Page_Down, when: has_menu }  # Tab 向下翻页

特殊配置

其实这样就已经可以了。我就留了abc和鼠须管,默认切换就用mac默认的caps。然后鼠须管内部中英文切换用shift,一般就用shift就够了。

然后到很好用的地方:
鼠须管默认中文下,仍然可以自由置换全角和半角。没意外都用半角,是因为==英文也有全角==,打出来字母之间空的特别大的那种英文,一般没人用。而在中文下,也会需要输入英文,空格强制上屏。所以一般都用半角。

* 上屏意思就是,输入拼音,出现一排候选,选择某个词,它就打到屏幕上。

鼠须管且还可以设置,按下一个键,出现一排候选,选择某个之后,才上屏它。有时候这样比较方便,有时候就需要直接上屏,不要多一个选择的步骤,比如说markdown常用的反引号。这些都可以设置。

最后我的部分个人设置:

# ~/Library/Rime/custom_symbols.yaml

punctuator:
  symbols:
    ";fh": [❗️, 💢, 💡, ⌘, ⌥, ⎋, , ♂, ♀]
    ";jt": [→, ➜, ☞, ➡︎, ←, ☜, ⬅︎, ↑, ☝︎, ⬆︎, ↓, ☟, ⬇︎,↔︎, ⇄, ⬌, ↕︎, ⇅, ⬍, ↖, ↘]
    ";dc": [√,✔,✅, ✕,✖, ❌]
    ";sx": ["±", "÷", "≠","≈", "∞", "≤", "≥", "≦", "≧", "㏑", "㏒", "∫"]
  full_shape:
    "#": "#"
    "`": "`"
    "/": ["、", "、", "/", "/", "÷"]
    "@": ["@", "¥", "÷", "°", "‰", "℉", "©", "®"]
  half_shape:
    "#": "#"
    "`": "`" 
    "+": "+"
    "=": "="
    "/": "/" 
    "_": "——"
    "~": "~" #["~", "~"]
    '\': ['\', "、"]
    ".": "。" # ["。", "."]
    ",": "," # [",", ","]
    "?": "?"
    "!": "!" 
    ":": ":" #[":", ":"]
    ";": [";", ";"]
    "(": "(" #{pair: ["(", ")"]}  # ["(", "("]
    ")": ")"  # [")", ")"] 

这里面symbols,就是一些常用词,用快捷输入绑定;
全角full_shape随便设设,半角half_shape是通常边用变设的。写代码常用的""(code),"#"(注释),"/"(注释),"~"(shell的$HOME)等等都确定直接上屏。 其他句号什么的看顺手度,比如句号中文的更常用,就设了中文句号,如果要用英文句号就shift一下;问号感叹号还没用多,暂时半角版先,如果要用中文的再快捷键(自己设)切全角。 这中间可能有多次调整。比如中文破折号用了一下,发现各种切换都找不到,就先映射了半角的映射——,但是后面发现markdown列list要用,就改了shift+减号_映射为——`。
以及{pair},是按两次出现第二个,而不是按一次同时出现俩,个人感觉不太好用。

还有两个要特别设置的。

一是反引号不能直接上屏。用鼠须管就是冲着能自由用反引号来的,这个不能直接上屏对我就没意义了。后来查到反引号是被它用做什么反编译的先置符号了。这个取消设置是在:

# ~/Library/Rime/luna_pinyin.custom.yaml

patch:
 【一些别的】

  recognizer/patterns/reverse_lookup: {}  # 这一行

二是rime唤出特殊符号表情那些,快捷键是/+自定义字符。因此/映射的时候,不能设置为直接上屏,需要有多于一个候选词,否则就轮不到后面自定义字符跟它组合,就直接确定了。但是❗️,/在代码里很常用的,路径、注释什么的经常打,所以我换了不太常用的;,改这个的地方找了好久,最后是在:

# ~/Library/Rime/luna_pinyin.custom.yaml

patch:
 【一些别的】

  recognizer:
    patterns:
      reverse_lookup: {}
      punct: "^;([0-9]0?|[A-Za-z]+)$"  # 这个是正则表达式。^;的意思就是以;开头。

差不多就这么多。恰好关键的这两个设置,都必须设置在特定的输入法中,我当前用的默认的明月,所以就没办法又开了一个luna_pinyin.custom.yaml配置文件。之后试其他输入方案雾凇拼音之类的再配。

全局办公运行方案

因为我有dotfiles,存了一份上述四个文件在dotfiles/Rime下。安装路径~/Library/Rime下又有一份,这样同步又是问题。每次本地更改之后还要传到dotfiles里,传上git给其他地方用。

一开始就写了个脚本,每次cp,类似cp *.yaml $RIME_PATH/。傻了几天自问为什么不用软链??
然后把脚本改成ln -s $PWD/$rfile $RIME_PATH/$rfile

不怕说出低级语法错误,① 自定义path千万不能直接定义成PATH;② 软链的path必须是绝对路径,所以rfile前必须加$PWD

todo

自定义词,什么表情词典,都还没设,其他输入方案也没试,就已经挺丝滑了(除了丝滑这个词)。其他就之后再试吧。

目前有一个bug,因为把;设成了快捷词组前置符号,所以按;键会出现两个候选项,like:
1.; 2.;
但是我又设置了;123456789的映射,所以直接选2,选不上;,而是出现;2的候选表。
目前选还罢了,可以直接空格。选;只能用箭头。
只多设了tab移动光标缓解一下。

安卓手机安装的坑

手机安装需要安装两个东西。一个是rime本身的安装文件,一个是输入法。它的安装文件竟没有安装任何输入法。所以下两个github链的文件,一个安装文件,一个明月输入法的全部配置文件。
我的坑是,把输入法的配置文件挑了几个自以为重要的复制进去了,结果发现无法运行。最后发现需要把下载的东西全copy进去才生效。不知道没拷哪个导致错误了……回头再研究这个吧。

参考

感觉写的比较好的几个参考文章:
https://www.hawu.me/others/2666
https://sh.alynx.one/posts/My-RIME-2/
https://www.xiebruce.top/1235.html