【輸入法】Rime-中州韻 基本設定 附:官方定製指南
前言
不知不覺就到了年終了,距離上次更新部落格已經有一個半月,這段時間天天在加班,也沒作一下新的學習計劃,趁著元旦放假,寫一點好玩的東西,這次要記錄的是一點關於Rime相關的東西,文章本身不會長,只是說一點平時比較好用的設定,為了方便查閱,文末貼上定製指南
本文內容
基於上一篇「簡記」 Linux安裝五筆輸入法,包含arch和debian系的基礎上安裝好Rime,本文要記錄的是設定幾個實用的快捷鍵功能,順便搬運來一些Rime的設定,大家有興趣可以跟著本文設定玩玩。
正文
就記兩條最常用的設定吧,Rime是使用yaml配置的,不熟悉的請百度下了解大體概念
- 設定分號選第二候選詞,引號選第三候選詞
這裡使用ibus-rime舉例,執行cd ~/.config/ibus/rime
進入使用者家目錄的設定位置,如圖,之後的設定都在這裡
當然也可以在共享資料夾中,詳見
/usr/share/rime-data
目錄
在這個資料夾下,我們看到了之前設定五筆的檔案,和很多檔案,這裡我們只修改default.yaml
,開啟這個檔案,我們往下翻,看到key_binder
下級bindings
,如圖
這裡我們到這個標籤最下方新增如下程式碼(注意縮排和冒號後面的空格)
- {accept: semicolon, send: 2, when: has_menu} - {accept: apostrophe, send: 3, when: has_menu}
解釋一下,accept後邊第一個引數表示接收的按鍵代號(詳見官網),send 表示傳送的文字,這裡後邊設定了when即當這種has_menu有候選字出選單的時候,傳送第幾個文字/片語,也可以設定一些字母,設定的效果,如下圖
這裡vim設定了行號
儲存設定,點選rime的狀態列上的圖示,單擊部署,完成配置的載入,功能實現
- 四碼、無重碼自動上屏
開啟wubi86.schema.yaml
,在第49行左右有個根標籤名為speller,我們定位到這裡,如圖,新增程式碼
max_code_length: 4 # 最長4碼 auto_select: true # 頂字上屏 auto_select_unique_candidate: true # 無重碼自動上屏
儲存設定,點部署。本文後續內容就不贅述這句了。
如果沒有這個檔案,可能是沒有安裝
librime-data-wubi
,使用命令自行安裝即可
sudo apt-get install librime-data-wubi
當然了,不止是五筆,Rime支援很多輸入法,大家可以參考設定
- 匯入詞庫
發現已經有人寫了,直接貼地址Rime中州韻匯入QQ五筆詞庫
附:
Rime 定製指南
必知必會
建議您在定製 Rime 輸入法之前瞭解 Rime 輸入方案的概念、Rime 中的資料檔案分佈及作用等基礎知識。
重新佈署的操作方法
【中州韻】點選輸入法狀態列上的 ⟲ (Deploy) 按鈕 或:如果找不到狀態列,在終端輸入以下命令,可觸發自動部署:
rm ~/.config/ibus/rime/default.yaml; ibus-daemon -drx
【小狼毫】開始選單→小狼毫輸入法→重新佈署;當開啟託盤圖示時,右鍵點選「重新佈署」
【鼠鬚管】在系統語言文字選單中選擇「重新佈署」
對設定的修改於重新佈署後生效。編譯新的輸入方案需要一段時間,此間若無法輸出中文,請稍等片刻。
若部署完畢後,可以通過 Ctrl+` 喚出方案選單,輸入方案卻仍無法正常使用,可能是輸入方案未部署成功。請檢視日誌檔案定位錯誤。
查閱 DIY 處方集
已將一些定製 Rime 的常見問題、解法及定製檔連結俱收錄於下文的〔DIY 處方集〕
設定項速查手冊
雪齋的文件 全面而詳細解釋了輸入方案及詞典中各設定項的含義及用法。
定製指南
Rime 輸入方案,將 Rime 輸入法的設定整理成完善的、可分發的形式。 但並非一定要創作新的輸入方案,才可以改變 Rime 的行為。
當使用者需要對 Rime 中的各種設定做小幅的調節,最直接、但不完全正確的做法是:編輯使用者資料夾中那些 .yaml 文件。
這一方法有弊端:
- 當 Rime 軟體升級時,也會升級各種設定檔、預設輸入方案。使用者編輯過的文件會被覆寫為更高版本,所做調整也便丟失了。
- 即使在軟體升級後再手動恢復經過編輯的檔案,也會因設定檔的其他部分未得到更新而失去本次升級新增和修復的功能。
因此,對於隨 Rime 發行的設定檔及預設輸入方案,推薦的定製方法是:
建立一個檔名的主體部份(「.」之前)與要定製的檔案相同、次級副檔名(「.yaml」之前)為 .custom
的定製文件:
patch:
"一級設定項/二級設定項/三級設定項": 新的設定值
"另一個設定項": 新的設定值
"再一個設定項": 新的設定值
"含列表的設定項/@n": 列表第n個元素新的設定值,從0開始計數
"含列表的設定項/@last": 列表最後一個元素新的設定值
"含列表的設定項/@before 0": 在列表第一個元素之前插入新的設定值(不建議在補靪中使用)
"含列表的設定項/@after last": 在列表最後一個元素之後插入新的設定值(不建議在補靪中使用)
"含列表的設定項/@next": 在列表最後一個元素之後插入新的設定值(不建議在補靪中使用)
就是這樣:patch
定義了一組「補靪」,以原始檔中的設定為基礎,寫入新的設定項、或以新的設定值取代現有設定項的值。
不懂?那看我來示範。
一例、定製每頁候選數
Rime 中,預設每頁至多顯示 5 個候選項,而允許的範圍是 1〜9(個別 Rime 發行版可支援10個候選)。
設定每頁候選個數的預設值為 9,在使用者目錄建立文件 default.custom.yaml
:
patch:
"menu/page_size": 9
重新佈署即可生效。
〔注意〕 如果 default.custom.yaml 裡面已經有其他設定內容,只要以相同的縮排方式新增 patch:
以下的部分,不可重複 patch:
這一行。
若只需要將獨孤一個輸入方案的每頁候選數設為 9,以【朙月拼音】為例,建立文件 luna_pinyin.custom.yaml
寫入相同內容,重新佈署即可生效。
註:請參閱前文「重新佈署的操作方法」★
一例、定製標點符號
有的用家習慣以 /
鍵輸入標點「、」。
仍以【朙月拼音】為例,輸入方案中有以下設定:
# luna_pinyin.schema.yaml
# ...
punctuator:
import_preset: default
解釋:
punctuator
是 Rime 中負責轉換標點符號的元件。該元件會從設定中讀取符號對映表,而知道該做哪些轉換。
punctuator/import_preset
是說,本方案要繼承一組預設的符號對映表、要從另一個設定檔 default.yaml
匯入。
檢視 default.yaml
,確有如下符號表:
punctuator:
full_shape:
# ……其他……
"/" : [ /, "/", ÷ ]
# ……其他……
half_shape:
# ……其他……
"/" : [ "/", /, ÷ ]
# ……其他……
可見按鍵 /
是被指定到 "/", /, ÷
等一組符號了。 並且全形和半形狀態下,符號有不同的定義。
欲令 /
鍵直接輸出「、」,可如此定製 luna_pinyin.custom.yaml
:
patch:
punctuator/full_shape:
"/" : "、"
punctuator/half_shape:
"/" : "、"
以上在輸入方案設定中寫入兩組新值,合併後的輸入方案成為:
# luna_pinyin.schema.yaml
# ...
punctuator:
import_preset: default
full_shape:
"/" : "、"
half_shape:
"/" : "、"
含義是、在由 default
匯入的符號表之上,覆寫對按鍵 /
的定義。
通過這種方法,既直接繼承了大多數符號的預設定義,又做到了區域性的個性化。
使用全套西文標點
有些使用者習慣在中文裡使用ASCII標點,那麼與其一個一個覆寫,不如 整套都換掉 。
取得這份設定檔—— Rime 別樣設定,使用西文標點 在使用者資料夾儲存為 alternative.yaml
;
再將輸入方案中的「匯入 default
設定」通過打 patch 替換為「匯入 alternative
設定」
# luna_pinyin.custom.yaml
patch:
'punctuator/import_preset': alternative
就換上了自己習慣的一套標點!
一例、定製簡化字輸出
注意:
- 如果您只是需要 Rime 輸出簡化字,敲 Ctrl+` 組合鍵、從選單中選擇「漢字→漢字」即可!
- 本例說明瞭其中原理,以及通過設定檔修改預設輸出字形的方法。
Rime 預設的詞彙表使用傳統漢字。 這是因為傳統漢字較簡化字提供了更多資訊,做「繁→簡」轉換能夠保證較高的精度。
Rime 中的過濾器元件 simplifier,完成對候選詞的繁簡轉換。
# luna_pinyin.schema.yaml
# ...
switches:
- name: ascii_mode
reset: 0
states: [ 中文, 西文 ]
- name: full_shape
states: [ 半形, 全形 ]
- name: simplification # 轉換開關
states: [ 漢字, 漢字 ]
engine:
filters:
- simplifier # 必要元件一
- uniquifier # 必要元件二
以上是【朙月拼音】中有關繁簡轉換功能的設定。
在 engine/filters
中,除了 simplifier
,還用了一件 uniquifier
。 這是因為有些時候,不同的候選會轉化為相同的簡化字,例如「鐘→鍾」、「鍾→鍾」。 uniquifier
的作用是在 simplifier
執行轉換之後,將文字相同的候選項合併。
該輸入方案設有三個狀態開關:中/西文、全/半形、繁簡字。即 switches
之下三項。
每個開關可在兩種狀態(states
)之間切換,simplifier
依據名為 simplification
的開關狀態來決定是否做簡化:
- 初始狀態下、輸出為傳統漢字、〔方案選單〕中的開關選項顯示為「漢字→漢字」。
- 選擇該項後、輸出為簡化漢字、〔方案選單〕中顯示「漢字→漢字」。
- Rime 會記憶您的選擇,下次開啟輸入法時、直接切換到所選的字形。
- 亦可無視上次記住的選擇,在方案中重設初始值:
reset
設為 0 或 1,分別選中states
列表中的兩種狀態。
如果日常應用以簡化字為主:-(
,則每每在〔方案選單〕中切換十分不便; 於是佛振獻上預設輸出簡化字的設定檔:
# luna_pinyin.custom.yaml
patch:
switches: # 注意縮排
- name: ascii_mode
reset: 0 # reset 0 的作用是當從其他輸入方案切換到本方案時,
states: [ 中文, 西文 ] # 重設為指定的狀態,而不保留在前一個方案中設定的狀態。
- name: full_shape # 選擇輸入方案後通常需要立即輸入中文,故重設 ascii_mode = 0;
states: [ 半形, 全形 ] # 而全/半形則可沿用之前方案中的用法。
- name: simplification
reset: 1 # 增加這一行:預設啟用「繁→簡」轉換。
states: [ 漢字, 漢字 ]
其實預設輸入方案中就提供了一套【朙月拼音】的簡化字版本,名為【簡化字】,以應大家“填表”之需。 看他的程式碼如何卻與上篇定製檔寫得不同:
# luna_pinyin_simp.schema.yaml
# ...
switches:
- name: ascii_mode
reset: 0
states: [ 中文, 西文 ]
- name: full_shape
states: [ 半形, 全形 ]
- name: zh_simp # 注意這裡(※1)
reset: 1
states: [ 漢字, 漢字 ]
simplifier:
option_name: zh_simp # 和這裡(※2)
前文說,simplifier
這個元件會檢查名為 simplification
的開關狀態; 而這款【簡化字】方案卻用了一個不同名的開關 zh_simp
,即 ※1 處所示; 並通過在 ※2 行設定 simplifier/option_name
告知 simplifier
元件所需關注的開關名字。
何故?
還記得否,前文對「全/半形」這個開關的討論—— 當切換方案時,未明確使用 reset
重置的開關,會保持之前設定過的狀態。
【朙月拼音】等多數方案,並未重設 simplification
這個選項—— 因為使用者換了一種輸入編碼的方式、並不意味著需要變更輸出的字形。
而【簡化字】這一方案不同,恰恰是表達變更輸出字形的需求; 使用者再從【簡化字】切回【朙月拼音】時,一定是為了「回到」繁體輸出模式。 所以令【簡化字】使用獨立命名的開關、而非方案間共用的 simplification
開關, 以避免影響其他輸入方案的繁簡轉換狀態。
一例、預設英文輸出
有些使用者習慣預設英文輸出,在需要用中文時再做切換。這就需要我們在方案中重設狀態開關初始值。
還記得否?我們可用reset
設定項在方案中為某些狀態開關重設初始值:reset
設為 0 或 1,分別選中 states
列表中的兩種狀態。
我們以【朙月拼音】為例:
# luna_pinyin.custom.yaml
patch:
"switches/@0/reset": 1 #表示將 switcher 列表中的第一個元素(即 ascii_mode 開關)的初始值重設為狀態1(即「英文」)。
一例、定製方案選單
在【小狼毫】方案選單設定介面上勾勾選選,就可以如此定製輸入方案列表:
# default.custom.yaml
patch:
schema_list: # 對於列表型別,現在無有辦法指定如何新增、消除或單一修改某項,於是要在定製檔中將整個列表替換!
- schema: luna_pinyin
- schema: cangjie5
- schema: luna_pinyin_fluency
- schema: luna_pinyin_simp
- schema: my_coolest_ever_schema # 這樣就啟用了未曾有過的高階輸入方案!其實這麼好的方案應該排在最前面哈。
無有設定介面時,又想啟用、禁用某個輸入方案,手寫這樣一份定製檔、重新佈署就好啦。
一例、定製喚出方案選單的快捷鍵
喚出方案選單,當然要用鍵盤。預設的快捷鍵為 Ctrl+` 或 F4。
不過,有些同學電腦上 Ctrl+` 與其他軟體衝突,F4 甚至本文寫作時在【鼠鬚管】中還不可用。又或者有的玩家切換頻繁,想定義到更好的鍵位。
那麼……
# default.custom.yaml
patch:
"switcher/hotkeys": # 這個列表裡每項定義一個快捷鍵,使哪個都中
- "Control+s" # 新增 Ctrl+s
- "Control+grave" # 你看寫法並不是 Ctrl+` 而是與 IBus 一致的表示法
- F4
按鍵定義的格式為「修飾符甲+修飾符乙+…+按鍵名稱」,加號為分隔符,要寫出。
所謂修飾符,就是以下組合鍵的狀態標誌或是按鍵彈起的標誌:
- Release——按鍵被放開,而不是按下
- Shift
- Control
- Alt——Windows上 Alt+字母 會被系統優先識別為程式選單項的快捷鍵,當然 Alt+Tab 也不可用
- 嗯,Linux 發行版還支援 Super, Meta 等組合鍵,不過最好選每個平臺都能用的啦
按鍵的名稱,大小寫字母和數字都用他們自己表示,其他的按鍵名稱 參考這裡 這個更直觀的文件 的定義,去除程式碼字首 XK_
即是。
一例、定製【小狼毫】字型字號
雖與輸入方案無關,也在此列出以作參考。
# weasel.custom.yaml
patch:
"style/font_face": "明蘭" # 字型名稱,從記事本等處的系統字型對話方塊裡能看到
"style/font_point": 14 # 字號,只認數字的,不認「五號」、「小五」這樣的
一例、定製【小狼毫】配色方案
註:這款配色已經在新版本的小狼毫裡預設了,做練習時,你可以將文中 starcraft
換成自己命名的標識。
# weasel.custom.yaml
patch:
"style/color_scheme": starcraft # 這項用於選中下面定義的新方案
"preset_color_schemes/starcraft": # 在配色方案列表裡加入標識為 starcraft 的新方案
name: 星際我爭霸/StarCraft
author: Contralisk <[email protected]>, original artwork by Blizzard Entertainment
text_color: 0xccaa88 # 編碼行文字顏色,24位色值,用十六進位制書寫方便些,順序是藍綠紅0xBBGGRR
candidate_text_color: 0x30bb55 # 候選項文字顏色,當與文字顏色不同時指定
back_color: 0x000000 # 底色
border_color: 0x1010a0 # 邊框顏色,與底色相同則為無邊框的效果
hilited_text_color: 0xfecb96 # 高亮文字,即與當前高亮候選對應的那部份輸入碼
hilited_back_color: 0x000000 # 設定高亮文字的底色,可起到凸顯高亮部份的作用
hilited_candidate_text_color: 0x60ffa8 # 高亮候選項的文字顏色,要醒目!
hilited_candidate_back_color: 0x000000 # 高亮候選項的底色,若與背景色不同就會顯出光棒
效果自己看!
也可以參照這張比較直觀的圖:
另,此處有現成的配色方案工具供用家調配:
http://tieba.baidu.com/p/2491103778
DIY 處方集
已將一些定製 Rime 的常見問題、解法及定製檔連結收錄於此。
建議您首先讀完《定製指南》、通曉相關原理,以正確運用這些處方。
初始設定
在方案選單中新增五筆、雙拼
https://gist.github.com/2309739
倣此例,可啟用任一預設或自訂輸入方案,如【粵拼】、【註音】等。(詳解:參見前文「定製方案選單」一節)
如果下載、自己製作了非預設的輸入方案,將原始檔複製到「使用者資料夾」後,也用上面的方法將方案標識加入選單!
修改於重新佈署後生效。
【小狼毫】外觀設定
上文已介紹設定字型字號、製作配色方案的方法。
使用橫向候選欄、嵌入式編碼行:
# weasel.custom.yaml
patch:
style/horizontal: true # 候選橫排
style/inline_preedit: true # 內嵌編碼(僅支援TSF)
style/display_tray_icon: true # 顯示託盤圖示
【鼠鬚管】外觀與鍵盤設定
鼠鬚管從 0.9.6 版本開始支援選擇配色方案,用 squirrel.custom.yaml
儲存使用者的設定。
https://gist.github.com/2290714
在特定程式裡關閉中文輸入
【鼠鬚管】0.9.9 開始支援這項設定:
在指定的應用程式中,改變輸入法的初始轉換狀態。如在
- 終端
Terminal / iTerm
- 程式碼編輯器
MacVim
- 快速啟動工具
QuickSilver / Alfred
等程式裡很少需要輸入中文,於是鼠鬚管在這些程式裡預設不開啟中文輸入。
自定義 Mac 應用程式的初始轉換狀態,首先檢視應用的 Info.plist
檔案得到 該應用的 Bundle Identifier
,通常是形如 com.apple.Xcode
的字串。
例如,要在 Xcode
裡面預設關閉中文輸入,又要在 Alfred
裡面恢復開啟中文輸入,可如此設定:
# example squirrel.custom.yaml
patch:
app_options/com.apple.Xcode:
ascii_mode: true
app_options/com.alfredapp.Alfred: {}
註:一些版本的 Xcode
標識為 com.apple.dt.Xcode
,請注意檢視 Info.plist
。
【小狼毫】0.9.16 亦開始支援這項設定。
例如,要在 gVim
裡面預設關閉中文輸入,可如此設定:
# example weasel.custom.yaml
patch:
app_options/gvim.exe: # 程式名字全用小寫字母
ascii_mode: true
輸入習慣
使用Control鍵切換中西文
https://gist.github.com/2981316
以及修改Caps Lock、左右Shift、左右Control鍵的行為,提供三種切換方式。 詳見 Gist 程式碼註釋。
方便地輸入含數字的西文使用者名稱
通常,輸入以小寫拉丁字母組成的編碼後,數字鍵的作用是選擇相應序號的候選字。
假設我的郵箱地址是 [email protected]
,則需要在輸入rime之後上屏或做臨時中西文切換,方可輸入數字部分。
為了更方便輸入我的使用者名稱 rime123
,設定一組特例,將 rime
與其後的數字優先識別西文:
https://gist.github.com/3076166
以方括號鍵換頁
https://gist.github.com/2316704
新增 Mac 風格的翻頁鍵 [ ]
。這是比較直接的設定方式。下一則示例給出了一種更系統、可重用的設定方式。
使用西文標點兼以方括號鍵換頁
https://gist.github.com/2334409
詳見上文「使用全套西文標點」一節。
以回車鍵清除編碼兼以分號、單引號選字
https://gist.github.com/2390510
適合一些形碼輸入法(如五筆、鄭碼)的快手。
關閉逐鍵提示
table_translator
預設開啟逐鍵提示。若要只出精確匹配輸入碼的候選字,可關閉這一選項。
以【倉頡五代】為例:
# cangjie5.custom.yaml
patch:
translator/enable_completion: false
關閉使用者詞典和字頻調整
以【五筆86】為例:
# wubi86.custom.yaml
patch:
translator/enable_user_dict: false
關閉碼表輸入法連打
註:這個選項僅針對 table_translator
,用於遮蔽倉頡、五筆中帶有太極圖章「☯」的連打詞句選項,不可作用於拼音、註音、速成等輸入方案。
以【倉頡】為例:
# cangjie5.custom.yaml
patch:
translator/enable_sentence: false
關閉倉頡與拼音混打
預設,給出倉頡與拼音候選的混合列表。
如此設定,直接敲字母只認作倉頡碼,但仍可在敲 ` 之後輸入拼音:
# cangjie5.custom.yaml
patch:
abc_segmentor/extra_tags: {}
空碼時按空格鍵清空輸入碼
首先需要關閉碼表輸入法連打(參見上文),這樣才可以在打空時不出候選詞。
然後設定(以五筆86為例):
# wubi86.custom.yaml
patch:
translator/enable_sentence: false
key_binder/bindings:
- {when: has_menu, accept: space, send: space}
- {when: composing, accept: space, send: Escape}
模糊音
【朙月拼音】模糊音定製模板
https://gist.github.com/2320943
【明月拼音·簡化字/臺灣正體/語句流】也適用, 只須將模板儲存到 luna_pinyin_simp.custom.yaml
、 luna_pinyin_tw.custom.yaml
或 luna_pinyin_fluency.custom.yaml
。
對比模糊音定製模板與【朙月拼音】方案原件, 可見模板的做法是,在 speller/algebra
原有的規則中插入了一些定義模糊音的程式碼行。
類似方案如雙拼、粵拼等可參考模板演示的方法改寫 speller/algebra
。
【吳語】模糊音定製模板
https://gist.github.com/2015335
編碼反查
設定【速成】的反查碼為粵拼
https://gist.github.com/2944320
設定【倉頡】的反查碼為雙拼
https://gist.github.com/2944319
在Mac系統上輸入emoji表情
參考 https://gist.github.com/2309739 把 emoji
加入輸入方案選單;
切換到 emoji
輸入方案,即可通過拼音程式碼輸入表情符號。檢視符號表
輸入 all
可以列出全部符號,符號後面的括弧裡標記其拼音程式碼。
若要直接在【朙月拼音】裡輸入表情符號,請按此文設定:
http://gist.github.com/3705586
五筆簡入繁出
【小狼毫】用家請到下載頁取得「擴充套件方案集」。
安裝完成後,執行輸入法設定,新增【五筆·簡入繁出】輸入方案。
其他版本請參考這篇說明:
https://gist.github.com/3467172
修正不對稱繁簡字
繁→簡即時轉換比簡體轉繁體要輕鬆許多,卻也免不了個別的錯誤。
比如這一例,「乾」字是一繁對多簡的典型。由它組成的常用片語,opencc 都做了仔細分辨。但是遇到較生僻的片語、專名,就比較頭疼:
http://tieba.baidu.com/p/1909252328
活用標點建立自定義片語
在【朙月拼音】裡新增一些自定義文字、符號。可以按照上文設定「emoji表情」的方式為自定義片語建立一個專門的詞典。
可是建立詞典稍顯繁瑣,而活用自定義標點,不失為一個便捷的方法:
# luna_pinyin.custom.yaml
# 如果不需要 ` 鍵的倉頡反查拼音功能,則可利用 ` 鍵輸入自定義片語
patch:
recognizer/patterns/reverse_lookup:
'punctuator/half_shape/`':
- '佛振 <[email protected]>'
- 'http://rime.github.io'
- 上天賦予你高的智商,教你用到有用的地方。
上例 recognizer/patterns/reverse_lookup:
作用是關閉 ` 鍵的反查功能。若選用其他符號則不需要這行。又一例:
patch:
'punctuator/half_shape/+': '+_+'
'punctuator/half_shape/+'
因為字串包含符號,最好用 單引號 括起來,避免符號的轉義問題。
重定義「/」這個符號,無法用上面演示的路徑連寫方式,那就分開寫:
patch:
punctuator/half_shape:
'/': [ '/', '/hello', '/bye', '/* TODO */' ]
'+': '+_+'
更多請參考: