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.

Robbie Wxyz
źródło
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
użytkownik530873
źródło
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.

romainl
źródło
-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).

Robbie Wxyz
źródło
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!!.

Caleb
źródło
-1

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

RSabet
źródło
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