如何防止 Emacs 烦人的习惯将当前单词添加到任何命令缓冲区?
Emacs 是一个具有高度可定制性的文本编辑器,具有许多强大的功能,但也容易养成一些不太好的习惯。其中一个常见的问题就是将当前单词添加到任何命令缓冲区。这可能会导致一些不必要的麻烦,例如保存文件时出现错误,或者无法正常执行命令。
要防止 Emacs 将当前单词添加到任何命令缓冲区,您可以使用以下两种方法之一:
使用宏来过滤 Emacs 的输入是防止 Emacs 添加当前单词到命令缓冲区的最简单方法之一。您可以使用以下宏来阻止 Emacs 添加当前单词:
(defmacro prevent-add-to-buffer ()
"Prevent the current word from being added to any command buffer."
`(let ((inhibit-modification-hooks t))
(when (and (not (local-variable-p 'major-mode))
(or (not (boundp 'syntax-after-jump))
(syntax-after-jump)))
(let ((inhibit-modification-hooks t))
(add-to-list 'command-buffer-alist (cons (point-marker) 'no-local-modification))))))
然后,在您使用 M-x
运行任何命令之前,您可以使用以下命令运行该宏:
(progn
(prevent-add-to-buffer)
(execute-command-here))
这将防止任何命令将当前单词添加到命令缓冲区中。
如果您不想使用宏来过滤 Emacs 的输入,您可以使用 Emacs 的宏,将当前单词添加到空白列表中。这可以通过以下宏来实现:
(defmacro add-to-blank-list ()
"Add the current word to a blank list."
`(let ((list ()))
(when (and (not (local-variable-p 'major-mode))
(or (not (boundp 'syntax-after-jump))
(syntax-after-jump)))
(push (point-marker) list))))
然后,在您使用 M-x
运行任何命令之前,您可以使用以下命令运行该宏:
(progn
(add-to-blank-list)
(execute-command-here))
这将向空白列表中添加当前单词,因此任何命令都不会将当前单词添加到命令缓冲区中。
无论使用哪种方法,都可以防止 Emacs 将当前单词添加到任何命令缓冲区中,从而避免一些不必要的麻烦。
领取专属 10元无门槛券
手把手带您无忧上云