这几周在学习Emacs Lisp编写Emacs本身的脚本,刚刚开始有点小吃力。自己对于Emacs的时候还不是太熟悉,而且Emacs Lisp的文档编辑稍微有点不太习惯,查找函数有点不太方便。
分享一下自己写好了的两个Elisp函数,把下面的语句放在.emacs文件里面可以实现Vim里面{键和}键,也就是跳转到上一个和下一个空行的功能。
(defun last-blank-block ()
(interactive)
(search-backward-regexp "^[ \t]*[^ \t\n]+.*\n\\([ \t]*\n\\)+"
(point-min)
1)
(next-line))
(defun next-blank-block ()
(interactive)
(search-forward-regexp "\\(\n[ \t]*\\)+\n[ \t]*[^ \t\n]+"
(point-max)
1)
(move-beginning-of-line 0))
(global-set-key (kbd "C-{") 'last-blank-block)
(global-set-key (kbd "C-}") 'next-blank-block)
上面比较关键的last-blank-block和next-blank-block里面的正则表达式的定义。还有next-blank-line里面的参数,如果不是nil和1的时候,表示先向下移动arg - 1行,然后再移动到行首。
实际上,这个功能可以用M-{和M-}来实现。