ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux下Emacs安装与配置指南:从入门到避坑

Linux下Emacs安装与配置指南:从入门到避坑 简介这份 PDF 是一篇面向 Linux 软件工程师、运维人员及系统开发学习者的 Emacs 入门参考资料聚焦于 Emacs 编辑器的功能概览与其在 Red Hat 系统中的安装配置能帮助读者系统认识 Emacs 的发展背景、两大主流分支以及它作为集成开发环境在日常开发中的实际价值。资源包内只有 1 个 PDF 文件压缩后整体大小约为 143KB内容精炼、便于离线阅读和随时查阅。目前已有 126 人浏览学习该文档对于正在选型编辑器、需要搭建 Linux 开发环境或希望提升文本处理效率的技术人群具有参考意义。具体来看文档先介绍了 Emacs 在收发电子邮件、Telnet 远程登录、查看日历、编写大纲、编辑多种编程语言、调用 GDB 调试、浏览网站及玩游戏等方面的扩展能力随后以 Red Hat Enterprise 5 为例详细演示了从 GNU 官网获取安装包、解压文件、运行 configure 脚本检查系统配置、执行 make 编译安装的完整流程并提醒读者在安装配置出错时需清理之前的编译备份文件再重新配置避免环境残留导致失败。整体内容紧凑既适合初学者按步骤操作也可作为开发者的快速查阅手册。1. 拿到这个标题先别急着搜教程Emacs 装起来不难难在装完发蒙把《Linux下文本编辑利器Emacs简介与安装过程.pdf》这个标题落到命令行之前多数人第一反应是又一个编辑器。对一线运维而言Emacs 更像一个装在终端里的工作台既是文本编辑器也是一个用 Emacs Lisp 驱动的扩展环境能把改配置、看日志、做文本批处理收拢到一个进程里。安装通常一条命令就能完成真正的门槛在装完以后——不知道模式、缓冲区、键位这三件事你会对着空界面发蒙。这里不谈炫技插件目标只有一个在 Linux 上把 Emacs 装干净、配顺手并避开我踩过的坑。适合觉得自己缺一个能长期使用的编辑器、又想少走弯路的从业者如果只打算临时改一个文件vim 更轻不必换。2. Emacs 到底是不是一个编辑器想清楚三件事再决定要不要装2.1 Emacs 不是靠“功能多”赢的而是靠 Elisp 扩展链很多刚接触 Linux 的工程师翻 linux 常用命令清单时发现编辑器要么写 vim 要么写 emacs于是下意识把两者当成同一类软件比较。其实二者架构差异很大vim 的核心是“一套模式加键位”而 Emacs 的核心是一个 Emacs Lisp 解释器编辑功能只是运行在解释器里的一组默认扩展。你安装 emacs 包时如果留意过依赖会发现里面带了大量与 elisp 相关的文件整个包比 vim 大不少这也是它不可能是轻量编辑器的原因。我一般这样理解平时说的“编辑”只是它启动后运行的第一个程序。语法高亮是 major mode 加载的脚本Git 操作是 Magit 那组脚本文件管理器 dired、终端 eshell 也全是扩展。理解这一点就不会再问“为什么 Emacs 连邮件都能看”——它不是把邮件功能硬塞进编辑器而是编辑器本身只是一层壳功能由扩展脚本往上搭。这个架构的好处是你踩到某个痛点时通常已经有现成扩展不需要去改 C 代码。坏处也很明显启动时加载的脚本越多启动就越慢。所以我建议新用户一定从最小配置开始别第一天就塞一堆网上抄来的插件否则你根本分不清是配置问题还是软件本身有问题。2.2 与 vim 的选型差异临时改文件还是建一个长期工作台选型没有标准答案但场景差异很值得说。运维里经常要临时改 nginx.conf、改 systemd unit这种场景我仍然会用 vim因为单手就能完成“打开、改、保存、退出”。Emacs 的默认键位在这种高频小任务上反而显啰嗦保存要按 C-x C-s退出要按 C-x C-c更像是在操作一个会话而不是编辑一个文件。那 Emacs 适合谁我的判断是适合长时间泡在文本里的人。比如同一份大日志要按时间戳拆成多段多份配置要统一改缩进或者打算用 Org-mode 管理笔记和任务这时候 vim 的哲学就开始吃力。以往你得写一串 sed 或 python 脚本而 Emacs 里可以直接选中区域、运行一段 Elisp甚至用键盘宏回放同一批操作。这种“编辑器内完成批处理”的体验是它被叫工作台的原因。面试题和同事闲聊里也常出现“vim 还是 Emacs”的争论我的经验是不接茬。两者解决的不是同一类问题vim 极简、快、适合服务器单点修改Emacs 厚重、可扩展、适合持续编辑和知识整理。你可以都装它们不冲突。2.3 缓冲区、模式、键位三个黑话与一个最小实验第一次打开 Emacs 的人通常被三个词劝退buffer、major mode、key chord。这里用大白话讲一遍。缓冲区是一块暂时保存文本的内存区域一个文件对应一个 buffer你还没写文件时新建 buffer 也能编辑窗口是显示 buffer 的窗格“开一个 buffer”不等于“弹一个窗口”。这点在纯终端里尤其重要按 C-x 3 可以把同一个终端左右分成两块各自显示不同 buffer这是 vim 用户一开始很不适应的思路。模式是控制当前 buffer 行为的开关。major mode 决定语法高亮和缩进规则比如打开 .py 文件会自动进入 python-mode打开 .el 文件进入 emacs-lisp-modeminor mode 是叠加的小功能比如显示行号、自动换行。你不必记住所有模式只要知道缩进不对、高亮没生效时先确认 major mode 是不是猜错了常见做法是输入 M-x python-mode 手动指定。键位记号里C- 表示 CtrlM- 表示 Alt。比如 C-x C-s 的意思是“先按 Ctrlx再按 Ctrls”不是打一串字符。如果你不熟悉这种写法建议现在跟着做一次最小实验# 用干净配置启动排除个人配置干扰适合第一次上手 emacs -Q -nw启动后会看到欢迎页。不要急着点界面直接试四个动作按 C-x C-f 输入文件路径回车打开文件改一行后按 C-x C-s 保存按 C-g 取消当前命令按 C-h t 进入内置英文教程。这四个动作能走完说明 Emacs 基本运行链路已经通了。之后不管装的是图形版还是终端版操作逻辑都一样区别只是字体渲染和鼠标行为。到这里你应该能判断 Emacs 是不是自己想要的工具。想继续就进入正题不同 Linux 发行版到底怎么装、装哪个包。3. 在 Linux 上安装 Emacs四种发行版路线与最小验证3.1 Debian 系Ubuntu/Kali与 WSLapt 两条命令装最小版从发行版仓库安装是我最常用的方式。Debian、Ubuntu、Kali Linux 这类基于 Debian 的系统命令完全一致用 WSL 的 Windows 用户如果装的是 Ubuntu 发行版下面这套同样适用前提是 WSL 内核别太旧否则会提示版本过旧需要先更新。具体安装写下来只有两行# 刷新软件源索引避免出现 Unable to locate package sudo apt update # 安装终端版 emacs不依赖 X11适合 SSH 和纯命令行环境 sudo apt install -y emacs-nox这里我用 emacs-nox 而不是 emacs 是有意的。nox 表示无图形界面依赖安装体积小启动也不需要连接 X server适合 ssh 登录的服务器、虚拟机安装 linux 后的最小环境。如果你在桌面版 Ubuntu 里想要图形界面把包名换成 emacs 即可系统会多装几个图形库但核心编辑器是同一套。装完以后用 apt-cache 看一眼仓库实际提供的版本apt-cache policy emacs-nox | head -n 5输出里的 Candidate 就是当前源里会被安装到的版本号。不同 Ubuntu 版本差异很大但只要源正常仓库里的版本都足够日常使用不必追求源码编译最新版。3.2 RHEL 系与 Arch 系dnf、pacman 的等价写法CentOS/Rocky Linux/AlmaLinux 这类系统的默认包管理器是 dnf老的 CentOS 7 还用 yum。命令非常接近# RHEL 系安装命令 sudo dnf install -y emacs-nox需要留意的坑是在最小化安装的 Rocky Linux 上默认软件源里未必有 emacs通常要先把 EPEL 仓库装上再执行上面的命令。如果 dnf 提示没有匹配的包先别怀疑命令写错先查 EPEL 有没有启用。老系统的 emacs-nox 会额外依赖 ncurses 和 gnutls这些一般都会被包管理器自动带上。Arch 系Arch、Manjaro的官方仓库里直接提供完整版 emacssudo pacman -S --noconfirm emacsArch 的包默认带图形支持实际使用中我习惯在纯终端里仍然用 emacs -nw 强制终端模式运行。--noconfirm 只是跳过确认不想要可以去掉手动按 y 确认。国内一些基于 Debian 或 RHEL 的发行版包名基本沿用上游安装命令直接参照对应系即可。3.3 源码编译安装当仓库版本太旧或需要自定义特性时仓库够用为什么还有人编译两类情况一是发行版太老比如还在用十年前内核的长期服务器仓库里 Emacs 版本太低某些新扩展要求较高版本 API二是需要自定义特性比如启用较新版本才有的本地编译加速。源码编译没那么可怕套路固定# 先安装构建依赖以 Debian/Ubuntu 为例 sudo apt install -y build-essential libgnutls28-dev libncurses-dev # 解压从官网或镜像站下载的 tarball tar xf emacs-*.tar.xz cd emacs-*/ # 生成 Makefile--without-x 表示不依赖图形库适合服务器 ./configure --without-x # 用多核并行编译nproc 返回 CPU 核数 make -j$(nproc) # 安装到 /usr/local/bin通常不覆盖发行版自带的 /usr/bin/emacs sudo make install编译前先确认依赖齐全少了 libgnutls 会在 configure 阶段直接报错缺 libncurses 会在编译中后期才报错后者更难排查。建议把 configure 的输出保存到文件里失败时回看最后几行。tarball 解压后目录名往往带具体版本号上面用 emacs-* 通配符匹配因为不同时间下载的版本不一致列死版本反而误导。3.4 安装后三分钟验证版本、批量自检与内置教程安装完不要急着打开就敲代码先用三个命令确认环境可用# 1. 看版本 emacs --version # 2. 以批处理方式跑一段 elisp验证核心后端没有坏 emacs --batch --eval (message emacs works) # 3. 以终端模式启动确认交互界面正常 emacs -nw第二条值得多说一句。--batch 模式不进入交互界面而是直接把表达式压给 Emacs 解释器执行并退出适合写脚本、测试配置、做批量文本处理。如果这条能输出 message 内容且退出码为 0说明核心解释器是好的。之后再看版本号和 -nw 能否打开界面。用一张表把验证逻辑固定下来避免以后凭感觉判断验证点命令期望结果软件是否能执行emacs --version输出版本号和版权信息核心解释器是否健康emacs --batch --eval (message ok)屏幕出现 ok终端交互是否可用emacs -nw进入 Emacs 界面输入字符有回显这三步走完安装过程正式结束。真正的工作从下一步开始把它配置成我们想要的样子。4. 装完先做这四件事配置文件、中文输入、字体与键位4.1 配置文件放对位置~/.emacs.d/init.el 与备份目录安装之后默认配置能用但满足不了中文环境和工作习惯。用户配置默认放在 ~/.emacs.d/init.el 里有些老教程让你写 ~/.emacs两者同时存在时优先加载 init.el所以我建议统一用目录方式管理后面加再多配置都不会把家目录拖成散落一堆文件。第一份 init.el 建议只做四件小事关欢迎页、指定默认目录、开行号、把备份文件统一挪进隐藏目录mkdir -p ~/.emacs.d/backups cat ~/.emacs.d/init.el EOF ;; 最小可用的 init.el先跑通再增补 (setq inhibit-startup-message t) ; 关闭默认欢迎页 (setq default-directory ~/work/) ; 默认打开文件的起始目录 (global-display-line-numbers-mode 1) ; 所有 buffer 显示行号 (setq backup-directory-alist ((. . ~/.emacs.d/backups))) (setq auto-save-file-name-transforms ((.* ~/.emacs.d/backups/ t))) ; 自动保存文件也进备份目录 EOF逻辑说明行号对新手特别重要否则在终端里切换 buffer 时根本分不清行与列备份目录是为了防止修改 /etc 下系统配置时写坏Emacs 默认会在原文件旁生成带 ~ 后缀的备份统一拖到用户目录更安全。auto-save 配置给长文档编辑上了一份保险中间崩溃不至于全丢。配置改完先用批处理模式加载一次确认语法没写坏再进交互界面emacs --batch -l ~/.emacs.d/init.el --eval (message init ok)如果 init.el 有括号不匹配或函数名写错这一步会直接报错并指到具体问题。这是我最常用的自检方式比打开 Emacs 看启动日志快得多。4.2 中文输入与 locale终端和图形界面分开设国内 Linux 环境里中文输入几乎绕不开而且问题通常不在 Emacs 本身而在系统的 locale 和输入法框架。终端版 Emacs 显示中文靠终端模拟器和 locale图形版依赖 ibus/fcitx 这类输入模块。先检查当前环境locale | head -n 3 echo $LANG如果 LANG 是 POSIX 或 C中文会显示成问号输入更不可能。Debian/Ubuntu 系在 /etc/default/locale 里配RHEL 系在 /etc/locale.conf 里配。临时生效先这样export LANGzh_CN.UTF-8 export LC_ALLzh_CN.UTF-8 emacs -nw注意 LC_ALL 优先级最高只设 LANG 不设 LC_ALL部分发行版仍会回退到 C locale所以临时排查时两个一起设最省心。图形界面下输入法一般由 fcitx5 或 ibus 接管Emacs 本身不需要额外配置。真正踩坑的地方是快捷键冲突输入法默认用 CtrlSpace 切换中英文而 Emacs 把 C-Space 用作设置标记点按一下不知道到底切了输入法还是选了区域。解决方式有两个把输入法切换键改成别的组合或者接受它需要设标记时改用 C-。4.3 字体与编码乱码排查的两个入口很多人装完图形版 Emacs 第一件事就是调字体。这里要分清楚终端版里 Emacs 不负责渲染字体完全由终端模拟器决定在 Emacs 里改字体对 -nw 模式没有任何作用。所以 SSH 或纯终端环境直接跳过字体设置专心把终端字体调成一个中英文都等宽的即可。图形版才需要设置。最简单的做法是用 M-x set-default-font 试选然后把字体名写进配置;; 写入 init.el等宽字体保证对齐高度单位是 1/10 pt (add-to-list default-frame-alist (font . DejaVu Sans Mono-12)) (set-face-attribute default nil :height 120)编码混乱是另一个入口。文件是 GBK 编码而 Emacs 默认按 UTF-8 解常见表现是中文整行变成“锟斤拷”“口口口”。解决办法是 M-x revert-buffer-with-coding-system再选 utf-8 或 gbk不要反复重新打开文件。想看当前 buffer 到底被识别成什么编码用 M-x describe-coding-system。这个信息对处理从 Windows 拷过来的配置文件特别有用。4.4 初版键位表先学五个组合键别学全部网上流传各种 Emacs 键位大全看得人直接放弃。我的建议是第一天只记五个并且理解每个动作的含义而不是背字母按键动作一句话说明C-x C-f打开/新建文件find-file文件不存在就新建C-x C-s保存save-buffer保存当前 bufferC-x C-c退出 Emacs有未保存修改时会逐一询问C-g取消当前命令卡在 minibuffer 时按它回到普通状态C-x C-b切换 buffer列出所有打开的文件方向键选择这五个键的顺序就是我的日常循环打开、修改、保存、切换、退出。在此基础上加一个 C-/ 撤销基本能正常工作。非要追根溯源按 C-h t 打开内置教程光标移动、删除、搜索都会讲完比任何速查表都完整。先别着急学 C-M- 这类三键组合功能再强也架不住一边翻表格一边按错。使用原则是先让保存和取消变成肌肉记忆其他键位留给需求驱动用到再查。这套最小配置做完你的 Emacs 已经具备日常编辑、备份、中文显示的基本能力。下一章是我在不同发行版上实际翻过的车每条都按现象到解决讲遇到类似情况可以直接对号入座。5. Emacs 安装与使用避坑指南五条实测翻车记录5.1 装的是终端版却在图形环境里被 X 相关报错困扰现象在一台有桌面的 Ubuntu 上执行 emacs刚启动就出现和 GTK/X11 相关的报错或者弹不出窗口只在终端里输出一段警告反过来在服务器上用 emacs -nw 反而一切正常。原因包选型与实际启动模式错位。桌面机装的是带图形支持的 emacs而当前登录会话没拿到 DISPLAY 环境变量或者远程会话里没有 X 转发条件图形前端尝试连接 X server 失败表现就是卡顿和警告。终端版 emacs-nox 没有这条依赖链所以更省事。解决判断环境再选启动方式。要图形界面就确认 DISPLAY 变量存在且当前是桌面会话只在终端里干活就统一用 emacs -nw 强制终端模式在无桌面服务器上更是一开始就装 emacs-nox。排查成本很低先执行 echo $DISPLAY空值就别指望图形界面。5.2 apt/dnf 提示找不到包源没更新或 EPEL 没启用现象执行 sudo apt install emacs-nox 后提示 Unable to locate package在 Rocky Linux 上 dnf install 也提示找不到匹配的包。原因多数情况不是拼写错误而是软件源索引里根本没有这个包。Debian 系可能是换了新源或新装系统还没执行过 apt updateRHEL 系则大概率是默认源太干净需要第三方仓库 EPEL 把包补进来。解决Debian 系先跑 sudo apt update 再装RHEL 系先启用 EPEL再重试安装命令。装完用 apt-cache policy emacs-nox 或 dnf list available emacs-nox 确认包真的出现在候选列表里避免反复“换源、失败、再换源”的循环。5.3 中文全部变成问号或数字locale 三变量不一致现象在 SSH 终端里打开 UTF-8 编码的中文文档Emacs 里显示的是一堆 ?或者每个汉字变成 \xxx 形式的八进制转义序列。原因locale 没设对。LANG 被显式设成 C/POSIX或者 LC_ALL 覆盖了 LANG 的 UTF-8 设置Emacs 默认按单字节处理文件内容遇到多字节编码自然乱。解决先跑 locale 看全量输出确认 LC_CTYPE 是不是 UTF-8不是就 export LANGzh_CN.UTF-8 LC_ALLzh_CN.UTF-8重启终端再进 Emacs。如果文件本身是 GBK用 4.3 里的 revert-buffer-with-coding-system 切编码而不是改 locale。改系统级配置后记得重新登录会话只在 Emacs 里 export 不持久。5.4 启动秒报 Invalid read syntaxinit.el 的括号和引号写坏了现象Emacs 启动后还没来得及显示界面就弹出 “Invalid read syntax” 或 “End of file during parsing”启动流程中断退回命令行。原因init.el 本质是 Lisp 代码括号不配对、字符串引号没闭合都会让读取器在解析阶段崩溃。新手最常见的是复制网上配置时漏了一个右括号或在中文字符串里混入全角引号。解决用批处理模式加载定位错误这是最快的后悔药emacs --batch -l ~/.emacs.d/init.el报错信息会指出第几行附近语法有问题。如果一时看不出哪里错直接把配置备份后禁用mv ~/.emacs.d/init.el ~/.emacs.d/init.el.bakEmacs 会恢复默认配置启动再逐段合并回去每合并一次重复一遍批处理检查。千万不要在 init.el 里用大段 comment 掉代码括号层级会被注释打乱看起来没改错其实错得更隐蔽。5.5 升级系统后 Emacs 启动即崩动态库版本错位现象某次 apt upgrade 或 dnf update 之后执行 emacs 直接报 symbol lookup error、GLIBC_xxx not found 一类错误二进制还在但根本跑不起来源码编译的版本更容易遇到。原因发行版升级把底层动态库如 ncurses、gnutls、libgcc换成了新版本旧版 Emacs 二进制里记录的符号版本找不到对应实现源码编译版则可能链接了升级前遗留的旧库路径。解决发行版仓库装的包最简单重新执行一次安装命令包管理器会把二进制更新到与当前库匹配的版本源码编译版需要重新 configure 和 make install或者干脆这次改回仓库版。这个现象让我养成了一个习惯源码编译前先把 configure 参数记录到文件里升级系统后照着参数重跑一遍能少踩一半坑。6. 一个顺手配置的例子与验证习惯从零写出第一份 init.el到了这里安装、验证、避坑都过了一遍最后给一份我日常起步用的配置骨架。它不追求功能全面只求打开后能安心做编辑和记笔记(setq inhibit-startup-message t) (global-display-line-numbers-mode 1) (setq backup-directory-alist ((. . ~/.emacs.d/backups))) ;; 默认文本模式别把无扩展名的文件当成 fundamental-mode (setq default-major-mode text-mode) (global-set-key (kbd C-x C-b) ibuffer) ; 用 ibuffer 替换默认 buffer 列表 ;; 最近打开文件列表省去每次手敲完整路径 (require recentf) (recentf-mode 1) (setq recentf-max-saved-items 50)写完后养成一个验证习惯每次改动配置先在命令行跑一遍emacs --batch -l ~/.emacs.d/init.el确认没有 error 再进交互界面。这个习惯帮我避免了无数次“启动后白屏、只能 kill 进程”的尴尬。这套配置跑通后建议你再做一次第 3.4 节的三分钟验证确认从命令行启动到打开文件都没有报错。后续要学操作时C-h t 和 C-h k 是最直接的文档入口前者讲基础操作后者告诉你某个组合键背后调用的函数名把查文档当成日常习惯比任何键位速查表都可靠。我自己的翻车教训是早期总觉得配置文件越全越好从网上抄了二三十个 setq 和 require结果每次升级系统都要花一晚上修依赖。后来改成“配置跟着需求走”多一个功能就多一行配置并写上注释半年下来反而顺畅。希望帮到你。本文还有配套的精品资源点击获取
返回列表