首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止emacs烦人的习惯将当前单词添加到任何命令缓冲区?

如何防止 Emacs 烦人的习惯将当前单词添加到任何命令缓冲区?

Emacs 是一个具有高度可定制性的文本编辑器,具有许多强大的功能,但也容易养成一些不太好的习惯。其中一个常见的问题就是将当前单词添加到任何命令缓冲区。这可能会导致一些不必要的麻烦,例如保存文件时出现错误,或者无法正常执行命令。

要防止 Emacs 将当前单词添加到任何命令缓冲区,您可以使用以下两种方法之一:

方法一:使用宏来过滤 Emacs 的输入

使用宏来过滤 Emacs 的输入是防止 Emacs 添加当前单词到命令缓冲区的最简单方法之一。您可以使用以下宏来阻止 Emacs 添加当前单词:

代码语言:txt
复制
(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 运行任何命令之前,您可以使用以下命令运行该宏:

代码语言:txt
复制
(progn
  (prevent-add-to-buffer)
  (execute-command-here))

这将防止任何命令将当前单词添加到命令缓冲区中。

方法二:使用 Emacs 的宏,将当前单词添加到空白列表中

如果您不想使用宏来过滤 Emacs 的输入,您可以使用 Emacs 的宏,将当前单词添加到空白列表中。这可以通过以下宏来实现:

代码语言:txt
复制
(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 运行任何命令之前,您可以使用以下命令运行该宏:

代码语言:txt
复制
(progn
  (add-to-blank-list)
  (execute-command-here))

这将向空白列表中添加当前单词,因此任何命令都不会将当前单词添加到命令缓冲区中。

无论使用哪种方法,都可以防止 Emacs 将当前单词添加到任何命令缓冲区中,从而避免一些不必要的麻烦。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券