Jeśli plik jest ustawiony w trybie tylko do odczytu, jak zmienić go na tryb zapisu i odwrotnie z poziomu Emacsa?
źródło
Jeśli plik jest ustawiony w trybie tylko do odczytu, jak zmienić go na tryb zapisu i odwrotnie z poziomu Emacsa?
MX przełączanie tylko do odczytu
lub w nowszych wersjach Emacsa
Tryb tylko do odczytu Mx
W moim Windowsie oznacza to Alt-x, aby wywołać znak zachęty meta i wpisanie „toggle-read-only”, aby wywołać poprawną funkcję elisp.
Jeśli używasz domyślnych powiązań klawiatury,
Cx Cq
(co czytasz na głos jako „Control-X Control-Q”) da ten sam efekt. Pamiętaj jednak, że biorąc pod uwagę, że emacs jest zasadniczo konfigurowalny w nieskończoność, Twój przebieg może się różnić.
W związku z komentarzem: należy zauważyć, że stan bufora do zapisu nie zmienia prawa zapisu pliku. Jeśli spróbujesz napisać do pliku tylko do odczytu , zobaczysz komunikat z potwierdzeniem. Jeśli jednak jesteś właścicielem pliku, możesz zapisać swoje zmiany bez zmiany uprawnień do pliku.
Jest to bardzo wygodne, jeśli chcesz dokonać szybkiej zmiany w pliku bez konieczności przechodzenia przez wiele kroków dodawania uprawnień do zapisu, wypisywania zmian, usuwania uprawnień do zapisu. Zwykle zapominam o tym ostatnim kroku, pozostawiając później potencjalnie krytyczne pliki otwarte na przypadkowe zmiany.
toggle-read-only
tylko przełącza stan bufora tylko do odczytu, a nie pliku. Jeśli chcesz zmienić tryb pliku, użyjdired
lub wykonajchmod +w
jako polecenie powłoki na pliku.Upewnij się, że nie mylisz „pliku” z „buforem”. Możesz ustawić bufory na tylko do odczytu i z powrotem za pomocą
C-x C-q
(toggle-read-only
). Jeśli masz uprawnienia do odczytu, ale nie do zapisu pliku, bufor, który otrzymasz, gdy odwiedzasz plik (C-x C-f
lubfind-file
), zostanie automatycznie przełączony w tryb tylko do odczytu. Jeśli chcesz zmienić uprawnienia do pliku w systemie plików, być może zacznijdired
od katalogu zawierającego plik. Dokumentację do dired można znaleźć w info;C-h i (emacs)dired RET
.źródło
inc
. Naucz człowieka łowić ryby ...To, co znalazłem, to
M-x set-file-modes filename mode
To działało na moim pudełku z Windows Vista. Na przykład:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
źródło
(set-file-modes FILE 438)
(gdzie 438 jest dziesiętnym odpowiednikiem2#0110110110
lub666
).Jak wspomniano tam przez kogoś innego: Mx toggle-read-only będzie działać.
Jednak jest to obecnie przestarzałe, a tryb Mx tylko do odczytu jest aktualnym sposobem na to, że jest ustawiony na Cx Cq keybinding.
źródło
CTRL + X + CTRL + Q
źródło
Jeśli tylko bufor (a nie plik) jest tylko do odczytu, możesz użyć
toggle-read-only
, który zwykle jest powiązany zC-x C-q
.Jeśli jednak sam plik jest tylko do odczytu, przydatna może być następująca funkcja:
Funkcja zależy od
unix-output
itrim-right
:Umieść funkcje w swoim
~/.emacs.el
, oceń je (lub zrestartuj emacsa). Następnie możesz udostępnić plik w bieżącym buforze do zapisu za pomocąM-x set-buffer-file-writable
.źródło
set-buffer
zewnętrzny pliksave-excursion
.subseq
gosubstring
teraz. To powinno uniknąć ostrzeżenia.Jeśli patrzysz na katalog plików (dired), możesz użyć
Shift + M
na nazwie pliku i wprowadzićmodespec
te same atrybuty, które są używane wchmod
poleceniu.M modespec <RET>
Zobacz inne przydatne polecenia dotyczące plików w liście katalogów pod adresem http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
źródło
Wypróbowałem rozwiązanie Vebjorna Ljosy i okazało się, że przynajmniej w moim Emacsie (22.3.1) nie ma takiej funkcji jak „trim-right”, która służy do usuwania bezużytecznego znaku nowej linii na końcu wyjścia chmod.
Usunięcie wywołania „trim-right” pomogło, ale wiersz stanu „odrzucił” z powodu dodatkowego znaku nowej linii.
źródło
C-x C-q
jest bezużyteczna. Ponieważ potrzebujesz również pozwolenia na zapisanie pliku.Używam Spacemacs . Daje mi wygodną funkcję rozwiązania tego pytania. Kod jest następujący.
Dzwonię,
spacemacs/sudo-edit
aby otworzyć plik w emacsie i wpisać hasło, mogę zmienić plik bez trybu tylko do odczytu.Możesz napisać nową funkcję, taką jak
spacemacs/sudo-edit
.źródło