5

当我的缓冲区是只读的(是的,我很懒)时,我试图以与“Cn”和“Cp”相同的方式使用键“n”和“p”。

我在我的 .emacs 文件中使用此代码:

(when buffer-read-only (local-set-key "n" 'next-line))
(when buffer-read-only (local-set-key "p" 'previous-line))

当缓冲区自动设置为只读时(即像在 w3m 中一样),这是有效的,但是当我运行 Cx Cq(切换只读)时,它似乎不起作用。它一直在说

Buffer is read-only: #<buffer buffername>

而且我不知道这会如何工作......

4

1 回答 1

6

您的键定义在加载期间进行评估.emacs,而您希望在每次访问只读文件时评估它们,并且每次toggle-read-only执行。此外,每当缓冲区再次变为可读写时,您都希望它们撤消。

view-mode您可以利用 Emacs 已经支持在只读缓冲区中自动激活这一事实,而不是实现所有这些。您需要做的就是启用该功能,并在以下位置定义您的密钥view-mode-map

(setq view-read-only t)     ; enter view-mode for read-only files
(define-key view-mode-map "n" 'next-line)
(define-key view-mode-map "p" 'previous-line)
于 2013-04-02T15:48:28.633 回答