Próbuję użyć :wq
do zapisania pliku tekstowego, który edytowałem w Vimie, ale kiedy wchodzę, pojawia :wq
się błąd
E45: 'readonly' option is set (add ! to override)`
Kiedy dodam !
do :wq
polubienia :wq!
, otrzymuję to:
"/etc/dhcp/dhcpd.conf"
"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing
Plik, który chcę edytować, znajduje dhcpd
się na /etc/dhcpd
ścieżce.
W jaki sposób mogę to zrobić?
:x
lubZZ
wyjdź i zapisz. Będzie pisać tylko przy zmianie.Odpowiedzi:
Musisz otworzyć plik przy użyciu uprawnień administratora w następujący sposób:
Edytuj plik, naciskając i, a następnie zapisz i zakończ naciskając Esca następnie albo
:wq
albo:x
albo po prostu:w
zapisać.Podziękowania dla Rikinga za sugestie
sudoedit
: możesz używaćsudoedit /path/to/file/filename
do edycji plików należących do roota zamiast używaćsudo <editor> /pat/to/file/filename
. Jest to przydatne w przypadku maszyn na poziomie przedsiębiorstwa lub maszyn produkcyjnych, ponieważ sudoedit loguje się do/var/log/auth.log
.Jeśli chcesz zmienić domyślny edytor sudoedit, wykonaj następujące czynności:
a następnie naciśnij Returni wybierz edytor do wyboru, a następnie ponownie naciśnij Return.
Zobacz także: Dyskusja na temat redit dotycząca tego, dlaczego sudoedit może być korzystny
źródło
sudoedit
w takich sytuacjach - tworzy tymczasową kopię, uruchamia edytor i kopiuje wynik. Jeśli wcześniej wybrałeśnano
dla tego polecenia, uruchomEDITOR=vi sudoedit /etc/file
.sudoedit
, nawet nie wiedziałem, że istnieje. Jednak natknąłem się na to podczas googlesudoedit
. Zasugeruję, ale pozostaw to użytkownikowi, jeśli uzna to za konieczne.sudoedit
również odbieraEDITOR
zmienną, łatwiej to ustawić niż konfigurować alternatywy/etc
składa się ze wszystkich plików konfiguracyjnych, więc do edycji tych plików/etc
potrzebujesz uprawnień administratora, ale czasami zapominamy o ich użyciusudo
. ale w tym czasie możemy również użyćnastępnie wprowadź hasło administratora
wyjść pomyślnie
źródło
cmap w!! w !sudo tee > /dev/null %
do swojego,.vimrc
aby umożliwić zapisywanie za pomocą tej metody za pomocą:w!!
. Jeśli jesteś zainteresowany, dlaczego ta metoda działa, zobacz stackoverflow.com/questions/2600783/...