Если файл установлен в режим только для чтения, как мне изменить его в режим записи и наоборот из Emacs?
Если файл установлен в режим только для чтения, как мне изменить его в режим записи и наоборот из Emacs?
Mx toggle-read-only
или в более поздних версиях Emacs
Mx-режим только для чтения
В моем окне Windows это равносильно нажатию Alt-x для вызова мета-приглашения и вводу «toggle-read-only» для вызова правильной функции elisp.
Если вы используете привязки клавиатуры по умолчанию,
Cx Cq
(который вы читаете вслух как «Control-X Control-Q») будет иметь такой же эффект. Помните, однако, что, учитывая, что emacs, по сути, можно бесконечно перенастраивать, ваш пробег может отличаться.
Продолжая комментарий: вы должны отметить, что доступный для записи статус буфера не изменяет права записи для файла. Если вы попытаетесь записать в файл только для чтения , вы увидите подтверждающее сообщение. Однако, если вы являетесь владельцем файла, вы можете записать свои изменения, не меняя права доступа к файлу.
Это очень удобно, если вы хотите быстро внести изменения в файл, не выполняя несколько шагов, таких как добавление разрешения на запись, запись изменений и удаление разрешения на запись. Я часто забываю этот последний шаг, оставляя потенциально важные файлы открытыми для случайных изменений в дальнейшем.
toggle-read-only
переключает только состояние только для чтения буфера, а не файла. Если вы хотите изменить режим файла, используйтеdired
или выполнитеchmod +w
как команду оболочки для файла.Убедитесь, что вы не путаете «файл» с «буфером». Вы можете установить буферы только для чтения и обратно с помощью
C-x C-q
(toggle-read-only
). Если у вас есть разрешение на чтение, но не на запись файла, буфер, который вы получаете при посещении файла (C-x C-f
илиfind-file
), будет автоматически переведен в режим только для чтения. Если вы хотите изменить разрешения для файла в файловой системе, возможно, начните сdired
каталога, в котором находится файл. Документацию по dired можно найти в info;C-h i (emacs)dired RET
,источник
inc
, Научите человека ловить рыбу ...Я нашел
M-x set-file-modes filename mode
Это работало на моем компьютере с Windows Vista. Например:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
источник
(set-file-modes FILE 438)
(где 438 - десятичный эквивалент2#0110110110
или666
).Как упоминалось там кем-то другим: Mx toggle-read-only будет работать.
Однако теперь это устарело, и текущий способ сделать это - режим Mx только для чтения , для которого установлено связывание клавиш Cx Cq.
источник
CTRL + X + CTRL + Q
источник
Если только буфер (а не файл) доступен только для чтения, вы можете использовать
toggle-read-only
, что обычно связано сC-x C-q
.Однако, если сам файл доступен только для чтения, вам может пригодиться следующая функция:
Функция зависит от
unix-output
иtrim-right
:Поместите функции в свой
~/.emacs.el
, оцените их (или перезапустите emacs). Затем вы можете сделать файл в текущем буфере доступным для записи с помощьюM-x set-buffer-file-writable
.источник
set-buffer
внеsave-excursion
.subseq
наsubstring
сейчас. Это должно избежать предупреждения.Если вы просматриваете каталог файлов (dired), вы можете использовать
Shift + M
для имени файла и ввестиmodespec
те же атрибуты, что и вchmod
команде.M modespec <RET>
См. Другие полезные команды для файлов в списке каталогов на http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
источник
Я опробовал решение Вебьорна Лйосы, и оказалось, что по крайней мере в моем Emacs (22.3.1) нет такой функции, как 'trim-right', которая используется для удаления бесполезной новой строки в конце вывода chmod.
Удаление вызова 'trim-right' помогло, но сделало строку состояния "подпрыгивающей" из-за дополнительной новой строки.
источник
C-x C-q
бесполезно. Потому что вам также нужно разрешение на сохранение файла.Использую Spacemacs . Это дает мне удобную функцию для решения этого вопроса. Код следующий.
Я призываю
spacemacs/sudo-edit
открыть файл в emacs и ввести свой пароль, я могу изменить файл без режима только для чтения.Вы можете написать новую функцию, например
spacemacs/sudo-edit
.источник