如何修改emacs中当前缓冲区的写权限?

如何修改emacs中当前缓冲区的写权限?

是否可以从 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))

相关内容