Настройки и плагины когда root (`sudo vim`)?


15

Это действительно расстраивает, когда мне нужно отредактировать файл как пользователь root и использовать его, sudo vim somefile.confи я не могу использовать какие-либо свои сочетания клавиш, настройки и плагины.

Есть ли способ получить все мои настройки, когда мне нужно редактировать как root?

Я использую vim-plug для своих плагинов.


5
На заметку: sudo vim fileлучше записать как sudo -e file(при условии, что вы установили переменную окружения EDITOR=vim).
lcd047

@ lcd047: вы должны превратить этот комментарий в ответ
static_rtti

Ответы:


15

Вместо того, чтобы открывать vim как root, вы можете просто сохранить как root, перенаправив на tee. Вот пример:

:w !sudo tee % > /dev/null

Это может быть полезно для псевдонима в вашем .vimrc, я использую :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
Это полезно для I did a bunch of editing and then realized I should have used sudoedit, но для общего случая я бы предложил использовать sudo -e/ sudoedit.
jamessan

7

Две вещи:

  1. Используйте $ sudo -e fileдля редактирования fileс $EDITOR. Добавить, export EDITOR=/path/to/vimесли $EDITORеще не установлен.

  2. Ваниль - отличный способ побороть зависимость от плагинов.


-1 за предложение по восстановлению зависимости от плагинов (J / K, дауноут не очень)
Робби Wxyz

3
Обратите внимание, что vim не запускается от имени root, как это sudo vimделает. Редактирование происходит как ваш обычный пользователь, а затем sudo выполняет обновление исходного файла.
jamessan

Примечание: есть два аналогичных варианта sudo: -Eи -e. -Eозначает «среда сохранения», и это не то, что вы хотите. -eв свою очередь, означает «не запускать команду, а редактировать файл с определенной процедурой».
Иксемёнов

3

Похоже, все, что вам нужно сделать, это корень символической ссылки ~/.vimrcи ~/.vim/ваши.

Просто запустите с правами root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

И это должно сделать это!

(PS Я понял это только сейчас и хотел поделиться с другими новичками. Пожалуйста, дайте мне знать, если есть лучший способ.)


1
Это может часто вызывать проблемы, связанные с тем, что некоторые связанные с vim файлы будут записываться как root в вашем домашнем каталоге, и позже вы столкнетесь с ошибками, пытаясь запустить вашу собственную конфигурацию vim как ваш собственный пользователь.
Калеб

0

Если вы заранее знаете, что вам нужно отредактировать файл с правами суперпользователя, используя команды sudoedit <file>или sudo -e <file>вы настроите его в специальной среде для выполнения ваших обычных настроек редактора. Создается копия файла, и ваш редактор запускается для его редактирования (как ваш пользователь). Когда вы выходите, файл копируется обратно в исходное местоположение как root.

Это самый безопасный и рекомендуемый способ, но в случае, если а) вы заранее не понимаете, что вам нужно будет писать от имени пользователя root, или б) хотите редактировать и сохранять на месте инкрементальные изменения, вам понадобится что-то еще. С этой целью решение с использованием sudo tee предложенного smpl определенно находится на правильном пути, но есть некоторые незначительные улучшения, которые могут быть сделаны для обработки крайних случаев. В частности, стоит обратить внимание на разницу в обработке приглашения пароля sudo в графическом интерфейсе и на интерфейсах консоли.

Более простой способ настроить это - использовать плагин vim-eunuch . У него есть эта конкретная проблема и несколько других полезных вещей, свернутых в удобный пакет. Использование так же просто, как вызов :SudoWrite. Я даже использую немного более удобное сопоставление доступа:

cmap w!! call SudoWrite()

Это должно дать вам возможность написать любой файл с правами root :w!!.


-1

Другой вариант - запустить sudo -E vim somefile.confредактирование, которое сохранит вашу среду, следовательно, .vimrcбудут использованы ваши плагины и плагины.


Эй, хороший трюк! Этот способ полезен для Vi и многих других команд.
Робби Wxyz

3
Это имеет те же побочные эффекты, что и привязка вашей конфигурации к домашнему каталогу root, а именно: любые операции vim или плагины, которые записывают данные о состоянии, будут делать это в вашем домашнем каталоге. Эти файлы в конечном итоге принадлежат пользователю root, и позже они вызовут ошибки, поскольку ваш обычный пользователь не сможет продолжать их использовать.
Калеб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.