Mam swoje niestandardowe pliki Vima ~/.vim
i ustawienia w ~/.vimrc
. Czasami jednak muszę edytować niektóre pliki /etc
i 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.
źródło
sudoedit /etc/rc.conf
isudo -e /etc/rc.conf
otwiera vim, ale mój ~ / .vimrc nie jest ładowany. Co robię źle?export EDITOR=vim
najpierw - może to być próba uruchomieniavi
, ale nie wiem, czy ładuje vimrc, nawet jeśli jest vim.export EDITOR=vim
działał. Myślałem, że vi nie jest zainstalowane w moim systemie i jest tylko dowiązaniem symbolicznym do vima. DziękiMożesz użyć,
-u
aby powiedzieć vimowi, który plik rc ma zostać załadowany. na przykładsudo 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 -u
moż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.źródło
alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc"
.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'
źródło