Как ссылаться на / исходный файл .vimrc - PullRequest
32 голосов
/ 06 января 2011

Есть ли способ ссылки (или «источника») на файл другого пользователя .vimrc?

Когда я kuu (вариант su, использующий маркеры безопасности kerberos) для идентификатора пользователя с правами администратора, я хотел бы использовать мой личный файл .vimrc.

Я не хочу перезаписывать существующий файл .vimrc администратора, потому что ID администратора является общим для нескольких пользователей.

Ответы [ 9 ]

25 голосов
/ 06 января 2011

Вы можете использовать переменную окружения MYVIMRC.Таким образом, вам не нужно будет пропускать -u каждый раз, когда вы запускаете vim.(Конечно, вместо этого вы можете использовать псевдоним, но это не поможет, например, vipw)

Имейте в виду, что .vimrc может выполнять произвольные команды, если вы используете /home/user/.vimrc, вы можетесоздание проблемы безопасности (например, кому-то удается скомпрометировать вашу учетную запись пользователя, изменить ваш .vimrc, а затем получить root при следующем редактировании файла с правами root).Вы, конечно, можете хранить известную безопасную копию где-то в ~root/.

Вы, возможно, даже можете установить что-то в ~root/.bashrc, чтобы автоматически установить MYVIMRC на что-то другое для каждого другого администратора.

24 голосов
/ 06 января 2011

Попробуйте -u параметр и укажите путь к альтернативному файлу конфигурации.

Например: vim -u /home/jesse/myvimrc

См. http://linuxcommand.org/lc3_man_pages/vim1.html

6 голосов
/ 12 августа 2016

Используйте альтернативный файл .vimrc без плагинов, как упоминалось, и добавьте псевдоним в .bash_profile или что-то в этом роде.

alias svim='vim -u ~/.vimrc_simple'

На самом деле я предпочитаю следующее:

alias vvim='vim -u ~/.vimrc_vundle'

Чтобы сохранить vim в качестве упрощенной команды, поскольку загрузка плагинов замедляет создание программы.

6 голосов
/ 06 января 2011

В vim:

:source /path/to/your/.vimrc

4 голосов
/ 06 января 2011

Я пробовал это всего несколько раз, и мне кажется, что это хорошо работает. Определите псевдоним для vim, который выглядит примерно так:

alias vim="HOME=~yournormaluser vim -c 'let \$HOME = \"$HOME\"'"

То, что это делает, обманывает vim в использовании вашей среды $HOME/.vim/, но сбрасывает $HOME изнутри vim, поэтому при выполнении таких действий, как :e ~/something.txt, все равно будет использоваться пользователь-администратор $HOME.

Это дает дополнительное преимущество: вам вообще не нужно менять ~/.vimrc администратора.

2 голосов
/ 15 сентября 2011

Я предполагаю, что вашему первоначальному владельцу принадлежит ваш tty. Если это так, вы можете получить вашего первоначального пользователя с:

stat -c'%U' `tty`

Поместив настроенный корневой файл .vimrc в /root/.vimrc.$USRNAME, вы можете сохранить достаточно безопасный настроенный файл vimrc. Вы можете делать и другие вещи, но я оставляю это на ваше воображение.

Метод 1 - поместите это в ваш /root/.bashrc и покурите:

# Source a custome vimrc if it exists
mytty=`tty`
initial_user=`stat -c'%U' $mytty`
custom_vimrc="/root/.vimrc.$initial_user"
if [ -f $custom_vimrc ]; then
    export VIMINIT="source $custom_vimrc"
fi

Метод 2 - поместите нечто подобное в ваш /root/.vimrc (лучшее решение, так как вы можете использовать ksh).

Если кто-нибудь может понять метод 2, я бы приветствовал этот пост. Мне не хватает мотивации.

1 голос
/ 07 января 2011

Лично я просто символическую ссылку .vimrc рута на мой. Из BASH (как root):

ln -s /home/<me>/.vimrc /root/.vimrc

Но вы должны быть осторожны с тем, что в нем есть.

0 голосов
/ 18 января 2018

Я создал плагин несколько лет назад, так как я хотел иметь свой собственный .vimrc на наших серверах, не заставляя любого пользователя, который использует sudo, переходить от имени root к моему .vimrc.

Мой плагин работает точно как плагин, предоставленный @ULick.

GIST

0 голосов
/ 14 апреля 2017

Метод 2 - в качестве дополнения к .vimrc

пробовал разные вещи
tty не работает и system("who am i") ни (они появляются пустыми, когда используются из vim-функции)так что этот путь намного длиннее.Любые ярлыки приветствуются

"Local .vimrc for the user
" 1. get the user, which used su
" 2. we can load his .vimrc.<user>
" from $HOME (from where we have sudo'ed in)
let b:term = substitute( system ("ps T | grep ' ps T$' | sed -e 's/^  *//' | cut -d ' ' -f 2 "), "\n", "", "" )
let b:user = substitute( system ("who | grep ".b:term." | cut -d ' ' -f 1 "), "\n", "", "" )
let b:file = $HOME."/.vimrc.".b:user
if filereadable(b:file)
  execute 'source '.b:file
endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...