2011-01-06 4 views
24

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

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

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

ответ

20

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

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

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

+0

Спасибо за это, это именно то, что я спросил. И я также ценю предупреждения о безопасности. –

+0

работает для «vim», но не для «vi» – Tagar

+0

@ Руслан хорошо, вопрос о файле * .vim * rc, поэтому ... Он также не будет работать для EMACS. Или joe, или nano, или Microsoft Word. (И если вы вызываете vim как 'vi', тогда вы просите его работать в режиме совместимости) [Возможно, я неправильно понимаю, что вы пытаетесь сказать; уточните пожалуйста.] – derobert

5

В Vim:

:source /path/to/your/.vimrc

+0

Это не мало: и РТП не обновляется таким образом - ну, конечно, .vimrc может сбросить & РТП. –

3

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

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

Что это делает трюк Vim в использовании вашего $HOME/.vim/ среды, но сбрасывает $HOME изнутри Vim так делать такие вещи, как :e ~/something.txt будет по-прежнему использовать пользователь админа $HOME.

У этого есть дополнительное преимущество, что вам не нужно менять администратор ~/.vimrc.

+0

И снова это будет alias vim для всех, кто использует этого пользователя admin. Когда я это делал в прошлом, я был в ситуации, когда моя среда знала, что я сушу из своего 'USER' и sourced' ~ $ USER/.aliases', поэтому я мог бы с этим справиться. Может быть, вы все равно сможете использовать эту информацию. –

+0

Кажется, правильно установить & rtp => +1 –

+0

добавить псевдоним randy_gvim, что другие вряд ли будут использовать. –

18

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

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

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

+1

Не совсем к сожалению. 'man -u':' -u {vimrc} Используйте команды в файле {vimrc} для инициализации'. Звук до сих пор звучит, но он также добавляет vim в специальный режим, который «все другие инициализации пропускаются». Это затруднило задачу отладки для меня, которую я отслеживал до 'vim -u ~/vimrc', не эквивалентного' vim'. Для меня это было: vim -u <(echo source/usr/share/vim/vimrc; cat ~/.vimrc) 'используя специальный' '(<...)' bash-shell. – gmatht

1

Лично я просто обращаюсь к символу Root's .vimrc к моему. От BASH (как корень):

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

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

2

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

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, я бы приветствовал сообщение. Мне не хватает мотивации.

5

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

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

Действительно я предпочитаю следующее:

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

Для того, чтобы сохранить vim как легкие команды, так как плагин загрузка, кажется, чтобы замедлить программу создания экземпляра.

1

Способ 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 
0

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

Мой плагин работает точно так же, как плагин, что @ULick.

GIST

Смежные вопросы