【问题标题】:How to share one vimrc file among multiple clients?如何在多个客户端之间共享一个 vimrc 文件?
【发布时间】:2010-11-05 02:35:27
【问题描述】:

有时我不是一个非常有秩序的人,我经常发现自己丢失了旧的完全调整过的 vimrc 文件并且不得不重新开始。或者在不同的客户端上有不同版本的 vimrc 文件。由于这种混乱对我来说已经失控,我想知道是否有管理我的 vimrc 文件的好方法。

我的第一个倡议是把我的 _vimrc 放在 subversion(谷歌代码)上,我打算维护它。欢迎其他想法。

更新

我选择了以下解决方案:

  • .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 上,我在 Program Files 目录中检出 Vim 文件夹。 SVN 抱怨那里已经存在文件,但您可以将它们添加到忽略列表中。

【问题讨论】:

  • 你为插件做什么?

标签: vim


【解决方案1】:

我使用Dropbox。我在我的 Dropbox 中创建了一个文件夹vim,其中包含我的.vimrc(实际上是:vimrc.vim)和colorsplugin 等目录。

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 只是一个例子。存在诸如 http://sparkleshare.org/http://one.ubuntu.com 之类的开源服务,但我们鼓励您在互联网上搜索最适合您需求的解决方案。

【讨论】:

  • 我投了这个票不是因为它推荐使用保管箱,我不是这样的粉丝。我投了赞成票,因为有一些方便的例子,说明如何使用 set runtimepath 和 source 加载外部 vim 和 vimrcs。
  • 您可以在不添加系统特定代码的情况下实现条件设置 - 您可以测试 has('win32') 以捕捉 Windows 变化,然后剩下所有其他内容。这是一个例子:gist.github.com/1492157
  • 在 Linux 上,Dropbox 与 Nautilus 完美集成。你不需要 GNOME,只是这个文件管理器和桌面环境通常是一起的。
  • 每当我在下一台计算机上使用 Dropbox 配置 Vim 时遇到问题,谷歌都会将我定向到这篇文章,它总是有帮助的。如果我可以多次投票,我会这样做。谢谢!
  • 您可以使用例如has('win32')has('unix') 确定您使用的系统类型(您可以使用 hostname() 来检查您使用的特定机器)。此外,通常最好在您的个人运行时文件夹前面加上“rtp”,以便您的文件覆盖系统范围的默认值(例如:set rtp^=/path/to/my/vimfolder)。
【解决方案2】:

我将这些文件放在源代码控制系统中,特别是 subversion,但不管是哪个。 这为我提供了所有此类配置文件的历史记录,当我想要在新/其他机器或用户帐户上使用相同的配置文件时,只需检查配置文件即可。

【讨论】:

  • 这正是我所做的。赞成。 (我还将我的 Vim 插件与我的 .vimrc 保存在同一个仓库中)
【解决方案3】:

使用 git。我在 git repo 中有我的 .vim 和 .vimrc 文件,我将它们分支用于不同的系统。所以我有一个 lappy 的分支,一个基于 debian 的分支,一个基于 RH 的分支等等。

我将存储库启动到我的所有服务器上,并根据我认为合适的方式合并更改。然后,当我失去一个时,其他任何一个都会发球。 .vim/.vimrc 是应该在 DVCS 中的文件的绝佳示例。

【讨论】:

  • 你为什么说“使用 git”而不是简单地“使用你最喜欢的版本控制系统”? git 有什么优势吗,比如 cvs、svn、Perforce...?
  • 为什么将它们分支用于不同的系统?当您在进行了巨大差异的更改之后,想要进行可能不会特别好合并的常见更改时,这似乎是一种痛苦。您可以在 .vimrc 中测试系统并将所有设置放在一个中,这在进入新系统时要方便得多,因为您只需带上一个可能会工作的 .vimrc。 (比测试系统更好的是测试能力)
【解决方案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 时,它都会从我的 BitBucket 存储库中下载并使用 latest .vimrc 文件。如果不存在互联网连接,它将使用上次下载的.vimrc

唯一的要求(除了有效的互联网连接)是您需要安装CURL


如果不想每次都下载最新的.vimrc,那就把卷曲线注释掉就好了:

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

BitBucket 也是个人偏好,因为我可以轻松地在线编辑文件而无需提交任何内容,但您可以在任何地方使用可公开访问的 URL(Dropbox、Google Drive、 GitHub等)


更新(2017 年 10 月 16 日)

使用下面更新的 curl 命令将始终从 bitbucket 获得新鲜的.vimrc。如果您处于离线状态或连接速度较慢,它也会超时并使用上次下载的.vimrc_cloud

let $cloudurl = '!curl -H "Cache-Control: no-cache" --max-time 10 https://bitbucket.org/<USERNAME>/vimrc/raw/master/global -o '. $localcloudpath

【讨论】:

  • 这是一个很好的解决方案!
【解决方案5】:

正如其他人所说:使用版本控制系统。

这是一个这样的项目,易于 fork 和扩展:http://github.com/ryanb/dotfiles

它不仅处理 vim.rc,还处理各种配置,并附带一个设置脚本。

【讨论】:

    【解决方案6】:


    还有一种使用版本控制安装插件的非常好的方法,因为大多数 VIM 插件在 GITHUB 上都可用,它也有帮助。 请参阅这篇文章,它告诉您如何使用 GIT 保持 .VIM 文件同步,并在 PATHOGEN 插件的帮助下将插件加载为子模块。

    Use GIT for Syncing VI plugins

    短于 vimcast 中提到的内容,我是从博客中引用的。

    1. 将点文件保存在 git 中
    2. 使用此命令将插件安装为子模块
      git submodule add http://github.com/tpope/vim-fugitive.git bundle/fugitive

    【讨论】:

      【解决方案7】:

      如果您使用的是 vundle,您可以这样做。 Git 使 vimrc 和所有其他设置保持同步,vundle 跟踪您的插件/脚本。

      Synchronizing vim with vundle and git

      【讨论】:

        【解决方案8】:

        我在 google docs 上保留了我的 dot-files 的副本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-20
          • 1970-01-01
          • 2019-04-02
          • 1970-01-01
          • 2023-01-17
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多