Запустіть 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. Чому так?

Примітка: ім’я користувача не є кореневим.

Відповіді:


15

Замість sudo vim /etc/rc.confвикористання sudoedit /etc/rc.confабо sudo -e /etc/rc.conf. Можливо, вам знадобиться встановити змінну середовища EDITOR на vim. Це запустить vim як звичайний користувач, використовуючи звичайну конфігурацію, на копії файлу, який він буде копіювати назад при виході.


Приємне рішення! Я перевірю це також.
rubik

Я спробував, sudoedit /etc/rc.confі sudo -e /etc/rc.confвін відкриває vim, але мій ~ / .vimrc не завантажується. Що я роблю неправильно?
апарат

@apparat Спробуйте export EDITOR=vimспочатку - це може бути спроба запуску vi, що я не знаю, чи завантажує він vmrc, навіть коли він vim.
Випадково832

Ну, я думаю, це найкраща відповідь. Дякую вам обом.
rubik

@ Random832 export EDITOR=vimпрацював. Я думав, що vi не встановлений у моїй системі і є лише символьним посиланням на vim. Дякую
апарат

6

Ви можете використовувати, -uщоб сказати vim, який rc файл потрібно завантажити. напр

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

якщо введення того, що кожного разу, коли вам потрібно це зробити, є втомливим, зробіть псевдонім:

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

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


Це чудово, дякую. Я вирішив так: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik

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'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.