缓冲区为只读时定义键

时间:2013-04-02 15:39:49

标签: emacs dot-emacs

当我的缓冲区是只读的时候,我试图使用“n”和“p”键与“C-n”和“C-p”相同(是的,我很懒)。

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

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

当缓冲区自动设置为只读时(即在w3m内),但是当我运行C-x C-q(toggle-read-only)时它似乎不起作用。它一直在说

Buffer is read-only: #<buffer buffername>

我不知道这可能会如何起作用......

1 个答案:

答案 0 :(得分:6)

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

您可以利用Emacs已支持在只读缓冲区中自动激活view-mode这一事实,而不是实现所有这些功能。您需要做的就是启用该功能,并在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)