Запустите Vim как мой пользователь с привилегиями root

10

У меня есть мои собственные файлы Vim ~/.vimи настройки в ~/.vimrc. Тем не менее, иногда мне приходится редактировать некоторые файлы /etcи тому подобное.
Если я начну Vim, как это:

$ sudo vim /etc/rc.conf

Я теряю свой конфиг, так как Vim использует его по умолчанию. Итак: как я могу запустить Vim с правами root для редактирования файлов без потери настроек моего пользователя (которые находятся в моем домашнем каталоге)?
Я пытался:

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

но Баш дает мне Permission denied. Тем не менее, приведенная выше команда работает, например , для: /etc/acpi/handler.sh. Это почему?

Примечание: имя пользователя не root.

рубик
источник

Ответы:

15

Вместо sudo vim /etc/rc.confиспользования sudoedit /etc/rc.confили sudo -e /etc/rc.conf. Вам может потребоваться установить переменную окружения EDITOR на vim. Он запустит vim как обычный пользователь, используя вашу обычную конфигурацию, для копии файла, которую он скопирует при выходе.

Random832
источник
Отличное решение! Я тоже это проверю.
Рубик
Я попытался, sudoedit /etc/rc.confи sudo -e /etc/rc.confон открывает Vim, но мой ~ / .vimrc не загружается. Что я делаю не так?
аппарат
@apparat Попробуйте export EDITOR=vimсначала - возможно, он пытается запустить vi, что я не знаю, загружает ли он vimrc, даже если это vim.
Random832
Ну, я думаю, что это лучший ответ. Спасибо вам обоим.
Рубик
@ Random832 export EDITOR=vimсработало. Я думал, что vi не установлен в моей системе и является только символической ссылкой на vim. Спасибо
аппарат
6

Вы можете использовать -uvim, чтобы указать, какой rc-файл загрузить. например

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

если вводить это каждый раз, когда вам нужно сделать это утомительно, создайте псевдоним:

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

Обратите внимание, что это vim -uможет привести к сбою подключаемых модулей или вызываемых rc-файлов, если они загружают другие файлы, относящиеся к $ HOME - $ HOME теперь является домашним каталогом пользователя root, а не пользователем. Это может быть решено, например, с помощью символических ссылок в домашнем каталоге root или жестким кодированием абсолютных путей.

саз
источник
Это здорово, спасибо. Я решил так: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
Рубик
1

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

Это эквивалентно:

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

а также может быть псевдонимом:

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

Амос Бейкер
источник