Помещение .vimrc в каталог vimfiles - PullRequest
8 голосов
/ 10 октября 2010

Я хочу, чтобы мои конфигурации Vim и Emacs находились под контролем версий, но я не хочу, чтобы там находилась вся моя домашняя папка (точнее, я хочу, но должно быть 3 отдельных хранилища). С Emacs это легко; если ~/.emacs не существует, то в качестве файла инициализации используется ~/.emacs.d/init.el. Так что я могу иметь отдельный репозиторий Git в ~/.emacs.d/. С Vim кажется, что .vimrc может только существовать в домашней папке, а не в ~/vimfiles (эквивалент ~/.emacs.d). это лучший способ поставить .vimrc под контроль версий?

Ответы [ 5 ]

7 голосов
/ 27 февраля 2013

Просто вставьте фиктивный .vimrc в одну строчку:

source ~/path/to/real/vimrc  

Работает как шарм

6 голосов
/ 10 октября 2010

Возможно, подойдет ваш .vimrc на ~/.vim/ и символическая ссылка на дом?

Другой, гораздо более модульный подход - переместить сценарий запуска в ~/.vim/plugins/, возможно, создать там подкаталог и один или несколько сценариев инициализации: Vim при запуске будет :runtime! plugin/**/*.vim.

3 голосов
/ 22 января 2013

Как подсказывает @Progo в своем ответе, настройки ~/.vimrc можно перенести в скрипт "плагина" в файле, подобном ~/.vim/plugin/00rc.vim.

. При переходе на следующий уровень необходимо учитывать несколько моментов.по этому пути:

Пользователи и плагины ожидают, что настройки в ~/.vimrc были загружены до того, как плагины соответствуют описанию в :help startup.~/.vim обычно первый в 'runtimepath', но если у пользователя есть другие плагины в ~/.vim/plugin, замена .vimrc должна быть сначала лексикографической, чтобы гарантировать, что она загружается первой, возможно, ~/.vim/plugin/00rc.vim.

Когда процесс запуска vim переходит от шага 3 «Выполнение команд Ex» (где .vimrc было бы прочитано; снова см. :help startup) к шагу 4 «Загрузка сценариев плагина», он запускает :runtime! plugin/**/*.vim.Эта команда просматривает 'runtimepath' для сопоставления файлов с источником и затем начинает их поиск.Это означает, что если что-то в ~/.vim/plugin/00rc.vim изменяет 'runtimepath', тогда будет слишком поздно влиять на то, какие плагины запускаются.Чаще всего это происходит с pathogen , и в этом случае его можно обойти, добавив следующие строки в конец ~/.vim/plugin/00rc.vim:

" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim

Наконец, (снова, как объяснено в:help startup), если файл ~/.vimrc отсутствует, vim будет искать другие файлы, например ~/.exrc, поэтому может потребоваться удалить их, если их содержимое нежелательно.

2 голосов
/ 31 января 2012

Добавляет шаг в процесс, но у меня просто есть скрипт bash deploy.sh в моих настройках vim.

#!/bin/bash

if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
    echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
    mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
    echo "Already have ~/.vimrc symlink, we're good"
else
    echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
    ln -s ~/.vim/vimrc ~/.vimrc
fi

git submodule init
git submodule update
1 голос
/ 10 октября 2010

Вы можете просто сохранить резервную копию в системе управления версиями и развернуть ее (т.е. переместить) в свой домашний каталог, когда вам это нужно. Вы могли бы написать простой сценарий для управления всей этой обработкой, чтобы, по крайней мере, прозрачно, не доставляло много хлопот по его перемещению вперед и назад.

...