帮你精通Emacs:两枚核弹级的应用及求问英雄帖

系统
多年以后,面对台下五彩斑斓的Jetbrain和Vscode用户,这位曾经的资深的vim追随者将会回想起在本论坛里见识Emacs核弹级应用的这个遥远的下午(北京时间)。

[[388577]]

 多年以后,面对台下五彩斑斓的Jetbrain和Vscode用户,这位曾经的资深的vim追随者将会回想起在本论坛里见识Emacs核弹级应用的这个遥远的下午(北京时间)。

一、第一枚核弹

几个月前读到下面的帖子,内心的激荡似乎至今余波未平。

  • counsel-rg 出结果之后,按 C-c C-o 进入 ivy-occur,然后按 w 进入编辑模式,然后 M-x % 批量替换,然后 C-x C-s 保存。
  • 这是大招。被称为核武器级别的技巧(
  • https://sam217pa.github.io/2016/09/11/nuclear-power-editing-via-ivy-and-ag/)。值得深入钻研。可以见 https://blog.binchen.org/posts/emacs-is-easy-if-you-read-code.html 研究相关的occur的技术。

冲破当时思维藩篱的有三点:

第一点: counsel-rg 搜索结果的mini-buffer,不能全屏展示。


在 mini-buffer 中 按键 C-0 1,什么都不会发生,这个痛点困扰许久。不曾想,ivy-occur轻松解决。按键 C-c C-o 之后,mini-buffer立刻悬停住,当时停在下面的界面中,端玩了好久。

这是一种怎样的体验呢?你想象一下“大闹天宫”中的蟠桃园,孙悟空朝着前来采摘蟠桃的七仙女,口揭咒语,念一声“定!”,接着这只没教养的野猴子飞身上去,将这七位神仙姐姐挨个挨个,仔仔细细瞧得个清楚,看得个明白。

然后,便可以 C-0 1 全屏。


image961×721 189 KB

第二点:竟然能对搜索结果二次编辑,在mini-buffer窗口中按键 w h或者 C-x C-q 调用

ivy-wgrep-change-to-wgrep-mode,能够直接对结果作修改。


以我有限的认知,感觉似乎一道闪电劈下,无机的机械体与有机的生命体之间的界限彻底打破,上一回类似的感受还是在dired中用这个模式的那一刻。

  • 项目 步步为营,零秒精通Emacs 的第三章“03.God’
  • s-Eyes-and-Hands-by-Dired-and-Bookmarks” 宕延半年多,迟迟写出来。因为始终没有思路,怎样写好司空见惯简单,而往往不见其革命性突破的Dired。 我希望别人从这篇文章的视角审视dired的时候,会第一时间发出“哇!”的一声。就如每时每刻的呼吸,在幼儿园的某一天,我们突然知道“哇,原来空气存在”。 Take everything for granted 的朋友请务必忍耐不要留言。 亘古以来,有机世界与无机世界之间有一道无法跨越的鸿沟。上帝吹入生命而成有机,而矿物则是没有“活力”的无机物。因此,无机物与有机物毫不相干,无机物只能制造无机物,似乎正如石头原料只能制造出更加精美的石头,却万万不能生产出“天价猪肉”。 然而,公元1828年,上帝改变了主意,人类跨越天堑。 1.跨越鸿沟

第三点,在编辑模式下,执行 replace-regex替换。


搜索出来的结果立即完成替换。这一点,平淡无奇,常见常用,我可能就此复制粘帖出来,用在别处。

神奇的是,当 C-c C-c 保存之后,所有源文件中的关键词同时被修改好。

这一点震撼,就如我从上海黄浦江口,舀了一瓢水喝,哪曾想,竟然影响到万里之外宁夏的三江源地区干涸了。

以上三点,就是个人对multi-editing这项核弹级应用,彼时彼刻的直觉感受。

这一项能在对Emacs传道布教的时候用到,一拿出手,核弹之下,灰飞烟灭,焦土不存。

二、第二枚核弹

前两天读到另外的帖子,简单的设置时候就能从wsl2-gui-emacs打开原生的windows程序。

  1. # 先设置 ~/.zshrc 
  2. # fix interop 
  3. fix_wsl2_interop() { 
  4.     for i in $(pstree -np -s $ | grep -o -E '[0-9]+'); do 
  5.         if [[ -e "/run/WSL/${i}_interop" ]]; then 
  6.             export WSL_INTEROP=/run/WSL/${i}_interop 
  7.         fi 
  8.     done 
  9.  
  10. ~/.emacs.d/bin/doom env > /dev/null 2>&1 
  11.  
  12. # 然后定义自动打开的函数 
  13. # autoload 
  14.  
  15. (defmacro wsl--open-with (id &optional app dir) 
  16.   (defun (intern (format "wsl/%s" id)) () 
  17.      (interactive) 
  18.      (wsl-open-with ,app ,dir))) 
  19.  
  20. (defun wsl-open-with (&optional app-name path) 
  21.   "Send PATH to APP-NAME on WSL." 
  22.   (interactive) 
  23.   (let* ((path (expand-file-name 
  24.                 (replace-regexp-in-string 
  25.                  "'" "\\'" 
  26.                  (or path (if (derived-mode-p 'dired-mode) 
  27.                               (dired-get-file-for-visit) 
  28.                             (buffer-file-name))) 
  29.                  nil t))) 
  30.          (command (format "%s `wslpath -w %s`" (shell-quote-argument app-name) path))) 
  31.     (shell-command-to-string command))) 
  32.  
  33. (wsl--open-with open-in-default-program "explorer.exe" buffer-file-name) 
  34. (wsl--open-with reveal-in-explorer "explorer.exe" default-directory) 

 这项配置对我的核弹轰炸余波,现在还嗡嗡作响。

三、求更多核弹轰炸

基于以上两枚核弹,请教诸位,您觉得,您正在用的 emacs 功能,哪些是核弹级别的呢?

只要你自己觉得就行,哪怕 1+1 =2,简要说明下理由,咱也感激不尽。

这些收集起来的核弹,日后就是我们布道Emacs的弹药库。

另外,感谢捧场,Master-Emacs这个小小的repo眼看着要破200stars了。

  1. https://github.com/AbstProcDo/Master-Emacs-From-Scratch-with-Solid-Procedures 

 【编辑推荐】

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-04-01 10:16:01

EmacsJavaScript elisp

2021-03-26 07:51:51

Emacs应用buffer

2021-03-29 08:14:49

Emacs应用配置日程

2019-06-06 11:26:59

联通大数据

2011-07-07 14:48:41

易观开发者英雄会开发者英雄会

2021-01-13 11:25:12

JavaScript闭包函数

2017-08-16 10:46:24

东方金信

2020-12-21 10:55:41

Linux系统ls命令

2017-11-07 07:37:08

2021-04-08 09:14:24

js前端函数

2021-12-13 01:49:34

漏洞Log4j代码

2022-04-29 21:37:34

漏洞网络安全网络攻击

2015-08-21 16:46:22

2020-12-17 08:14:30

Linuxrsync备份

2021-04-07 08:03:51

js举起Hoisting初始化

2015-10-22 10:26:21

更新Build 10565Windows 10

2021-12-11 19:04:38

漏洞

2017-05-24 15:03:52

NAS存储网络

2021-03-14 08:12:02

函数JavaScript语言

2021-03-12 08:21:54

JavaScript 前端原生js
点赞
收藏

51CTO技术栈公众号