以前使用别的编辑器时,删除空行很容易,在emacs里面没有找到,索性自己写了一个。
(defun xxx/delete-empty-line (beg end)
"delete empty lines if selected, otherwise the whole buffer."
(interactive "r")
(let ((empty-line "^[\t ]*$"))
(save-excursion
(if (region-active-p)
(flush-lines empty-line beg end)
(flush-lines empty-line (point-min) (point-max))))))
写的比较简陋,大家给提点意见.
注:[]中包含了TAB和中英文空格。
BTW: 为什么我用4个·还没有代码高亮呢?
3 个赞
不错,没什么问题。Emacs 默认有个 C-x C-o (delete-blank-lines
),但跟你的功能不同。region-active-p
常常用 use-region-p
代替,后者在前者的基础上排除了 Region 为空的情况。
需要写出 GitHub 风格的代码块才能高亮。但是我觉得 Elisp 高亮的效果太过了,直接把 (
后的第一个位置都当作函数名,感觉太不专业了,所以我宁愿完全不用高亮。
缩进是不会高亮的,必须这样:
```elisp
;; comment
(+ 1 2)
```
效果:
;; comment
(+ 1 2)
Chris
8
我一般这样删空行:
M-x flush-lines RET ^\s-*$ RET
1 个赞
谢谢,我之所以这样做,就是因为每次敲正则太麻烦了,不如绑定在一个按键上方便。
1 个赞
Chris
10
可以直接把这套操作变成一个函数,像这样:
(fset 'delete-empty-lines (kbd "M-x flush-lines RET ^\s-*$ RET"))
3 个赞