2013-06-03 6 views
7

Как я могу изменить расположение .vim-папки и файла .vimrc, чтобы я мог использовать две (или более) независимые версии vim? Есть ли способ настроить это при компиляции vim из исходного кода? (возможно, запись в feature.h?)Как изменить местоположение .vimrc и .vim

Почему я хочу делать такую ​​вещь ?: Мне нужно работать над проектом, который использует python2, а также python3, поэтому я хочу иметь две независимые настройки vim с различными плагинами, конфигурациями и т. д. Кроме того, одна версия должна быть скомпилирована с помощью + python, а другая с + python3.

+0

Если вы собираетесь установить другую версию, если Vim использует altinstall в/usr/local/bin. Вы также можете определить другой '.vimrc', используя' $ vim -u path/to/.vimrc'. Не уверен, что вы будете делать с каталогом '.vim' или' .viminfo'. – timss

+0

Ну, я забыл упомянуть, что я понял, как запустить vim с другим .vimrc, используя команду -u. Но это не влияет на папку .vim. Изменение vime runtimepath с новым .vimrc не работает, потому что если вы попытаетесь загрузить плагины, вы получите сообщение об ошибке. – crs

+0

Вы можете иметь как '+ python' *, так и' '+ python3'. – romainl

ответ

1

Примечание: Я действительно не рекомендую это делать.

Если вы действительно хотите перекомпилировать Vim так, что он использует другой vimrc и другой каталог конфигурации посмотрите на src/feature.h

Поиск этого файла для USR_VIMRC_FILE. Раскомментируйте это и поместите имя своего vimrc здесь. Это изменит файл defualt vimrc.

Так это должно выглядеть примерно так

#define USR_VIMRC_FILE "~/path/to/vimrc" 

Внутри src/os_unix.h или src/os_mac.h и поиск DFLT_RUNTIMEPATH. Измените все экземпляры ~/.vim на любую нужную папку. Это должно установить путь выполнения по умолчанию, который vim выполняет поиск настроек.

+0

спасибо, что работает отлично для меня. – crs

8

Вы можете влиять на то, что ~/.vimrc используется с помощью аргумента командной строки -u vimrc-file. Поскольку это первая инициализация, вы можете влиять на то, где загружаются плагины (то есть местоположение .vim), путем изменения 'runtimepath'.

Обратите внимание, что для редактирования Python файлов различных версий, эти настройки (например, отступ, источники заканчивания и т.д.) взяты из Filetype плагин, которые которые получены для каждого буфера в отдельности, так что должно быть возможно даже редактировать и Python 2 и 3 в одном экземпляре Vim. (Если у вас нет плохо написанных плагинов, которые определяют глобальный материал.) Таким образом, для этого существует некоторая конфигурация для каждого буфера (некоторые из :autocmd s на пути к проекту или более сложное решение (поиск localrc плагинов или вопросов о проект vimrc здесь) может хватит уже.

Также обратите внимание, что, когда интерпретатор Python (который вам нужно только для Python на основе плагинов и некоторых интерактивных :py команд, а не для редактирования Python) составлен с использованием динамической компоновки (который по умолчанию является по умолчанию на Windows), вы можете иметь как поддержку Python 2 , так и 3 в том же двоичном коде Vim.

+1

Если изменить «runtimepath» вы получите некоторые странные сбщ ошибки как: Обнаружена ошибка при обработке/Главная/пользователь/vimp2/vimrc: линия 4: E117: Неизвестная функция: патогенные # заражают поэтому я бы как и для полностью независимых версий vim с отдельными конфигурационными файлами и папками. – crs

+0

Поместите 'set runtimepath' (без параметров) в качестве второй строки в ваш (рабочий) .vimrc-файл. Перезагрузите vim, он отобразит что-то вроде 'runtimepath = ~/.vim,/opt/local/share/vim/vimfiles,/opt/local/share/vim/vim74,/opt/local/share/vim/vimfiles/after , ~/.vim/after'. Используйте это как новый путь выполнения, и у вас не будет проблем. – Orwellophile

3

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

pathogen#infect() может принимать маршруты, указывающие разные каталоги, которые вы можете использовать для своего каталога пакетов.

Так что, если ваш каталог .vim будет выглядеть следующим образом

.vim/ 
    autoload/ 
     pathogen.vim 
    bundle_python2/ 
     <plugins> 
    bundle_python3/ 
     <other plugins> 

Тогда внутри одного из ваших vimrc для питона 2 конкретных вещей вы бы

call pathogen#infect('bundle_python2/{}') 

и для Python 3 конкретных вещей вы бы

call pathogen#infect('bundle_python3/{}') 

Поскольку каждая папка плагина на самом деле всего лишь .vim, вы можете разместить свой файл конфигурации на основе python в папке соответствующего пакета и сделать вид .vim.

Эта структура также обладает дополнительным преимуществом, что вы можете изменить обе конфигурации одновременно, если вам кажется, что это обычное дело в .vim.

Вы также можете передавать несколько каталогов пакетов, если вы хотите возбудить патоген, чтобы вы могли иметь плагины, которые являются общими без дублирования файлов.Вы просто сделаете это, пройдя несколько путей до pathogen#infect('bundle/{}', 'bundle_python3/{}')

После этого все, что вы делаете, вы можете просто создать псевдонимы для vim, чтобы вызвать правильный файл vimrc.

1

Я нашел способ сделать это! Вы можете просто создать фальшивый $ HOME, содержимое которого является просто папкой .vim и .vimrc. Затем при запуске vim установите переменную среды HOME в эту папку и измените ее на VimEnter.

Run ВИМ с:

OLD_HOME="$HOME" HOME="$FAKE_HOME" vim 

Добавьте это в .vimrc:

autocmd VimEnter * let $HOME = $OLD_HOME 

В Windows вы можете использовать

let $HOME = $HOMEDRIVE.$HOMEPATH 

insetead, нет необходимости хранить старый дом.

Это работает, но если вы используете $ HOME внутри своего vimrc, или любые плагины будут видеть старое значение, это может повлиять на них каким-то образом. Пока я этого не видел.

+1

Это полный взлом и действительно плохая идея - так склонны ломать голову таинственным образом, долго после того, как вы забыли, что вы подделываете '$ HOME'. – OJFord

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