How do I change read/write mode for a file using Emacs?

前端 未结 9 1032
悲&欢浪女
悲&欢浪女 2021-01-29 21:11

If a file is set to read only mode, how do I change it to write mode and vice versa from within Emacs?

相关标签:
9条回答
  • 2021-01-29 21:44

    Be sure you're not confusing 'file' with 'buffer'. You can set buffers to read-only and back again with C-x C-q (toggle-read-only). If you have permission to read, but not write, a file, the buffer you get when you visit the file (C-x C-f or find-file) will be put in read-only mode automatically. If you want to change the permissions on a file in the file system, perhaps start with dired on the directory that contains the file. Documentation for dired can be found in info; C-h i (emacs)dired RET.

    0 讨论(0)
  • 2021-01-29 21:45

    M-x toggle-read-only

    or in more recent versions of Emacs

    M-x read-only-mode

    On my Windows box, that amounts to Alt-x to bring up the meta prompt and typing "toggle-read-only" to call the correct elisp function.

    If you are using the default keyboard bindings,

    C-x C-q

    (which you read aloud as "Control-X Control-Q") will have the same effect. Remember, however, given that emacs is essentially infinitely re-configurable, your mileage may vary.

    Following up from the commentary: you should note that the writeable status of the buffer does not change the writeable permission of the file. If you try to write out to a read only file, you'll see a confirmation message. However, if you own the file, you can write out your changes without changing the permissions on the file.

    This is very convenient if you'd like to make a quick change to a file without having to go through the multiple steps of add write permission, write out changes, remove write permission. I tend to forget that last step, leaving potentially critical files open for accidental changes later on.

    0 讨论(0)
  • 2021-01-29 21:48

    What I found is M-x set-file-modes filename mode

    It worked at my Windows Vista box. For example: M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666

    0 讨论(0)
  • 2021-01-29 21:49

    CTRL + X + CTRL + Q     

    0 讨论(0)
  • 2021-01-29 22:01

    I tried out Vebjorn Ljosa's solution, and it turned out that at least in my Emacs (22.3.1) there isn't such function as 'trim-right', which is used for removing an useless newline at the end of chmod output.

    Removing the call to 'trim-right' helped, but made the status row "bounce" because of the extra newline.

    0 讨论(0)
  • 2021-01-29 22:01

    C-x C-q is useless. Because your also need the permission to save a file.

    I use Spacemacs. It gives me a convenient function to solve this question. The code is following.

    (defun spacemacs/sudo-edit (&optional arg)
      (interactive "p")
      (if (or arg (not buffer-file-name))
          (find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: ")))
        (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
    

    I call spacemacs/sudo-edit to open a file in emacs and input my password, I can change the file without read-only mode.

    You can write a new function like spacemacs/sudo-edit.

    0 讨论(0)
提交回复
热议问题