Zapisać plik vim jako superużytkownik?


10

To często zdarza mi się problem z użytecznością:

Otwieram plik systemowy tylko do odczytu za pomocą vima, nawet go edytuję, ponieważ nie jestem wystarczająco uważny lub ponieważ vim w systemie jest źle skonfigurowany. Po wprowadzeniu zmian utknąłem w pamięci, aby zapisać je w pliku tymczasowym lub je stracić, ponieważ: w! nie zadziała.

Czy istnieje polecenie vim (: W !!!), które pozwala zapisać bieżący bufor jako superużytkownik? (Vim zapyta oczywiście o twoje hasło sudo lub su)



1
SO jest zdecydowanie duplikatem, jednak dwa pytania SU dotyczą osobnego problemu rozwiązanego za pomocą sudoeditpolecenia. To pytanie koncentruje się bardziej na zapomnieniu wpisania go na pierwszym miejscu i podniesieniu po uruchomieniu edytora.
ciężki

Odpowiedzi:


15
:w !sudo tee % >/dev/null`

Objaśnienie: Za pomocą !można uruchamiać programy. Przedrostek: w, zawartość pliku (zawartość, którą masz w vimie, a nie oryginalny plik, a dokładniej: bufor) zostanie przekazana do komendy na standardowym wejściu. %zostaje zastąpiony nazwą pliku, co >/dev/nullpozwala uniknąć ponownego drukowania zawartości na ekranie (co jest typowym zachowaniem tee).

Znalazłem jeszcze krótszą drogę. ddnie drukuje na standardowe wyjście, więc możesz zapisać wartość zerową.

:w !sudo dd of=%

To samo dotyczy :rwstawiania wyniku danego polecenia, dzięki czemu można na przykład wstawić bieżącą datę do pliku za pomocą:r !date


Wielkie dzięki, sprawiłeś, że moje życie stało się o wiele lepsze! (Brian też)
zimbatm

Właśnie dodałem drugą metodę.
Marian

To naprawdę miłe!
Anthony Giorgio

nie działa z nieoficjalnymi plikami
Christian Brabandt,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.