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.

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.


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.


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'

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.