Uruchom Vima jako mojego użytkownika z uprawnieniami roota

10

Mam swoje niestandardowe pliki Vima ~/.vimi ustawienia w ~/.vimrc. Czasami jednak muszę edytować niektóre pliki /etci tak dalej.
Jeśli uruchomię Vima w ten sposób:

$ sudo vim /etc/rc.conf

Tracę konfigurację, ponieważ Vim używa swojej domyślnej. Więc: jak mogę uruchomić Vima z uprawnieniami roota do edycji plików bez utraty ustawień użytkownika (które znajdują się w moim katalogu domowym)?
Próbowałem:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

ale Bash mi daje Permission denied. Jednakże powyższe polecenie działa na przykład dla: /etc/acpi/handler.sh. Dlaczego?

Uwaga: nazwa użytkownika nie jest rootem.

rubik
źródło

Odpowiedzi:

15

Zamiast sudo vim /etc/rc.confużycia sudoedit /etc/rc.conflub sudo -e /etc/rc.conf. Może być konieczne ustawienie zmiennej środowiskowej EDITOR na vim. Spowoduje to uruchomienie vima jako zwykłego użytkownika, przy użyciu normalnej konfiguracji, na kopii pliku, który zostanie skopiowany po wyjściu.

Losowo 832
źródło
Fajne rozwiązanie! Sprawdzę to również.
rubik
Próbowałem sudoedit /etc/rc.confi sudo -e /etc/rc.confotwiera vim, ale mój ~ / .vimrc nie jest ładowany. Co robię źle?
aparat
@apparat Spróbuj export EDITOR=vimnajpierw - może to być próba uruchomienia vi, ale nie wiem, czy ładuje vimrc, nawet jeśli jest vim.
Random832
Myślę, że to najlepsza odpowiedź. Dziękuję wam obu.
rubik
@ Random832 export EDITOR=vimdziałał. Myślałem, że vi nie jest zainstalowane w moim systemie i jest tylko dowiązaniem symbolicznym do vima. Dzięki
aparat
6

Możesz użyć, -uaby powiedzieć vimowi, który plik rc ma zostać załadowany. na przykład

sudo vim -u ~user/.vimrc /etc/rc.conf

jeśli wpisywanie, że za każdym razem jest to uciążliwe, utwórz alias:

alias sudovim='sudo vim -u ~user/.vimrc'

Zauważ, że vim -umoże to spowodować awarię wtyczek lub plików rc, jeśli załadują inne pliki w stosunku do $ HOME - $ HOME jest teraz katalogiem głównym root, a nie użytkownikiem. Można to rozwiązać za pomocą np. Dowiązań symbolicznych w katalogu głównym roota lub za pomocą twardych ścieżek absolutnych.

cas
źródło
To wspaniale, dziękuję. I rozwiązać tak: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik
1

sudo vim -S /home/user/.vimrc /etc/rc.conf

Jest to równoważne z:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

i może być również alias:

alias svim='sudo vim -S /home/user/.vimrc'

Amos Baker
źródło