在路由器刷OpenWrt、写自定义iptables规则、调试dnsmasq配置时,你用什么编辑器?有人用nano凑合,有人开VS Code连SSH,还有人——就爱在终端里敲emacs。
不是IDE,胜似IDE的终端原生感
Emacs跑在SSH里不卡,哪怕你在树莓派4上改/etc/config/firewall,它响应比图形界面编辑器还快。不用等加载、不占桌面资源,Ctrl+x Ctrl+f一按,直接打开远程文件;Ctrl+x Ctrl+s回车,保存即生效。配个tramp,连root@192.168.1.1:/etc/config/dhcp都能当本地文件操作。
写Shell和Lua,补全和跳转真顺手
OpenWrt脚本多是Shell或Lua,Emacs默认就带sh-mode和lua-mode。写for循环时Tab自动补全变量名,把光标停在uci set dhcp.@dnsmasq[0].noresolv='1'里的dhcp上,Alt+. 一键跳到uci命令定义处(装了elisp包后)。再比如改防火墙规则,写到iptables -t nat -A PREROUTING,company-mode会弹出常用链名和参数提示。
一个真实场景:批量改DNS转发
某天发现所有设备DNS被劫持,要快速把/etc/config/dhcp里所有list server改成国内干净DNS。Emacs里Ctrl+H P调出正则替换:
\(list server\) \([^\n]+\)替换成:
\1 '223.5.5.5 119.29.29.29'一次选中全部匹配项,回车确认——三秒搞定二十台设备的配置模板。
插件不多,但每个多半能救命
不用装几十个插件。就三个实用的:
- magit:同步你写的openwrt-config仓库,commit前看diff清清楚楚;
- flycheck:写shell脚本时实时标红fi漏写或引号不闭合;
- which-key:按下Ctrl+c后悬停两秒,自动显示下面能接哪些组合键,再也不用翻cheatsheet。
Emacs写代码怎么样?它不炫酷,但像一把磨钝了刃却越用越称手的螺丝刀——修路由、调QoS、撸内核模块,你不需要它多聪明,只要它不掉链子、不抢焦点、不弹更新提醒。深夜改完iptables-save,Ctrl+x Ctrl+c退出,终端干干净净,连句废话都没有。