ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

evil-surround 基础用法全攻略:ys、cs、ds 三大环绕命令实战详解

2026/8/17 23:26:04 拓冰建站 浏览量
evil-surround 基础用法全攻略:ys、cs、ds 三大环绕命令实战详解 evil-surround 基础用法全攻略ys、cs、ds 三大环绕命令实战详解【免费下载链接】evil-surroundyou will be surrounded (surround.vim for evil, the extensible vi layer)项目地址: https://gitcode.com/gh_mirrors/ev/evil-surroundevil-surround 是 Emacs 生态中最受欢迎的环绕文本编辑插件它在 Evil 编辑模式下完整模拟了 Vim 的 surround.vim 插件让你仅凭 ys、cs、ds 三个命令就能轻松完成添加环绕、修改环绕、删除环绕。无论你是刚从 Vim 迁移到 Emacs 的新手还是想进一步提升编辑效率的老玩家这篇 evil-surround 基础用法全攻略都能带你快速上手从此告别手动敲括号、敲引号的低效操作。evil-surround 是什么写给新手的快速认知所谓环绕surround就是文本周围的成对符号——双引号、圆括号、花括号、HTML 标签等。传统做法是光标移到开头输入左符号再移到结尾输入右符号来回折腾还要小心配对错误。而 evil-surround 的核心思想只有一个符号是数据不是字符它把你对成对符号的操作抽象成三条命令命令英文全称作用ys 文本对象 符号yank surround添加环绕cs 旧符号 新符号change surround修改环绕ds 符号delete surround删除环绕S 符号可视模式surround region给选中区域加环绕它的源码主体在 evil-surround.el核心命令的实现可以参考 evil-surround-edit 和 evil-surround-region官方使用说明则在 readme.org 中文末还附带了大量实战示例。最快配置方法evil-surround 安装与启用安装 evil-surround 推荐使用use-package搭配 MELPA只需在init.el中添加以下几行Emacs 启动后就会自动安装并全局启用(use-package evil-surround :ensure t :config (global-evil-surround-mode 1))如果你习惯手动管理插件也可以把项目克隆到本地后放入 load-pathgit clone https://gitcode.com/gh_mirrors/ev/evil-surround然后在配置中加入(require evil-surround)和(global-evil-surround-mode 1)即可。小提示如果只想在特定模式下启用比如只在写 Markdown 时开启可以用turn-on-evil-surround-mode挂到对应的 mode hook 上定义见 evil-surround.el。ys 命令实战给文本添加环绕ys的语法是ys文本对象符号它负责添加环绕。下面以光标停在Hello上为例看看常用操作操作输入结果单词加双引号ysiwHelloworld!单词加方括号ysiw][Hello] world!整行加圆括号yssb或yss)(Hello world!)注意两个细节一是iw是 Emacs Evil 的文本对象inner word表示当前单词内部二是yss会作用于整行其中b代表圆括号、B代表花括号这是从 Vim 继承来的速记符号。推荐的环绕符号速查表按键生成的环绕按键生成的环绕((和)带空格)(和)[[和]带空格][和]{{和}带空格}{和}b(和)B{和}和t/读取 HTML 标签cs 命令实战一键修改环绕符号cs的语法是cs旧符号新符号它是三大命令中最省事的一个无需移动光标直接原地替换成对符号。来看官方示例中最经典的一条链路Hello world!光标停在字符串内输入cs把双引号改成单引号Hello world!再输入csq改成自定义 HTML 标签qHello world!/q最后输入cstt代表标签改回双引号Hello world! 从双引号到标签再回到双引号全程光标不动三组按键搞定这就是cs命令的魅力。它不仅能换引号还能给符号加空格比如cs]{会把[Hello]变成{ Hello }。ds 命令实战快速删除环绕符号ds的语法是ds符号负责删除环绕且只删符号、不动内容。继续上面的例子输入dsHello world! → Hello world!删除 HTML 标签同样简单输入dst即可qHello world!/q → Hello world!进阶玩法ds还可以连续叠加。比如先把{ Hello } world!还原成原始文本只需连续输入ds{ds)两步完成这就是为什么熟练用户能把ys、cs、ds组合出撤销式的编辑节奏。可视模式下的 S 与 gS圈选后批量环绕前面三个命令都作用于光标而可视模式Visual Mode下的S和gS则作用于选中区域先按v进入可视模式并选中文本再按S加符号如S给选区加双引号gS则是加强版会在环绕时自动换行适合给多行内容套标签。官方示例按大写V进入行可视模式选中一行后输入Sp classimportant立刻得到p classimportant emHello/em world! /p配合前面的ysiwem先把单词包成斜体标签再整体包一层段落标签写 Markdown 或 HTML 时效率直接翻倍。进阶玩法函数环绕与自定义环绕对除了符号evil-surround 还支持函数环绕在可视模式选中文本后按Sf在 minibuffer 中输入函数名并回车例如输入printHello world! → print(Hello world!)这是由 evil-surround-function 实现的对写代码场景非常实用。如果你经常使用某种特定符号比如 C 里的尖括号、Emacs Lisp 里的反引号还可以通过自定义变量evil-surround-pairs-alist添加自己的环绕对。它的格式是触发字符 左右字符串例如给 C 模式加一对带空格的尖括号(add-hook c-mode-hook (lambda () (push (? . ( . )) evil-surround-pairs-alist)))注意evil-surround-pairs-alist是缓冲区局部变量所以不同语言模式可以配置各自不同的环绕对互不干扰。详细说明可以用C-h v evil-surround-pairs-alist查看。evil-surround 常见问题为什么我按vs不能环绕了这是 Vim 上游 surround.vim 的一次行为变更导致的官方在 FAQ 中给出了说明建议改用可视模式下的S来完成选区环绕。ys和yS、S和gS有什么区别小写s系列不强制换行大写S系列会在大段文本外层自动加上换行更符合代码风格。小结回到开头那句话符号是数据不是字符。evil-surround 用ys、cs、ds三个命令把成对符号变成了可以添加、修改、删除的数据配合文本对象与可视模式几乎覆盖了日常编辑 90% 的环绕需求。对于刚从 Vim 转到 Emacs 的新手装上它就能无缝延续熟悉的操作肌肉记忆对于 Emacs 老用户它同样是提升编辑效率的必备利器。建议你把这篇 evil-surround 基础用法全攻略收藏起来先在 scratch 缓冲区里把ys、cs、ds各练一遍再逐步尝试函数环绕和自定义环绕对很快你也会成为被符号包围却不被符号困扰的高手。【免费下载链接】evil-surroundyou will be surrounded (surround.vim for evil, the extensible vi layer)项目地址: https://gitcode.com/gh_mirrors/ev/evil-surround创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考