Налаштування та плагіни, коли root (`sudo vim`)?


15

Це дуже неприємно, коли мені потрібно редагувати файл як корінь і використовувати, 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, дійсно не знижено)
Robbie Wxyz

3
Зауважте, що цей vim не працює як root, як sudo vimце робиться. Редагування відбувається як ваш звичайний користувач, а потім sudo обробляє оновлення вихідного файлу.
Jamessan

Примітка. Є два аналогічні варіанти sudo: -Eі -e. -Eозначає "середовище збереження", і це не те, що ви хочете. -e, у свою чергу, означає "не запускати команду, а редагувати файл за визначеною процедурою".
iksemyonov

3

Схоже, все, що вам потрібно зробити - це символічне посилання на корені ~/.vimrcта ~/.vim/на ваші.

Просто запустіть як root:

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

І це має робити!

(PS Я зрозумів це саме зараз і хотів поділитися з будь-якими іншими нобухами. Будь ласка, дайте мені знати, чи є кращий спосіб.)


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

0

Якщо ви заздалегідь знаєте, що вам потрібно редагувати файл як root, скориставшись командами, sudoedit <file>або sudo -e <file>ви отримаєте налаштування в спеціальному середовищі для цього з вашими звичайними налаштуваннями редактора. Робиться копія файлу і запускається ваш редактор для редагування (як вашого користувача). Після виходу файл копіюється назад у вихідне місце як корінь.

Це найбезпечніший і рекомендований спосіб, але у випадку, якщо а) ви не усвідомлюєте достроково, вам потрібно буде записати як root або b) хочете редагувати та зберігати додаткові зміни на місці, вам знадобиться щось інше. З цією метою рішення, що sudo tee пропонується smpl , безумовно, на правильному шляху, але є деякі незначні вдосконалення, які можна зробити для вирішення крайових справ. Зокрема, варто відзначити різницю в обробці запиту пароля sudo в інтерфейсах графічного інтерфейсу та консолі.

Простіший спосіб налаштувати це - використовувати плагін vim-eunuch . У цьому конкретному питанні є кілька зручних речей, які зібрані в зручний пакет. Використання так само просто, як дзвінки :SudoWrite. Я навіть використовую трохи зручніше відображення доступу:

cmap w!! call SudoWrite()

Це має надати вам можливість записувати будь-який файл як root :w!!.


-1

Інший варіант - запустити sudo -E vim somefile.confдля редагування, що збереже ваше оточення, отже .vimrc, будуть використані ваші та плагіни.


Гей, добрий трюк! Це корисно для Vi та багатьох інших команд.
Роббі Віксиз

3
Це має ті самі побічні ефекти, що і пов'язування вашої конфігурації з домашнім каталогом root: а саме, що будь-які операції VIM або плагіни, які записують дані про стан, будуть робити це у вашому домашньому каталозі. Ці файли в кінцевому підсумку є власністю root, і пізніше вони стануть помилками, оскільки ваш звичайний користувач не зможе продовжувати їх використовувати.
Калеб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.