Linux 常用命令学习笔记(高级篇):正则表达式与 Vim / Emacs 编辑器 在Linux 常用命令学习笔记进阶篇里我们已经把grep、cut、sort、uniq、tr这些文本处理三板斧摸了一遍。但你有没有发现——进阶篇的grep那节末尾我悄悄埋了个伏笔正则表达式里.匹配任意字符$表示行尾。没错grep之所以这么猛是因为它背后站着一整套模式匹配语言正则表达式regex。本篇就是进阶篇的延伸干两件事把正则表达式讲透——让你看懂grep ^by、grep s[ae]lls这些写法到底在匹配什么请出两把编辑神器——Vim 和 Emacs它们不只是编辑器更是你直接在终端里「改文件、读代码」的终极武器。学完这一篇文本处理这条线基础命令 → 进阶 I/O 与文本工具 → 高级正则与编辑器就彻底打通了。建议配合进阶篇一起读每个命令自己敲一遍。前情回顾本篇要「接」上哪些旧工具进阶篇学过的本篇怎么接上它grep按内容搜文本它的匹配规则就是正则表达式本篇把.^$[]这些符号一次讲清|管道配合grep正则能做出「先过滤、再过滤」的复杂流水线如ls | grep -E conf$cat/less/head/tail这些只能「看」文件本篇的 Vim/Emacs 让你能「看 改」而且不用离开终端tr/sort/uniq它们做的是「整行 / 整字符」的简单变换正则让匹配可以精确到「行首、行尾、某个字符集」记住一个核心心法进阶篇的文本工具是「批量处理流水线」本篇的正则与编辑器是「精确手术刀」——前者吞吐量大后者控制力强。两者配合才是完整的文本处理能力。一、正则表达式 regex让匹配变聪明正则表达式regex是一种基于模式选文本的强大工具用一些特殊符号描述「我要找什么样的字符串」。它几乎在所有编程语言、以及我们进阶篇学过的grep里通用。下面用这段例子来进行介绍sally sells seashells by the seashore1.1 锚定行首^脱字符^匹配行的开头保证模式只出现在起始位置。grep ^by demo.txt # 匹配 by the seashore 这一行以 by 开头 # 不会匹配 sally sells seashells那行不以 by 开头1.2 锚定行尾$美元符$匹配行的结尾是^的对应物。grep seashore$ demo.txt # 匹配 by the seashore以 seashore 结尾进阶篇提过.匹配任意字符而\.才匹配真正的小数点。现在加上^$你就能精确框定「一整行必须是什么样的」。1.3 匹配任意单个字符.句点.是个通配符匹配任意一个字符。grep b. demo.txt # 在我们的例子里会匹配 byb 后面跟任意字符 y1.4 字符集[]、[^]与范围方括号[]指定「从这一组字符里挑一个」比.更可控。grep s[ae]lls demo.txt # 匹配 sellss 后接 a 或 e 都行也能匹配 salls方括号内^开头的含义变成「取反」——匹配「除了所列字符之外」的任意字符grep s[^e]lls demo.txt # 匹配 salls但不会匹配 sells方括号还支持范围高效定义大字符集grep d[a-c]g demo.txt # 匹配 dag、dbg、dcg # 注意范围大小写敏感[a-c] 不会匹配 A、B、C正则表达式和进阶篇的文本工具是「黄金搭档」先用正则精准定位行再用sort/uniq/cut进一步加工文本处理流水线才算真正成型。二、文本编辑器Vim 与 Emacs光会用cat/less看文件还不够——你迟早要改文件。Vim 和 Emacs 是 Linux 上最经典的两大编辑器几乎预装在所有发行版上本质是一体化的编码 / 文档处理环境。VimVi 的改进版Vi Improved轻量、无处不在、键盘流操作是程序员和系统管理员的最爱。Emacs极度可扩展你几乎能「住」在里面——编辑、文件管理、甚至写脚本扩展功能学习曲线略陡但上限极高。下面分别上手。三、Vim 入门与模式启动 Vim 很简单vim 以空白缓冲区打开 vim file.txt 打开指定文件不存在则新建保存时创建Vim 的核心是模式。你主要在两种模式间切换普通模式Normal执行命令删除、复制、跳转……打开文件后默认就在这里插入模式Insert输入文字想回到普通模式按Esc。规矩手尽量不离开键盘。Vim 的设计目标就是让你全程用键盘完成所有文本操作。四、Vim 搜索模式在普通模式下Vim 能直接从键盘做快速搜索按键作用/关键词前向搜索跳到光标之后的第一个匹配?关键词后向搜索跳到光标之前的第一个匹配n沿原搜索方向跳到下一个匹配N沿相反方向跳到上一个匹配/pretty 从光标向后找第一个 pretty ?pretty 从光标向前找第一个 pretty n 下一个 N 上一个五、Vim 导航全键盘Vim 里基本不用鼠标移动靠这几个键按键方向h/ ←左移一个字符j/ ↓下移一行k/ ↑上移一行l/ →右移一个字符六、插入与追加从普通模式进入插入模式有多种「起始位置」可选命令作用i在光标前插入a在光标后追加I在当前行开头插入A在当前行末尾追加o在当前行下方开新行并插入O在当前行上方开新行并插入3o 数字前缀在当前行下方一次性打开 3 个空行并进入插入模式记住任何时候按Esc都能退回普通模式再决定下一步操作。七、Vim 编辑运算符 动作Vim 编辑的精髓是公式运算符 动作运算符如d删除作用于一个移动如w一个单词。还能加数字重复比如2dw删两个单词。删除命令作用x删除光标下的字符dw从光标删到下一个单词开头d$从光标删到行尾dd删除整行3dd从当前行起删 3 行更改改完自动进插入模式命令作用cw改从光标到单词末尾c$改从光标到行尾cc改整行复制与粘贴yank / put命令作用yw复制一个单词yy复制整行p粘贴到光标后 / 下方P粘贴到光标前 / 上方其它实用命令命令作用r{字符}用指定字符替换光标下的单个字符R进入替换模式持续覆盖文字直到Esc原地覆盖不挤字J把当前行与下一行合并.重复上一次更改极高效的命令d} 删除到下一个段落 caw 更改光标下的整个单词含周围空格八、Vim 保存与退出保存 / 退出都在命令行模式下按:进入。命令作用:w保存写入磁盘不退出:q退出仅在无未保存改动时有效:q!强制退出并丢弃所有未保存改动:wq保存并退出二合一ZZ等同:wq的快捷键改了才存u撤销上一次操作Ctrl-r重做恢复被撤销的操作:w 存盘 :q! 不保存强行退出 :wq 保存并退出 ZZ 等价 :wq新手最常卡在「怎么退出 Vim」——记住:wq存退、Esc回普通模式就够用了。九、Emacs 初识Emacs 适合想要「极度可扩展编辑器」的人——你基本可以住在里面完成所有编辑与文件操作。它启动稍慢、学习曲线比 Vim 略陡但扩展能力惊人你甚至能为它写脚本。如果没装先安装注意别装emacs-nox那是纯终端版、没有图形界面sudo apt update sudo apt install emacs -y # 完整版带图形界面两种启动方式emacs # GUI 图形窗口WSLg 下弹出独立窗口 emacs -nw # -nw在终端内运行不弹窗Emacs 里的buffer缓冲区是你的文本工作区打开文件内容就载入缓冲区也可以有不对应文件的缓冲区如*scratch*。十、Emacs 文件与缓冲区操作Emacs 文档里常见C-x即Ctrlx、M-x即AltxMeta 键多为Alt这样的简写。保存与打开按键作用C-x C-s保存文件C-x C-w另存为C-x s保存全部C-x C-f打开文件缓冲区导航与窗口按键作用C-x b按名称切换到另一个缓冲区C-x →/C-x ←循环到下一个 / 上一个缓冲区C-x 2垂直拆分当前窗口上下两屏C-x o光标移动到另一个窗口C-x 1关闭其他窗口只留当前一个C-x k关闭终止当前缓冲区用过screen/tmux这类终端多路复用器的同学会觉得这些缓冲区操作似曾相识。十一、Emacs 编辑与退出文本导航按键作用C-↑/C-↓上 / 下移动一个段落C-←/C-→左 / 右移动一个单词M-跳到缓冲区末尾剪切与粘贴kill / yankEmacs 里「剪切」叫 killing「粘贴」叫 yanking。先选区域把光标移到开头按C-space设标记mark再移动光标到结尾中间区域即被选中。按键作用C-space设置标记开始选择C-w剪切选中区域C-y粘贴上次剪切的内容退出与帮助按键作用C-x C-c退出 Emacs有未保存缓冲会先问你C-h C-h打开帮助菜单C-x u撤销C-x C-c 退出 C-h C-h 迷糊了看帮助 C-x u 撤销Emacs 部件更多所以学习曲线略陡作为交换你得到了一个极其强大的可扩展编辑器。小结这一篇我们把「文本处理」这条线推到了深水区正则表达式^行首、$行尾、.任意字符、[]字符集与取反、范围——这正是进阶篇grep能精准搜文本的底层逻辑Vim普通 / 插入双模式hjkl导航i/a/I/A/o/O插入d/c/y/p运算符 动作:wq/ZZ保存退出u/Ctrl-r撤销重做Emacs缓冲区与窗口管理C-x系列文件操作C-spaceC-w/C-y选区剪切粘贴C-x C-c退出。如果在练手时想有个能随手敲命令的环境基础篇和进阶篇都推荐过的Linux Journeyhttps://labex.io/linuxjourney同样适合本篇网页里就能实操 Vim、练正则边学边练印象最深。 Linux 学习系列 · 全部文章Linux 常用命令学习笔记基础篇基础命令Linux 常用命令学习笔记进阶篇I/O重定向和文本处理Linux 常用命令学习笔记高级篇正则表达式与 Vim / Emacs 编辑器习笔记Linux 常用命令学习笔记用户管理篇用户、组与权限的钥匙Linux 常用命令学习笔记权限管理篇看懂 rwx管好每一份文件的生杀大权