Ustawienia i wtyczki, gdy root (`sudo vim`)?


15

To naprawdę frustrujące, gdy muszę edytować plik jako root i używać, sudo vim somefile.confa nie mogę używać żadnego z moich skrótów klawiszowych, ustawień i wtyczek.

Czy istnieje sposób, aby uzyskać wszystkie moje dostosowania, gdy muszę edytować jako root?

Używam wtyczki vim do swoich wtyczek.


5
Na marginesie: sudo vim filelepiej napisać jako sudo -e file(pod warunkiem, że ustawisz zmienną środowiskową EDITOR=vim).
lcd047,

@ lcd047: powinieneś zamienić ten komentarz w odpowiedź
static_rtti

Odpowiedzi:


15

Zamiast otwierać vima jako root, możesz po prostu zapisać jako root, przekierowując na tee. Oto przykład:

:w !sudo tee % > /dev/null

Może to być przydatne do aliasu w twoim .vimrc, używam :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
Jest to przydatne w przypadku I did a bunch of editing and then realized I should have used sudoedit, ale w ogólnym przypadku sugerowałbym użycie sudo -e/ sudoedit.
jamessan

7

Dwie rzeczy:

  1. Użyj $ sudo -e filedo edycji za filepomocą $EDITOR. Dodaj, export EDITOR=/path/to/vimjeśli $EDITORnie jest jeszcze ustawione.

  2. Wanilia to doskonały sposób na walkę z uzależnieniem od wtyczek.


-1 za zasugerowanie przywrócenia uzależnienia od wtyczek (J / K, nie ma naprawdę downvote)
Robbie Wxyz

3
Zauważ, że to nie uruchamia vima jak root sudo vim. Edycja odbywa się tak, jak normalny użytkownik, a następnie sudo obsługuje aktualizację oryginalnego pliku.
jamessan

Uwaga: istnieją dwie podobne opcje sudo: -Ei -e. -Eoznacza „środowisko preserver”, a to nie jest to, czego chcesz. -ez kolei oznacza „nie uruchamiaj polecenia, ale edytuj plik za pomocą zdefiniowanej procedury”.
iksemyonov,

3

Wygląda na to, że wszystko co musisz zrobić, to root dowiązania symbolicznego ~/.vimrci ~/.vim/do swojego.

Po prostu uruchom jako root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

I to powinno wystarczyć!

(PS Właśnie to wymyśliłem i chciałem podzielić się z innymi noobami. Daj mi znać, jeśli jest lepszy sposób).


1
Może to często powodować problemy polegające na tym, że niektóre pliki związane z vimem zostaną zapisane jako katalog główny w twoim katalogu domowym, a później napotkasz błędy podczas próby uruchomienia własnej konfiguracji vima jako własnego użytkownika.
Caleb

0

Jeśli wiesz z wyprzedzeniem, że musisz edytować plik jako root, korzystając z poleceń sudoedit <file>lub sudo -e <file>otrzymasz konfigurację w specjalnym środowisku do robienia tego ze zwykłymi preferencjami edytora. Kopia pliku jest tworzona, a edytor jest uruchamiany w celu edycji (jako użytkownik). Po wyjściu plik jest kopiowany z powrotem do oryginalnej lokalizacji jako root.

Jest to najbezpieczniejszy i zalecany sposób, ale w przypadku, gdy a) nie zdasz sobie sprawy z góry, musisz napisać jako root lub b) chcesz edytować i zapisywać przyrostowe zmiany w miejscu, będziesz potrzebować czegoś innego. W tym celu za pomocą rozwiązaniasudo tee proponowane przez smpl jest zdecydowanie na dobrej drodze, ale istnieje kilka drobnych ulepszeń, które można wprowadzić w celu obsługi przypadków na krawędziach. Warto zwrócić uwagę na różnicę w obsłudze pytania o hasło sudo w interfejsie GUI vs. interfejsy konsoli.

Łatwiejszym sposobem skonfigurowania tego jest użycie wtyczki vim-eunuch . Ma ten konkretny problem i kilka innych przydatnych rzeczy zwiniętych w poręczny pakiet. Użycie jest tak proste, jak dzwonienie :SudoWrite. Używam nawet nieco wygodniejszego mapowania dostępu:

cmap w!! call SudoWrite()

To powinno dać ci możliwość napisania dowolnego pliku jako root :w!!.


-1

Inną opcją jest uruchomienie sudo -E vim somefile.confedycji, co pozwoli zachować środowisko, dlatego .vimrczostaną użyte twoje i wtyczki.


Hej, dobra sztuczka! Jest to przydatne dla Vi i wielu innych poleceń.
Robbie Wxyz

3
Ma to te same skutki uboczne, co łączenie konfiguracji z katalogiem głównym root: mianowicie, że wszelkie operacje vim lub wtyczki, które zapisują dane stanu, zrobią to w twoim katalogu domowym. Pliki te ostatecznie należą do roota i spowodują błędy później, ponieważ normalny użytkownik nie będzie mógł ich dalej używać.
Caleb
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.