Jika file diatur ke mode hanya baca, bagaimana cara mengubahnya ke mode tulis dan sebaliknya dari dalam Emacs?
sumber
Jika file diatur ke mode hanya baca, bagaimana cara mengubahnya ke mode tulis dan sebaliknya dari dalam Emacs?
Mx beralih-hanya-baca
atau dalam versi terbaru dari Emacs
Mx read-only-mode
Pada kotak Windows saya, itu berjumlah Alt-x untuk memunculkan meta prompt dan mengetikkan "toggle-read-only" untuk memanggil fungsi elisp yang benar.
Jika Anda menggunakan binding keyboard default,
Cx Cq
(yang Anda baca dengan keras sebagai "Control-X Control-Q") akan memiliki efek yang sama. Ingat, bagaimanapun, mengingat emacs pada dasarnya sangat tidak dapat dikonfigurasi ulang, jarak tempuh Anda mungkin bervariasi.
Tindak lanjut dari komentar: Anda harus mencatat bahwa status buffer yang dapat ditulisi tidak mengubah izin file yang dapat ditulisi. Jika Anda mencoba menulis ke file hanya baca , Anda akan melihat pesan konfirmasi. Namun, jika Anda memiliki file tersebut, Anda dapat menuliskan perubahan Anda tanpa mengubah izin pada file tersebut.
Ini sangat nyaman jika Anda ingin membuat perubahan cepat ke file tanpa harus melalui beberapa langkah menambahkan izin menulis, menulis perubahan, menghapus izin menulis. Saya cenderung melupakan langkah terakhir itu, membiarkan file-file penting yang berpotensi terbuka untuk perubahan yang tidak disengaja di kemudian hari.
toggle-read-only
hanya mengaktifkan status read only dari buffer bukan dari file. Jika Anda ingin mengubah mode penggunaan filedired
atau jalankanchmod +w
sebagai perintah shell pada file.Pastikan Anda tidak membingungkan 'file' dengan 'buffer'. Anda dapat mengatur buffer menjadi hanya-baca dan kembali lagi dengan
C-x C-q
(toggle-read-only
). Jika Anda memiliki izin untuk membaca, tetapi tidak menulis, file, buffer yang Anda dapatkan ketika Anda mengunjungi file (C-x C-f
ataufind-file
) akan dimasukkan ke mode read-only secara otomatis. Jika Anda ingin mengubah izin pada file di sistem file, mungkin mulai dengandired
pada direktori yang berisi file. Dokumentasi untuk dired dapat ditemukan di info;C-h i (emacs)dired RET
.sumber
inc
. Ajari pria memancing ...Apa yang saya temukan adalah
M-x set-file-modes filename mode
Ini bekerja di kotak Windows Vista saya. Sebagai contoh:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
sumber
(set-file-modes FILE 438)
(di mana 438 adalah setara dengan desimal2#0110110110
atau666
).Seperti yang disebutkan di atas oleh orang lain: Mx toggle-read-only akan bekerja.
Namun, ini sekarang sudah usang dan mode baca-saja-Mx adalah cara saat ini untuk melakukannya, bahwa itu diatur ke Cx Cq keybinding.
sumber
CTRL + X + CTRL + Q
sumber
Jika hanya buffer (dan bukan file) read-only, Anda dapat menggunakan
toggle-read-only
, yang biasanya terikatC-x C-q
.Namun, jika file itu sendiri hanya-baca, Anda mungkin menemukan fungsi berikut berguna:
Fungsi tergantung pada
unix-output
dantrim-right
:Tempatkan fungsi di Anda
~/.emacs.el
, evaluasi mereka (atau restart emacs). Anda kemudian dapat membuat file dalam buffer saat ini dapat ditulis denganM-x set-buffer-file-writable
.sumber
set-buffer
luarsave-excursion
.subseq
dengansubstring
sekarang. Itu harus menghindari peringatan.Jika Anda melihat direktori file (dired), maka Anda dapat menggunakan
Shift + M
nama file dan memasukkanmodespec
, atribut yang sama yang digunakan dalamchmod
perintah.M modespec <RET>
Lihat perintah lain yang berguna pada file dalam daftar direktori di http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
sumber
Saya mencoba solusi Vebjorn Ljosa, dan ternyata setidaknya di Emacs saya (22.3.1) tidak ada fungsi seperti 'trim-right', yang digunakan untuk menghapus baris baru yang tidak berguna di akhir output chmod.
Menghapus panggilan ke 'trim-kanan' membantu, tetapi membuat baris status "terpental" karena baris baru tambahan.
sumber
C-x C-q
tidak berguna. Karena Anda juga memerlukan izin untuk menyimpan file.Saya menggunakan Spacemacs . Ini memberi saya fungsi yang nyaman untuk menyelesaikan pertanyaan ini. Kode berikut.
Saya menelepon
spacemacs/sudo-edit
untuk membuka file di emacs dan memasukkan kata sandi saya, saya dapat mengubah file tanpa mode read-only.Anda dapat menulis fungsi baru seperti
spacemacs/sudo-edit
.sumber