banner
粥粥

质数人生

Prime Life

從零開始:鼠鬚管輸入法配置全解析

前言#

Rime 不能简单归类為輸入法,確切來說,這是一套輸入法的框架,而「鼠鬚管」是其在 MaxOS 系統上的應用程序。具體操作系統與輸入法可參考下表。

操作系統對應的輸入法github
Windows小狼毫https://github.com/rime/weasel
macOS鼠鬚管https://github.com/rime/squirrel
Ubuntu中州韻https://github.com/rime/ibus-rime
iOS仓输入法https://github.com/imfuxiao/Hamster
Android同文输入法https://github.com/osfans/trime

這些應用使用輸入方案的配置 + 對應方案為基礎運行條件,因此在這套框架下,理論上只要通過整合不同的配置文件,就能實際高定自定義的輸入法。

需要說明的是,市面上已經有很多成熟的輸入法軟件,而 Rime 的定制需要一定的上手門檻,如果你在日常生活中,對輸入法並沒有太高的要求,抑或是工作中並不需要通過定制詞庫來提高生產效率,那麼本文中的大部分內容可能對你無效。

本文為查詢資料時所做筆記,用於個人回顧相關知識時作為參考。
由於個人的主力平台為 macOS+iOS,因此內容以鼠鬚管 + 倉輸入法為主。但正如前文所言,只是平台應用不同,實際底層都是 Rime 這一套自定義的配置與詞庫的組合。如果你對 Rime 這類定制輸入法感興趣,需要查詢相關資料,本文可提供一定參考。

市面上已經有很多成熟的輸入法應用,選擇一款需要高度定制的輸入法看似是件挺折 (zhuang) 騰 (bi) 的事情。由於本人打小以五筆字形為主要輸入法,對詞庫的依賴度很高,加之早年實習期間,有過一段對固定詞庫高度依賴的工作經歷,因此對定制輸入法有獨特的情懷。

主流的輸入法要做到好用,無外乎對詞庫的擴展增強與更豐富的界面定制。為了使產品更「易用」,多數功能需聯網使用,所謂產品優化。這在鍵入一些個人關鍵信息時,總不免有被窺視的不適之感,因此 Rime 對我來說,成了一个优选。

隨著近些年來,蘋果端對第三方輸入法應用的開放,也終於能得償所願,故而在此記錄。

最後,本文內容可能會隨著時間變化更新,我會在個人博客中持續更新,若你在公眾號讀到這篇文章,可在文末閱讀全文中找到原文地址與更新。

本文目錄

  • 配置文件
  • 輸入方案(Schema)
  • 擴充詞典
  • 其他補充
  • 參考

配置文件#

系統配置目錄#

  • "/Library/Input Methods/Squirrel.app/Contents/SharedSupport/"
    該目錄下旋轉的是 Rime 的預設配置,軟件更新時會自動更新該目錄下的文件,因此不必手動進行修改。

用戶配置目錄#

我們要做的修改通常在 ~/Library/Rime/ 目錄下,由於 Rime 支持用戶高度自定義,我需要了解該目錄中文件的主要用途

  • installion.yaml 文件記錄的是當前 Rime 程序的版本信息。其中有一個字段 installation_id 用來在同步用戶詞典時唯一標記當前 Rime 程序。

  • user.yaml 文件記錄用戶的使用狀態。比如上次 “重新部署” 的時間戳,上次選擇的輸入方案等。

  • build 目錄下放的是每次 “重新部署” 後生成的文件。包括字典文件編譯後生成的「.bin」文件,包括與自定義配置合併後生成的各種 yaml 配置文件。

  • xxx.userdb 目錄下放的是對應輸入方案的用戶詞典。即用戶在使用時候選擇的詞組、詞頻等動態信息,這個目錄是實時更新的。

  • sync 目錄是用來做用戶數據同步的。即點擊鼠鬚管的同步用戶數據後,會將用戶配置目錄下的內容同步複製到該目錄內。每個 sync/installation_id 目錄對應不同設備上的 Rime 程序的用戶數據。

默認配置修改#

Warning

注意
如果想要修改配置,建議不要直接修改原有的 default.yaml 文件,而是應該新建一份 default.custom.yaml 文件,其中 xxx 與原文件名相同。這是因為部分不同的輸入方案會使用同名的默認配置,對於需要自定義配置的內容,使用新建的配置以免自定義配置丟失。

如果不知道需默認需要配置哪些,可以導入一份別人已經做好的輸入方案 + 配置列表。
Awesome-rime 這個開源項目整合了市面上主流的形碼,聲碼,漢語與小語種方案,感謝 @ayaka 14732 的整理。
GitHub - ayaka14732 Awesome Rime 輸入方案和配置列表

方案切換#

你通過查看配置中的快捷鍵來切換不同的輸入方案,以及切換方式,候選詞等相關配置。


patch:
  # 菜單中可選的方案列表,可根據喜好自行調整順序,第一位為默認方案
  schema_list:
    - schema: numbers # 大寫數字
    # - schema: wubi86_jidian_trad        # 五筆 - 簡入繁出
    # - schema: wubi86_jidian_trad_pinyin # 五筆拼音混輸 - 簡入繁出
    - schema: wubi86_jidian # 五筆
    - schema: wubi86_jidian_pinyin # 五筆拼音混輸
    - schema: pinyin_simp # 普通拼音


menu:
  page_size: 8 # 候選詞數量,最多支持 10 個
switcher:
  hotkeys: # 彈出菜單的快捷鍵
    - "Control+0"
    - "Shift+Control+0"
  abbreviate_options: true
  caption: "【 輸入法設置 】"
  option_list_separator: "|"

配色外觀#

配色外觀的配置文件是 squirrel.yaml ,我們需要在用戶配置目錄下新建一個 squirrel.custom.yaml 文件。

該文件為鼠鬚管的外觀配置文件,配置內容包括配色,排版方式,字體等。

輸入方案(Schema)#

一套方案必須包含方案定義文件 (.schema.yaml) 和詞典文件 (.dict.yaml )

方案定義文件 (.schema.yaml)#

文件名前綴為 <schema_id>,如 wubi86_jidian,該文件配置包含方案 ID,方案名,版本號,作者詞庫依賴等基本信息。
還包含該方案下的核心組件。

Rime 引擎的核心與組件介紹#

畫了一張圖,大體說明了 Rime 的核心組件與工作原理。
Obsidian-20241120-1457-nxxItUCP.png

詞典文件 (.dict.yaml)#

以我使用的極點五筆 86 這套方案為示例:

---
name: wubi86_jidian  #詞典名。可以與輸入方案標識(`schema_id`)一樣,也可以不一樣
version: "4.3"  #詞典版本
sort: by_weight # by_weight=權重 original=原始
import_tables: # 此處是添加用戶自定義詞庫的地方
  - wubi86_jidian_user # 個人私有詞庫
  - wubi86_jidian_user_hamster # Hamster 詞庫
  - wubi86_jidian_extra # 擴展詞庫

use_preset_covabulary: true #這個導入的是系統配置目錄下的essay.txt,

#以下為碼表

編譯輸入方案#

共享目錄下的 build 里放著程序發布時預編譯好的「.bin」文件,用戶目錄下的 build 里放著用戶點擊 “重新部署” 後生成的「.bin」文件。

以下是生成的主要二進制文件以及用途。

  • 「Rime 棱鏡」 <方案標識>.prism.bin
    結合了詞典源文件與方案定義中的拼寫運算規則而生成的二進制文件。(我猜測啊,應該是根據詞典源文件中定義的音節編碼,根據拼寫運算規則,生成原音節與可替換音節的對應關係。比如原音節「lue」+ 拼寫運算規則”derive/^([nl])ve$/$1ue/“,生成對應關係「lve」→「lue」。這樣當用戶輸入「lve」時,就可以根據該對應關係去找「lue」的字)
  • 「Rime 固態詞典」 <方案標識>.table.bin
    直接來自於詞典源文件 .dict.yaml
  • 「Rime 反查詞典」 <方案標識>.reverse.bin
    是反查詞典的二進制文件。比如我使用五筆作為主要輸入,但忘記如何拆字時會配合拼音使用,當我使用拼音拼出文字時,該文字後面會顯示五筆的編碼。

拼寫運算#

使用拼寫運算來實現智能糾錯和模糊音的功能。如果不开启,必须严格按照词典文件中的定义。使用五笔方案不太会用到该功能,故不作此方面笔记。感兴趣可阅读文末的参考文章。

修改標點符號#

配置在半 / 全角模式下,敲擊目標鍵給出相關候選,如敲下 / 時,給出 ÷ 這類候選,在方案配置下修改。

  • 參考示例
    punctuato	r:
    	full_shape:
    		# ... 省略 ...
    		"/": ["/", "÷"]
    	half_shape:
    		"/": [	"、", "、", "/", "/", "÷"]
    

擴充詞典#

新建一個 <name>.extended.dict.yaml 文件,配置中的 name 需要與詞典後綴前一致。*.extended 並非必要的,只是便於區別這是一個擴充的詞典,比如我自己習慣用 <name>.extra.dict.yaml

在對應輸入方案的字典配置中,使用 import_tables,將該詞典導入到該輸入方案中,可以針對不同的使用場景進行配置。
示例:新建一個國家地區的詞典,命名為 china_district.extra.dict.yaml ,在自己使用的 wubi86_jidian.dict.yaml 的配置中調中該詞庫

#該配置為 `wubi86_jidian. dict.yaml`
name: wubi86_jidian
version: "2.0"
sort: by_weight # by_weight=權重 original=原始
import_tables: # 此處是添加用戶自定義詞庫的地方
  - wubi86_jidian_2357 # 個人私有詞庫
  - wubi86_jidian_user_hamster # 移動端Hamster 詞庫
  - china_district_extra # 自定義擴展的國家地區詞庫

自定義短語 (參考)#

如果你的拼音用戶,不建議使用英文單詞和首字母簡拼作為拼音詞典的編碼。由於 rime 的切片機制,這樣做會將原本需要的其他備選詞給覆蓋掉。針對於需要此類映射的詞,如 msd->馬上到 ,比較熟悉的就是使用自定義短語。

由於五筆輸入沒有這種切片的機制,因此可以不使用自定義短語而直接設置編碼,以下示例拼音用戶可參考。

由於自定義短語獨立於詞典,候選詞的優先級有太高,請謹慎使用。更具體的自定義短語可參考文末哈呜王的文章,他講得比官方文檔更詳情。

## custom_phrase.txt示例
custom_phrase:
  dictionary: ""
  user_dict: custom_phrase #需要與自定義短語文件同名
  db_class: stabledb
  enable_completion: false
  enable_sentence: false
  initial_quality: 1

手動造詞#

通過往 .dict.yaml 中手動添加詞庫,即有手動造詞
感謝 @KyleBing 的開源項目五筆碼表助手 ,提供了圖形化的造詞界面

五筆碼表助手

自動造詞#

自動造詞會關閉自動上屏 + 頂字上屏的功能 (畢竟要確定選擇的詞)

需要修改 wubi86_jidian.schema.yaml 下面幾個內容

speller:
  # max_code_length: 4                 # 四碼上屏
  auto_select: false                   # 自動上屏

translator:
  enable_sentence: true                # 句子輸入模式
  enable_user_dict: true               # 是否開啟用戶詞典(用戶詞典記錄動態字詞頻,用戶詞)
  enable_encoder: true

詞條權重#

權重數量越大,權重越高,排名越靠前。

LUA 擴展腳本#

Rime 默認加載 Lua 腳本路徑應該為:用戶配置目錄/rime.lua
如果自己不會寫,也可以從網絡上找到其他人已經編寫好的腳本。添加完 LUA 腳本後,需要在對應輸入方案的配置文件中,從 engine/translators 中引入該腳本。

引入示例:

patch:
	engine:
		translators:
		- lua_translator@*<腳本名>
#添加 lua腳本

其他補充#

多端同步#

多端同步的原理就是使用相同的配置地址進行同步。
因為我個人都是 Apple 平台的,使用 iCloud 同步,
又因為 iOS 平台默認保存在 iCloud 中如果你是其他平台,這個存儲地址就以 iOS 為主。

首次同步時需要確定好共用的方案即可,當然也可以根據需要,針對設備的不同,定制不同的輸入方案。

如果將 PC 方案傳到移動端,可在移動端開啟 Wi-Fi 上傳方案的服務,將 Mac 端中的方案配置目錄 RIME 替換掉移動端原目錄即可。
如果將移動端方案傳至 PC 端,可開啟 iCloud 同步,拷貝應用文件至 iCoud,注意這樣會覆蓋 iCloud 內原有的同名文件,需要注意備份。

參考:一日一技 | 用 iCloud Drive 實現 RIME 輸入法配置跨平台同步 - 少數派
參考:多設備同步 | oh-my-rime 輸入法

在特定的程序中默認使用英文輸入法#

需要查看特定程序的 info. Plist,找到類似包名的字符串,如 com. apple. Xcode,具體操作
可自行百度,或參考官方文檔:CustomizationGuide · rime/home Wiki · GitHub

  • 示例在 terminal 和 iterm 2 中開啟:
    # --- 特定程序定義初始狀態的英文輸入 ---
    app_options:
    	com.termius-dmg.mac: # Terminal - Mac
    		ascii_mode: true
    	com.googlecode.iterm2: #iTerm2 -Mac
    		ascii_mod: true
    

詞典保存了不生效#

Dict 的詞條應該使用 ... 為首行,部分編輯器會自動調整格式,將 yaml 的 ... 轉換為 --- ,這樣的修改會導致配置失效

  • 示例
---
name: wubi86_jidian_extra
note: "擴展詞庫"
version: "2024-01-01"
last_edit_time: "2024-01-1"
dict_grouped: true # 詞庫管理應用識別:標記該碼表為分組模式
sort: original
# 碼表的排序方式: by_weight 權重,original 原始順序

...  # <-<-特別注意這裡是三個點,而不是三道杠
## 汽車
朗逸	yvqk
驗車	cwlg

參考#

幫助與反饋 | RIME | 中州韻輸入法引擎 - 官方文檔
鼠須管輸入法配置 – 哈呜。王 - 寫得特別好的第三方文檔,本文著重以此為筆記
App +1 | 倉輸入法:讓 iOS 也能舒服的用上 Rime - 少數派 - 介紹了 iOS 端筆記的同步方法
Rime 配置:霧凇拼音 - Dvel's Blog

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。