百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Emacs 折腾日记(十九)——配置输入法和vim操作方式

liuian 2025-04-30 18:03 20 浏览

上一篇文章中,我们将Emacs变得稍微好看了点。换成了自己喜欢的主题和颜色,这样每天用起来也比较养眼,不会特别排斥。本篇文章的主要任务就是配置输入法方便输入中文以及将vim的操作模式搬到Emacs中。进一步提到Emacs的可用性

配置中文输入法

系统基本环境配置

在配置输入法之前,需要系统支持中文,并且有对应的中文字体可以显示中文,而且还需要对应的输入法框架支持。

首先我们安装中文字体和语言包,本人之前有一篇介绍如何搭建wsl2+archlinux的文章,已经完成了这一步。但是为了没看过那篇文章的读者不用再去费劲的找那篇文章,我还是把命令贴出来:

Bash
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 文件,取消下面两行的注释

Bash
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

在安装之前,需要安装librimefcitx5-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插件之后我们在 normalinsertvisualemacs 这几个模式中启用这个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)

至此我们使用evilgeneral 插件完成了一个简单的Emacs vim化的改造。利用这些简单的配置后面在使用的时候应该会更加的得心应手。

随着代码越来越多,需要用git管理起来,每篇文章更新的代码我都会传到GitHub上供读者参考
本篇代码

相关推荐

用python操作excel、word、pdf非常容易,迅速教会你

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

不同类型的文本、Word文档、Excel文档和图片将它们转换为PDF格式

要根据不同类型的文本、Word文档、Excel文档和图片将它们转换为PDF格式,你可以使用Python中的不同库来实现。下面是一个示例代码,展示了如何使用不同的库来处理不同类型的文件并将其转换为PDF...

10分钟实现PDF转Word神器!看DeepSeek如何用Python解放打工人

开篇痛点每个被PDF折磨过的职场人都懂——领导发来的扫描件要修改,手动抄到Word需要2小时;网上下载的报告想复制数据,却变成乱码…今天我们用Python+DeepSeek,10分钟打造一个智能转换工...

第12天 | 12天搞定Python,word和pdf

其实,Python除了对excel的支持很nice之外,对word、ppt和pdf也不赖的,上一篇《第12天|12天搞定Python,让excel飞起来》说了excel方面的内容,这一篇补上Py...

用python轻松操作excel、word、pdf吗?这篇文章教会你!拿走不谢

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

Python开发打印服务(1)

Python开发打印服务(1)1.需求背景在项目开发中,我们经常会遇到打印预览、打印的需求。比如:我们在开发进销存或者其他系统应用时,经常会按照客户的需求来定制报表等。在Web项目中,实现打印预览...

零代码编程:用ChatGPT将PDF文件的表格批量转为Excel表格

电脑中有几百个PDF文件,文件内容格式一致,每个PDF文件第一页是一个表格。想把这几百个PDF文件里面的表格都提取出来,转为excel表,该怎么办?打开ChatGPT(一定要用GPT4,编程能力很强。...

用python操作excel、word、pdf非常迅速方便,迅速教会你

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

PDF转换技巧:如何免费将 PDF 转换为 Excel

随着数字文档的使用不断增加,对高效和值得信赖的文档转换工具的需求也在增加。将PDF文件转换为Excel电子表格(XLS)可能具有挑战性,但这篇文章旨在缓解这些困难。这是带有分步说明的指南。...

PDF转Excel要收费?python几行代码帮你免费搞定(附代码)

写在前面经常在学习或工作中需要从PDF获取一些表格数据,直接用PDF阅读器复制的话,很难复制出来,使用PDF转Excel的软件,又需要收费。这时候,可以使用我们强大的python,几行代码就能把pdf...

python将PDF格式文档转换为excel文档

首先安装pdfplumber库pipinstallpdfplumberopenpyxl然后转换#导入两个模块importpdfplumberimportpandasaspd...

用DEEPSEEK写PDF转为Excel 程序

今天学校发了《2027通用版普通高校拟在山东招生专业(类)选考科目要求》(本科)文件为PDF版要转为化Excel用DEEPSEEK开发过程提问:写一个把PDF内容按着原来格式转化为EXCELL表格电脑...

用DeepSeek+Trae 自己写PDF表格转为EXCEL表格

如何将下面PDF表格转为EXCEL能更好统计在TRAE提问:新建窗口-选择文件夹-写一个PDF转excel电脑程序:样式不变,界面有选择文件,有输出文件,显示进度及页码,开始,暂停,退出,实现所...

Python一行代码实现PDF转Excel

第三方包tabula工具适用于从PDF中提取可复制(非图片格式)的表格数据,并输出表格安装pipinstalltabula-py函数调用df=tabula.read_pdf("PDF文件...

Python教程:python字典zip函数用法 - 学习如何操作字典

知识星球:写代码那些事如果你有收获|欢迎|点赞|关注|转发这里会定期更新|大厂的开发|架构|方案设计这里也会更新|如何摸鱼|抓虾欢迎来到写代码那些事!在Python编程中,字典(Dictionary)...