cross-platform - 每个 vimrc 跨平台解决方案的优缺点?

标签 cross-platform vim

.vimrc打交道时Linux 和 Windows 中的配置文件(到目前为止我一直在使用的两个系统)并试图保持跨平台配置,我发现主要有两种解决方案:

  • /home/user 中为 vim 文件创建一个新文件夹, 所以两个系统都有相同的 vim 目录名(而不是默认的 .vim 在 linux 和 vimfiles 在 Windows 中),并使用 set runtimepath获取这个新文件夹;

    设置 runtimepath=~/vim_local,$VIMRUNTIME
    源 ~/vim_local/vimrc

    Source
  • has("32") 中创建一堆操作系统条件(如 .vimrc )需要时,基于平台或capabilities ,但保留原始 unix 名称并在 Windows 主文件夹中创建指向原始文件的符号链接(symbolic link)(vimfiles.vim 某处,可能是 Windows 主目录中的 .vim 目录,甚至是保管箱文件夹)。 (我没有在 XP 等旧 Windows 版本中测试过这种方法)。

  • 您更喜欢哪种解决方案,为什么?每种解决方案的缺点是什么?您还有哪些其他解决方案? (您也可以在这里发布自己的.vimrc 进行讨论。)

    如果您在 .vimrc 中使用了一些源代码控制配置文件,您是否也对您的插件文件进行版本控制(因此,当跨计算机“部署”您的配置时,您只需从您的存储库中进行 check out /克隆)?很多人都在使用pathogen并将每个插件保存在它自己的文件夹中(通常是来自 github 的 git repo)。对已经是其他地方的存储库的插件进行版本控制是否有意义?

    最佳答案

    我使用近似选项 2 的东西,但可能考虑了选项 3。我将所有内容保存在一个名为 ~/.vim 的文件夹中。或 c:\vim\vimfiles .这些由 Bazaar 进行版本控制,并保存在具有 sftp 访问权限的服务器上。在新的 Windows 机器(使用 Bazaar)上安装 vim 时,我把它放在 c:\vim\vim73并做:

    bzr co sftp://<username>@<server>/path/to/vimfiles
    copy vimfiles\vimrc_linker.vim _vimrc
    

    在 Linux 机器上,我这样做:
    cd
    bzr co sftp://<username>@<server>/path/to/vimfiles .vim
    ln -s .vim/vimrc_linker.vim .vimrc
    
    vimrc_linker.vim包含一行:
    runtime vimrc
    

    打开名为 vimrc 的文件存储在 .vim (或 vimfiles 在 Windows 上)。这允许我将我的 vimrc 保持在与 .vim 的其余部分相同的版本控制下。目录。因为我通常在 Windows 上使用 cygwin Bazaar,所以我保留所有带有 unix 行尾的插件以避免兼容性问题(Windows 和 Linux vim 都处理插件中的 unix 行尾,但 Linux 不喜欢 Windows 行尾)。

    版本控制的使用使我可以很容易地使我使用的所有 PC 保持同步,如果我安装了一个插件并且不喜欢它,我可以很容易地恢复更改,而无需考虑安装了哪些文件插件(VCS 告诉我)。

    至于os条件,我用has("win32")等来区分。但是,很少有情况需要这种区分,所以这是一个小的不便。我的 vimrc 有 1000 行长(它有相当多的功能,我从来没有分解成插件),而 has 中只有大约 10-15 行。 block :
  • 字体配置
  • ctags/cscope 的路径,因为我在 vimfiles 中有一个 Windows 可执行文件,以便在无需大量安装的情况下使其在多台 PC 上运行
  • 撤消目录位置
  • 用于最大化 GVim 窗口的映射 ( ,x ):这在 Windows 和 Linux 中以不同的方式完成
  • 在 Windows 上,vimtweak.dll 的一些映射完全全屏显示(没有标题栏或任何东西)。还没有找到 Linux 的等价物。
  • 关于cross-platform - 每个 vimrc 跨平台解决方案的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942783/

    相关文章:

    Mac 上 SQLite 的 java.lang.UnsatisfiedLinkError

    variables - 在vim shell命令中使用变量

    vim:转义字符串以进行替换(vimscript)

    javascript - 制作跨平台应用程序的最佳方式?

    unicode - 是否有任何语言可以正确且完整地实现 Unicode 和跨平台?

    vim - 防止 Vim 记住更改

    vim - 如何在Vim中计算搜索结果?

    vim - 在 ~/.vim 文件夹中合并 vim 文件

    python - Python 是否有使用 native 小部件的跨平台 GUI 工具包?

    c - libsox:从默认麦克风录制