我现在使用关闭了可视行模式的 Emacs 23 进行文本编辑,但出于习惯一直按 M-q (因此添加了硬包装行结尾......)。我想知道是否有一种方法可以添加一个条件来禁用填充段落(或删除与 M-q 的绑定(bind)),以用于打开视觉线模式的模式,但为那些我仍在的模式重新启用它使用自动填充模式?谢谢!
最佳答案
(defun maybe-fill-paragraph (&optional justify region)
"Fill paragraph at or after point (see `fill-paragraph').
Does nothing if `visual-line-mode' is on."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'full) t)))
(or visual-line-mode
(fill-paragraph justify region)))
;; Replace M-q with new binding:
(global-set-key "\M-q" 'maybe-fill-paragraph)
而不是使用
global-set-key
,也可以重新绑定(bind)M-q
仅在特定模式下。 (或者,您可以更改全局绑定(bind),然后在特定模式下将 M-q
绑定(bind)回 fill-paragraph
。)请注意,许多模式是自动加载的,因此在激活模式之前可能不会定义它们的键映射。要设置特定于模式的绑定(bind),我通常使用如下函数:(add-hook 'text-mode-hook
(defun cjm-fix-text-mode ()
(define-key text-mode-map "\M-q" 'maybe-fill-paragraph)
(remove-hook 'text-mode-hook 'cjm-fix-text-mode)))
(
remove-hook
不是绝对必要的,但该函数只需要运行一次。)
关于emacs:视觉线模式和填充段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416171/