如何在多个客户端之间共享一个vimrc文件?

如何在多个客户端之间共享一个vimrc文件?,vim,Vim,我有时不是一个非常有秩序的人,我经常发现自己的情况下,失去了我的旧的完全调整vimrc文件,不得不重新开始。或者在不同的客户端上有不同版本的vimrc文件。由于我无法控制这种混乱局面,我想知道是否有一种管理我的vimrc文件的好方法 我的第一个计划是将我的vimrc放在subversion(谷歌代码)上,我打算维护它。欢迎提出其他想法 更新 我采用了以下解决方案: 将.vimrc和.gvimrc上传到名为Vim的目录中的在线代码存储库中。使用文件名\u vimrc和\u gvimrc,这样它们

我有时不是一个非常有秩序的人,我经常发现自己的情况下,失去了我的旧的完全调整vimrc文件,不得不重新开始。或者在不同的客户端上有不同版本的vimrc文件。由于我无法控制这种混乱局面,我想知道是否有一种管理我的vimrc文件的好方法

我的第一个计划是将我的vimrc放在subversion(谷歌代码)上,我打算维护它。欢迎提出其他想法

更新 我采用了以下解决方案:

  • .vimrc
    .gvimrc
    上传到名为
    Vim
    的目录中的在线代码存储库中。使用文件名
    \u vimrc
    \u gvimrc
    ,这样它们就不会被隐藏,并且与Windows兼容

  • 签出目标系统上的存储库

  • 在Mac OSX/Linux上创建符号链接:

    ~$ln-s my_repository/Vim/\u vimrc$HOME/.vimrc

    ~$ln-s我的存储库/Vim/\u gvimrc$HOME/.gvimrc

  • 在Windows上,我在Program Files目录中的Vim文件夹上签出Vim文件夹。SVN抱怨那里已经存在文件,但您可以将这些文件添加到忽略列表中


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


      我在我所有的服务器上启动repo,并在我认为合适的时候合并更改。然后,当我失去一个时,其他人中的任何一个都会为我服务。vim/.vimrc是应该放在DVCS中的文件的一个很好的例子。

      我把这些文件放在一个源代码控制系统中,特别是subversion,但不管是哪个。 这给了我所有这些配置文件的历史记录,当我想在新的/其他机器或用户帐户上使用相同的配置文件时,只需签出配置文件。

      我在谷歌文档上保留了我的点文件副本。

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

      Dropbox将所有这些文件推送到我的所有计算机(家庭、工作、笔记本电脑、训练营),因此每次我想更改我的
      vimrc
      ,我都可以这样做,我不必担心将其复制到正确的目录或从SVN签出文件或其他任何事情。一切都是自动发生的

      我的实际
      .vimrc
      仅包含加载我的Dropbox中的内容所需的内容。在OSX和Linux上,它如下所示:

      set runtimepath^=~/Dropbox/vim
      source ~/Dropbox/vim/vimrc.vim
      
      set runtimepath^=$HOME/My\ Documents/My\ Dropbox/vim
      source $HOME\My Documents\My Dropbox\vim\vimrc.vim
      
      在Windows上,如下所示:

      set runtimepath^=~/Dropbox/vim
      source ~/Dropbox/vim/vimrc.vim
      
      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只是一个例子。开放源代码服务,如和,但鼓励您在internet上搜索最适合您需要的解决方案。

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

      以下是这样一个项目,易于分叉和扩展:

      它不仅处理vim.rc,还处理所有类型的配置,并附带一个安装脚本。


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

      简而言之,vimcast中提到的内容和我在博客中引用的内容

    • 将您的点文件保存在git中
    • 使用此命令将插件安装为子模块
      git子模块添加捆绑包/逃犯

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


      最适合我的方法是将以下内容放入我的
      .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
      
      BitBucket也是我个人的首选,因为我可以轻松地在线编辑文件,而无需提交任何内容,但您可以将
      .vimrc
      文件存放在任何带有可公开访问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
      
      let$cloudurl='!curl-H“缓存控制:无缓存”--最长时间10https://bitbucket.org//vimrc/raw/master/global -哦$localcloudpath
      
      你为什么说“使用git”而不是简单的“使用你最喜欢的版本控制系统”?git比cvs、svn、Performce等有什么优势吗?为什么要将它们分为不同的系统?当你想做一些普通的改变,而这些改变在你做了巨大的改变之后可能不会很好地融合在一起,这似乎是一种痛苦。您可以在.vimrc中测试系统,并将所有设置放在一个系统中,这在使用新系统时要方便得多,因为您只需要带一个.vimrc就可以了。(比测试系统更好的是测试能力)这正是我所做的。向上投票。(我还保留我的