2020 年 6 月开始使用双拼,输入工具自然也相应地做了一些调整,加之从 Fcitx 升级至 Fcitx5,以及 Emacs 内转向 Emacs Rime,整体变动还是很多的,这次一并记录下来。
- 系统:Arch Linux
- 桌面环境: KDE
- 编辑器: Emacs
- 双拼方案:小鹤双拼
安装(Fcitx5 及 Fcitx5-Rime)
# 卸载旧包
$ sudo pacman -Rs $(pacman -Qsq fcitx)
# 安装 Fcitx5 本体、输入法引擎、输入法模块及 GUI 配置工具
$ sudo pacman -S fcitx5 fcitx5-rime fcitx5-qt fcitx5-gtk kcm-fcitx5
配置 Fcitx5
Fcitx5 配置文件
编辑 ~/.config/fcitx5/profile
[Groups/0]
# Group Name
Name=默认
# Layout
Default Layout=us
# Default Input Method
DefaultIM=rime
[Groups/0/Items/0]
# Name
Name=keyboard-us
# Layout
Layout=
[Groups/0/Items/1]
# Name
Name=rime
# Layout
Layout=
[GroupOrder]
0=默认
设置环境变量
程序中正常启用 Fcitx5, 需设置以下环境变量,并重新登陆:
X11 用户直接编辑 ~/.xprofile 添加如下内容
export GTK_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
export QT_IM_MODULE=fcitx5
fcitx5 &
Wayland 用户在 ~/.pam_environment 中添加如下内容
INPUT_METHOD DEFAULT=fcitx5
GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE DEFAULT=fcitx5
XMODIFIERS DEFAULT=\@im=fcitx5
修改主题
$ mkdir -p ~/.local/share/fcitx5/themes/fcitx5-dark-transparent
$ git clone https://github.com/hosxy/fcitx5-dark-transparent.git ~/.local/share/fcitx5/themes/fcitx5-dark-transparent
- Github上有人通过 ssfconv 工具转换了几款搜狗极简风格皮肤的 Fcitx5 主题
- fcitx5-material-color 类似 win 10 自带的微软输入法皮肤
- 一些设置,直接通过图形界面设置就好,如设置竖向选词框、字体等
至此,Fcitx5 设置完毕(一些小的设置也可以去 KDE 系统设置里直接修改)。
配置 Fcitx5-Rime
接下来,在 Fcitx5 的基础上配置 Fcitx5-Rime。这里可以直接使用自己以前的配置,也可以从网络上找别人的方案。
Fcitx-Rime 用户配置目录为 ~/.config/fcitx/rime ,Fcitx5-Rime 则为 ~/.local/share/fcitx5/rime
# 直接使用以前的配置
$ cp -r ~/.config/fcitx/rime ~/.local/share/fcitx5/rime
配置参考: Github
(做好备份后)将上方配置中的文件复制到 Fcitx5 用户配置目录,就可以愉快地使用小鹤双拼(简体中文)了。
自定义词库
直接使用 Fcitx5 拼音的话,增加词库十分方便。
# AUR 上有 "肥猫百万大词库"和 "萌娘百科词库"的打包
$ sudo pacman -S fcitx5-pinyin-{zhwiki,moegirl}
而对于 Rime 用户来说,事情好像有一点点复杂……
创建配置文件
用户配置目录下, default.yaml 用来调试全局方案,切换输入方案 *.schema.yaml 后不影响设定,若直接修改 default.yaml ,
*.schema.yaml 等文件,程序更新后内容会被覆盖,因此需要创建 *.custom.yaml 等文件(打补丁),对 Rime 全局配置、各输入方案配置、自制输入方案等进行管理。
编辑 default.custom.yaml 指定输入方案(这里只保留了小鹤双拼 schema: double_pinyin_flypy ) ,并设定一些快捷操作。
patch:
schema_list:
- schema: double_pinyin_flypy
switcher/hotkeys:
- F4
switcher/save_options:
- full_shape
- ascii_punct
- simplification
menu/page_size: 6
ascii_composer:
good_old_caps_lock: false
switch_key:
Shift_L: noop
Shift_R: noop
Control_L: noop
Control_R: noop
Caps_Lock: commit_code
Eisu_toggle: clear
key_binder/bindings:
- {accept: "Control+p", send: Up, when: composing}
- {accept: "Control+n", send: Down, when: composing}
- {accept: "Control+b", send: Left, when: composing}
- {accept: "Control+f", send: Right, when: composing}
- {accept: "Control+a", send: Home, when: composing}
- {accept: "Control+e", send: End, when: composing}
- {accept: "Control+d", send: Delete, when: composing}
- {accept: "Control+k", send: "Shift+Delete", when: composing}
- {accept: "Control+h", send: BackSpace, when: composing}
- {accept: "Control+g", send: Escape, when: composing}
- {accept: "Control+bracketleft", send: Escape, when: composing}
- {accept: "Alt+v", send: Page_Up, when: composing}
- {accept: "Control+v", send: Page_Down, when: composing}
# - {accept: ISO_Left_Tab, send: "Shift+Left", when: composing}
- {accept: "Shift+Tab", send: Page_Up, when: composing}
- {accept: Tab, send: Page_Down, when: composing}
- {accept: minus, send: Page_Up, when: has_menu}
- {accept: equal, send: Page_Down, when: has_menu}
填写配置信息
在配置文件 double_pinyin_flypy.custom.yaml 中写入以下内容
patch:
# 指定自定义词库位置
translator/dictionary: extended
"translator/dictionary 字段的值可自定义,它代表不含扩展名 *.dict.yaml
的词库文件,接下来创建该文件( extended.dict.yaml)
创建词库配置
在 extended.dict.yaml 中增加准备好的词库。
---
name: extended # 词库名称,与文件名一致
version: "1.0" # 版本号,任填
sort: by_weight # 排序依据,by_weight表示按权重(词频)排序
use_preset_vocabulary: true # 是否启用默认的“八股文”词库及词频系统
import_tables:
- luna_pinyin.idiom # 第三方词库1
- luna_pinyin.place # 第三方词库2
- luna_pinyin.poem # 第三方词库3
---
重新部署
修改配置文件后,需要 重新部署 使其生效。
同步
使用 Rime 一定要做好同步,否则丢了自己几年的输入习惯就太可惜了。同步需要修改配置目录下的 installation.yaml 文件:
installation_id: "Arch Linux"
sync_dir: "~/Sync/RimeSync/"
下面的 Emacs Rime 乃至 Android 上的同文输入法,都需要修改这个文件来指定同步目录,这样还能做到 Linux+Emacs+Android 等不同环境下的词库同步。
Emacs Rime 安装及配置
M-x package-install rime
以下是一个简单的配置示意:
(use-package rime
:custom
(default-input-method "rime")
(rime-show-candidate 'posframe))
Emacs Rime 作为 Rime 的前端,可以直接使用上面配置好的系统 Rime 输入法的文件,但是不建议把 rime-user-data-dir 设置到系统 Rime 用户数据目录下,“可能会破坏 Rime 本身的自造词和排序数据”。可以修改 .emacs.d/.local/etc/rime/installation.yaml 文件——
installation_id: "Emacs"
sync_dir: "~/Sync/RimeSync/"
然后将其他配置文件从 /.local/share/fcitx5/rime 目录拷贝过来,再回到 Emacs 中 M-x rime-sync 。
很久很久以前遇到过 Emacs 无法使用 Fcitx 的情况。
$ LC_CTYPE=zh_CN.UTF-8 emacs --daemon
$ emacsclient --create-frame --no-wait
不过在使用 Emacs Rime 后,问题和需求完全和上面反了过来——最好还是在 Emacs 中禁用系统输入法。
- 在
~/.Xresources中设置Emacs*useXIM: false(推荐) - 或者不设置
LC_CTYPE为zh_CN.UTF-8
跑题时间: 在Android上使用同文输入法
我很少在手机上打字,对于手机上的输入方案并没有什么特殊需求, 此前一直用的是 Gboard,直到我越来越想自定义一些快捷输入(而非自定义短语)时,才慢慢再次将目光投向了 Rime。
Android 上可以选择 Trime 同文输入法。安装成功后,跟着 Wiki 做一些简单的设定(参考trime.yaml详解 ,酷安上也有大量关于同文输入法的讨论和分享),同时把 Arch Linux 上的配置复制到手机上。
接下来要处理的就是词库同步问题,和上面系统 Rime 输入法以及 Emacs Rime 一样,修改 rime 文件夹下的 installation.yaml 文件,根据自己的情况填写 installation_id 和 sync_dir 。
installation_id: "Android"
sync_dir: "/storage/emulated/0/Sync/RimeSync/"
可以选择使用 Syncthing 等同步工具,同步电脑和手机词库。
至此,Linux/Emacs/Android 输入法就完全统一起来了。