如何在Emacs中删除所有包含#+NAME:模式的行
批量删除Org Mode代码块#+NAME:行的方案
注意:操作前请先备份你的org文件,避免误操作导致内容丢失
方案1:命令行批量处理文件(适用于Linux/macOS)
直接匹配所有行首为#+NAME:的行并删除,单文件处理命令:# Linux 环境直接修改原文件 sed -i '/^#\+NAME:/d' 目标文件.org # macOS 环境需加空后缀参数 sed -i '' '/^#\+NAME:/d' 目标文件.org批量处理当前目录下所有org文件的命令:
# Linux sed -i '/^#\+NAME:/d' *.org # macOS sed -i '' '/^#\+NAME:/d' *.org方案2:Emacs内处理当前打开的Org文件
按快捷键M-x,输入replace-regexp回车,查找规则填^#\+NAME:.*\n,替换内容留空直接回车,即可删除当前文件内所有#+NAME:开头的行,修改完成后保存即可。方案3:精准仅删除代码块上方的NAME行(避免误删表格、图片等其他元素的NAME配置)
如果你需要保留非代码块的NAME配置,可用精准匹配的sed命令:# Linux sed -i '/^#\+NAME:/{n;/^#\+begin_src/{x;d;};x;}' 目标文件.org # macOS sed -i '' '/^#\+NAME:/{n;/^#\+begin_src/{x;d;};x;}' 目标文件.org该命令会先校验NAME行的下一行是否为代码块开头,仅删除代码块上方的NAME行。
内容的提问来源于stack exchange,提问作者BuddhiLW
相关产品推荐
相关产品推荐

