WedX - журнал о программировании и компьютерных науках

Как поделиться одним файлом vimrc между несколькими клиентами?

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

Моя первая инициатива - перевести мой _vimrc на подрывную деятельность (Google Code), и я намерен поддерживать ее. Другие идеи приветствуются.

Обновлять

Я остановился на следующем решении:

  • Загрузите .vimrc и .gvimrc в онлайн-репозиторий кода в каталог с именем Vim. Используйте имя файла _vimrc и _gvimrc, чтобы они не были скрыты, и для совместимости с Windows.

  • Оформить заказ на репозиторий в целевой системе

  • В Mac OSX / Linux создайте символические ссылки:

    ~ $ ln -s my_repository/Vim/_vimrc $HOME/.vimrc

    ~ $ ln -s my_repository/Vim/_gvimrc $HOME/.gvimrc

  • В Windows я проверяю папку Vim над папкой в ​​каталоге Program Files. SVN жалуется на уже существующие файлы, но вы можете добавить их в список игнорирования.

vim
23.06.2009

  • Что вы делаете с плагинами? 18.09.2013

Ответы:


1

Я использую Dropbox. Я создал папку vim в моем Dropbox, которая содержит мои .vimrc (на самом деле: vimrc.vim) и colors, plugin и т. Д.

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

Моя настоящая .vimrc содержит только то, что необходимо для загрузки того, что есть у меня в Dropbox. В OSX и Linux это выглядит так:

set runtimepath^=~/Dropbox/vim
source ~/Dropbox/vim/vimrc.vim

В Windows вот так:

set runtimepath^=$HOME/My\ Documents/My\ Dropbox/vim
source $HOME\My Documents\My Dropbox\vim\vimrc.vim

И это все!

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

Бесплатная версия Dropbox предоставит вам 30-дневную историю изменений, а платная - полную историю изменений. Обратите внимание: если вы работаете в Linux, проще всего использовать GNOME, для которого у Dropbox есть хороший клиент.

Условные настройки

Если у вас есть небольшие изменения конфигурации, которые вы хотели бы использовать на разных машинах, это удобное решение:

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

fun! MySys()
    return 'linux'
endfun 

затем в вашем глобальном файле vimrc.vim:

if MySys() == "linux"
    set backupdir=./.backup,/tmp
    set directory=./.backup,/tmp 
elseif MySys() == "windows"
    set backupdir=$HOME/AppData/Local/backup,$HOME/AppData/Local/tmp
    set directory=$HOME/AppData/Local/backup,$HOME/AppData/Local/tmp
endif

Альтернативы Dropbox

Существует множество облачных хранилищ и служб синхронизации, Dropbox - лишь один из примеров. Сервисы с открытым исходным кодом, такие как https://sparkleshare.org/ и https://one.ubuntu.com существуют, но вам рекомендуется поискать в Интернете решение, которое наилучшим образом соответствует вашим потребностям.

26.07.2009
  • Я проголосовал за это не потому, что он рекомендует использовать Dropbox, который мне не очень нравится. Я проголосовал за него из-за удобных примеров использования set runtimepath и source для загрузки внешних vim и vimrcs. 03.08.2009
  • Только из любопытства, почему вы устанавливаете резервную копию и временную? 01.09.2011
  • Я не знаю; @ timemachine3030 добавил эту часть к моему ответу. Я полагаю, он делает это, чтобы иметь возможность вернуться к чему-то (tmp), если резервная копия не существует в системе, в которой вы оказались. 02.09.2011
  • Этот фрагмент более подробно описан на странице vim wikia 07.09.2011
  • Вы можете добиться условных настроек, не добавляя системный код - вы можете проверить has ('win32'), чтобы уловить вариацию Windows, и тогда вам останется все остальное. Вот пример: gist.github.com/1492157 18.12.2011
  • @jmohr +1. Почему я сам об этом не подумал :)? 19.12.2011
  • В Linux Dropbox прекрасно интегрируется с Nautilus. Вам не нужен GNOME, просто этот файловый менеджер и среда рабочего стола обычно идут вместе. 23.12.2011
  • Всякий раз, когда у меня возникают проблемы с настройкой Vim с Dropbox на следующем компьютере, Google направляет меня на эти сообщения, и это всегда помогает. Если бы я мог проголосовать много раз, я бы это сделал. Спасибо! 21.10.2012
  • На мой взгляд, лучший вариант - создать символическую ссылку на вашу папку Dropbox. Вместо описанной конфигурации у вас есть символическая ссылка. ln -s ~ / .vimrc ~ / Dropbox / .vimrc 08.11.2012
  • @Uku У этого есть 2 недостатка: не работает в Windows (хотя может и не быть проблемой) и не работает с плагинами и т. Д., Если вы также не укажете символическую ссылку .vim/. 08.11.2012
  • Вы можете использовать, например, has('win32') и has('unix'), чтобы определить, какой тип системы вы используете (и вы можете использовать hostname(), чтобы проверить, на каком конкретном компьютере вы находитесь). Также часто лучше добавить rtp к вашей личной папке времени выполнения, чтобы ваши файлы переопределили общесистемные значения по умолчанию (например, :set rtp^=/path/to/my/vimfolder). 05.07.2013
  • Я не знал о синтаксисе ^=. Довольно приятно! Я сразу обновлю свой ответ (и свои скрипты) :). 05.07.2013
  • Внимание к этому решению: не забудьте обновить / изменить расположение ~/.vim/after в конце rtp. Это сводило меня с ума от джедаев. При переключении на буфер python загружаются настройки jedi-vim. Но затем общесистемный ftplugin портит все настройки, и из-за отсутствия / неправильного пути ftplugin, расположенный в bundle/jedi-vim/after/, игнорируется. 16.03.2014
  • Как поступить с окончанием строки на win в Linux? например когда файл конфигурации редактируется в win, добавляется возврат каретки (^ M), тогда файл конфигурации не может работать в Linux 22.06.2014
  • Если честно, это ко мне нечасто всплывает. У меня есть несколько блоков if has("unix") и if has("win32") в моем vimrc, но для решения таких проблем. 24.06.2014

  • 2

    Я помещаю эти файлы в систему управления версиями, в частности в Subversion, но неважно в какую. Это дает мне историю всех таких файлов конфигурации, и это просто вопрос проверки файла конфигурации, когда я хочу тот же самый на новой / другой машине или учетной записи пользователя.

    23.06.2009
  • Я именно этим и занимаюсь. Проголосовали. (Я также храню свои плагины Vim в том же репозитории, что и мой .vimrc) 27.07.2009

  • 3

    Используйте git. У меня есть файлы .vim и .vimrc в репозитории git, и я разветвляю их для разных систем. Итак, у меня есть ветка для lappy, одна ветка для Debian, одна для RH и т. Д.

    Я запускаю репозитории на всех своих серверах и объединяю изменения по своему усмотрению. Тогда, когда я потеряю одного, подойдет любой из остальных. .vim / .vimrc - отличные примеры файлов, которые должны быть в DVCS.

    23.06.2009
  • Почему вы говорите использовать git, а не просто использовать свою любимую систему контроля версий? Есть ли какие-то преимущества у git, скажем, cvs, svn, Perforce ...? 25.06.2009
  • Зачем их разветвлять для разных систем? Это просто похоже на боль, когда вы хотите внести общие изменения, которые могут не слиться особенно хорошо в будущем после того, как вы внесли сильно расходящиеся изменения. Вы можете протестировать систему в своем .vimrc и собрать все свои настройки в одном, что намного удобнее при переходе на новую систему, поскольку вам нужно иметь только один .vimrc, который, вероятно, будет работать. (И даже лучше, чем система тестирования, это возможности тестирования) 26.07.2009

  • 4

    Что лучше всего для меня, так это поместить в мой .vimrc файл следующее:

    set nocompatible
    let $localcloudpath = $MYVIMRC . '_cloud'
    let $cloudurl = '!curl https://bitbucket.org/<USERNAME>/vimrc/raw/master/global -o '. $localcloudpath
    silent execute $cloudurl
    source $localcloudpath
    

    Таким образом, каждый раз, когда я запускаю vim, он загружает и использует последний .vimrc файл из моего репозитория BitBucket. Он будет использовать последний загруженный .vimrc, если нет подключения к Интернету.

    Единственное требование (помимо активного подключения к Интернету) - вам нужен CURL установлен.


    Если вы не хотите загружать последнюю .vimrc каждый раз, просто закомментируйте строку curl:

    " let $cloudurl = '!curl https://bitbucket.org/<USERNAME>/vimrc/raw/master/global -o '. $localcloudpath
    

    BitBucket также является личным предпочтением, потому что я могу легко редактировать файл в Интернете без необходимости каких-либо фиксаций, но вы можете разместить свой .vimrc файл где угодно с общедоступным URL-адресом (Dropbox, Google Диск, GitHub и т. д.)


    ОБНОВЛЕНИЕ (16.10.2017)

    Используя приведенную ниже обновленную команду curl, вы всегда будете получать свежий .vimrc из битбакета. Кроме того, время ожидания истечет и будет использоваться последний загруженный .vimrc_cloud, если вы не в сети или используете медленное соединение.

    let $cloudurl = '!curl -H "Cache-Control: no-cache" --max-time 10 https://bitbucket.org/<USERNAME>/vimrc/raw/master/global -o '. $localcloudpath
    
    14.01.2016
  • Это отличное решение! 07.12.2017

  • 5

    Как говорили другие: используйте систему контроля версий.

    Вот такой проект, который легко разветвить и расширить: https://github.com/ryanb/dotfiles

    Он обрабатывает не только vim.rc, но и все виды конфигурации и поставляется со сценарием установки.

    26.06.2010

    6


    Существует также очень хороший способ установки подключаемых модулей с помощью системы управления версиями. Поскольку большинство подключаемых модулей VIM доступны на GITHUB, они также помогают. Ознакомьтесь с этой статьей, в которой рассказывается, как синхронизировать файл .VIM с помощью GIT и загружать плагин как субмодуль с помощью плагина PATHOGEN.

    Используйте GIT для синхронизации подключаемых модулей VI

    Вкратце о том, что упоминается в vimcast, и я цитирую из блога.

    1. Храните свои точечные файлы в git
    2. Установите плагины как подмодули с помощью этих команд
      git submodule add https://github.com/tpope/vim-fugitive.git комплект / беглец
    26.04.2013

    7

    Если вы используете vundle, вы можете сделать это так. Git синхронизирует vimrc и все другие настройки, а vundle отслеживает ваши плагины / скрипты.

    Синхронизация vim с vundle и git

    11.10.2013

    8

    Я храню копию своих точечных файлов в документации Google.

    23.06.2009
    Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]