仅在非空行

时间:2015-05-20 10:17:54

标签: emacs macros

一般来说,我发现自己写的是短宏,例如:在一行上添加或删除行注释或更正缩进。

然而,在启用空白模式的情况下,我仍然需要注意不要在空行上触发这些宏;如果宏试图删除空行上的字符,通常会弄乱整个文档。

这个问题是否有任何解决办法,不涉及在空白行上留出一些空格,或以其他方式改变我的文件结构?

2 个答案:

答案 0 :(得分:3)

您可以在宏的开头使用C-M-s ^.。也就是说,搜索包含至少一个字符的行。

答案 1 :(得分:1)

扩展legoscia's answer - 这是一个版本,它也会通知是否根本没有上一行:

(defun goto-first-previous-non-empty-line ()
  (interactive)
    (if (re-search-backward "^." nil t)
        (message "First previous non-empty line")
      (message "Beginning of buffer")
      )
    )