上一篇文章中,我们将Emacs变得稍微好看了点。换成了自己喜欢的主题和颜色,这样每天用起来也比较养眼,不会特别排斥。本篇文章的主要任务就是配置输入法方便输入中文以及将vim的操作模式搬到Emacs中。进一步提到Emacs的可用性
配置中文输入法
系统基本环境配置
在配置输入法之前,需要系统支持中文,并且有对应的中文字体可以显示中文,而且还需要对应的输入法框架支持。
首先我们安装中文字体和语言包,本人之前有一篇介绍如何搭建wsl2+archlinux的文章,已经完成了这一步。但是为了没看过那篇文章的读者不用再去费劲的找那篇文章,我还是把命令贴出来:
sudo pacman -S wqy-zenhei wqy-microhei noto-fonts-cjk # 安装中文字体
sudo pacman -S fcitx5-im fcitx5-chinese-addons # 安装中文输入法框架及中文引擎
sudo pacman -S fcitx5-qt fcitx5-gtk # GUI支持
接着配置 Locale ,我们需要编辑 /etc/locale.gen
文件,取消下面两行的注释
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
编辑完成之后,调用 sudo locale-gen
命令生成 locale。
接着我们需要在 ~/.bashrc
或者 ~/.zshrc
又或者其他shell的配置文件中加入输入法的配置
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMOIFIERS=@im=fcitx5
然后我们启动fcitx5服务
dbus-launch fcitx5 --disable=wayland -d &
这个时候我们可以启动emacs,并且执行 M-x toggle-input-method
或者使用 C-\
来切换输入法。只是默认的 chinese-py
输入法比较难用。所以我们需要换一个输入法并且给出拼音的词库
emacs-rime 配置
这个配置是我在 Emacs-China论坛 的一篇文章中发现这个输入法。
可以访问 输入法源代码地址 ,它已发布到 Melpa,所以我们可以通过use-package
或者emacs自带的package来安装和管理。这里还是使用 use-package
在安装之前,需要安装librime
和 fcitx5-rime
。在arch中使用
sudo pacman -S librime fcitx5-rime
接着安装雾凇拼音,但是根据emacs-rime 官方文档的说法,最好不要将~emacs-rime~
与 ~fcitx-rime
~ 共用用户数据目录。所以这里我们我们将它放到其他目录
git clone https://github.com/iDvel/rime-ice ~/.config/rime --depth=1
然后我们进行emacs-rime
的配置和安装
(use-package rime
:ensure t
:custom
(default-input-method "rime")
(rime-posframe-properties
(list :background-color "#333333"
:foreground-color "#dcdccc"
:font "WenQuanYi Micro Hei Mono-14"
:internal-border-width 10))
(rime-user-data-dir "~/.config/rime")
(rime-show-candidate 'posframe))
到这里我们使用 C-\
就可以愉快的输入中文了
Vim 操作方式
本系列文章并没有像一般的Emacs教程那样给各位读者介绍Emacs的操作和快捷键。因为我觉得Emacs可以很方便的变成跟vim一样的编辑器,既然读者们都熟悉vim,那就没必要单独的学习一套Emacs操作,直接继承vim的操作就行。
这里说一个题外话,我觉得一个编辑器如果不支持vim的操作模式,要么就是使用的人不多,要么就是不够开放。对我来说这种编辑器平时就没有学习和使用的必要了。
我们使用evil
插件来模拟vim的操作。
(use-package evil
:ensure t
:init
(evil-mode))
我们执行完这句代码之后会发现已经进入了vim的normal模式了。这个时候又可以愉快的使用vim的操作方式来编辑文本了。
但是查阅了关于evil的文档后发现,evil本身并不支持像vim那样设置leaderkey,我们要结合其他插件来达到这一效果。我们使用 general
插件来模拟并设置leaderkey
(use-package general
:ensure t
:config
(general-evil-setup t))
插件安装完成之后可以使用下面的代码来设置leaderkey
(general-create-definer my-leader-def
:states '(normal insert visual emacs)
:prefix "SPC"
:non-normal-prefix "C-,")
这里使用 general
提供的 general-create-definer
来定义自己的leader键,它可以定义leader键的作用范围和触发方式。my-leader-def
是一个符号它代表着我们在这里定义的leader键,后续可以通过它来结合其他按键来实现快捷键绑定。这里的 :states
表示作用的范围,在启用evil插件之后我们在 normal
、insert
、visual
、emacs
这几个模式中启用这个leader键。通过 :prefix
定义leader键,这里我定义leader键为空格。最后一个参数 :non-normal-prefix
定义在非normal
模式下使用 C-,
来作为leader键。
后面我们就可以通过这个 my-leader-def
这个符号来绑定快捷键了。下面提供一个例子来演示如何绑定快捷键。
前面介绍vim相关内容的时候提到过,我们使用 <leader>ee
来快速打开配置文件,使用 <leader>ss
来重新加载配置,在这里实现以下emacs版本的这套功能。我们先来实现这两个功能函数
(defun open-my-emacs-config()
(interactive)
(find-file "~/.emacs.d/init.el"))
(defun source-my-emacs-config()
(interactive)
(eval-buffer (get-buffer "~/.emacs.d/init.el")))
实现了这样的函数之后就是针对这些命令来绑定快捷键了。我们使用下面的代码来绑定
(my-leader-def
"ss" 'open-my-emacs-config)
(my-leader-def
"ee" 'source-my-emacs-config)
至此我们使用evil
和 general
插件完成了一个简单的Emacs vim化的改造。利用这些简单的配置后面在使用的时候应该会更加的得心应手。
随着代码越来越多,需要用git管理起来,每篇文章更新的代码我都会传到GitHub上供读者参考
本篇代码