是否可以从 emacs 内部更改文件的写入权限,而无需终止/重新打开缓冲区?
有时我忘记在打开文件之前修改文件的权限。我可以从 emacs ( ) 内部修改权限M-! chmod u+w filename
,但这不会更新保持写保护状态并拒绝修改文件的缓冲区。
有没有办法更新缓冲区内的权限?如果我可以将其分配给快捷方式,那就加分了!
答案1
更改文件模式后,在进行任何编辑之前,运行M-x revert-buffer
以重新加载文件。如果文件现在可写,则缓冲区将不再是只读的。
或者,键入C-x C-q
( read-only-mode
)。这使得缓冲区不再是只读的。您可以编辑甚至保存,但您会收到确认提示,询问是否要覆盖只读文件。
答案2
要更改缓冲区的只读状态,请使用C-xC-q(toggle read-only-mode
)。要更改文件权限,您可以dired
在文件的目录 ( C-xd) 上运行,搜索文件C-s并使用M来更改其模式。
答案3
如果工作流程需要重复更改缓冲区的文件权限,那么拥有自定义函数会有所帮助,如下所示。
这仅适用于 unix 机器(执行系统命令“chmod”
(defun chmod-plus-w ()
(interactive)
(shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
(revert-buffer))