如何使打开的缓冲区只读,而无需再次使用'find-file-read-only'重新加载

时间:2011-03-01 12:10:21

标签: emacs

当我不编辑它时,我喜欢将我的编码缓冲区设置为只读(如Vi模式编辑,只读)。为此,我可以使用C-x C-q打开/关闭可写状态的emacs缓冲区。似乎这个写锁定功能有一些来自RCS的继承或类似的文件锁定/修订系统的方式,因此使用版本控制下的文件不起作用:

C-x C-q
File is under version-control; use C-x v v to check in/out 

我不想办理入住/退房我只想防止“猫打字”。我可以写一个宏触发器find-file-read-only'/'find-file'并给它一些键绑定但我相信在emacs或.el中已经有了一个解决方案。有什么建议吗?

3 个答案:

答案 0 :(得分:8)

您可以改为使用view-mode

答案 1 :(得分:4)

或者你可以挂钩查找文件

(add-hook 'find-file-hook
  '(lambda ()
     (when (and (buffer-file-name)
        (file-exists-p (buffer-file-name))
        (file-writable-p (buffer-file-name)))
       (message "Toggle to read-only for existing file")
       (toggle-read-only 1))))

并使用C-x C-q更改文件的只读状态

答案 2 :(得分:1)

您可以设置file variable,将 buffer-read-only 的值设置为正值。

您需要在文件的前2行设置它。例如,在这里我将它设置为一个python缓冲区:

#!/usr/bin/python
# -*- coding: utf-8 ; buffer-read-only: 1 ; -*-

就像那样,每次打开后都不需要记住手动设置它。