2010-10-15 89 views
14

當在Linux和Windows(兩個系統我一直使用至今).vimrc配置文件,並試圖保持配置的跨平臺打交道,我發現主要有兩種解決方案:每種vimrc跨平臺解決方案的優缺點?

  1. 創建一個新的文件夾爲/home/user,因此兩個系統都具有相同的vim dirname(而不是Linux中的默認.vim和Windows中的vimfiles),並使用set runtimepath來獲取此新文件夾;

    組runtimepath =〜/ vim_local,$ VIMRUNTIME 源〜/ vim_local /的vimrc

    Source

  2. 在需要時,基於平臺或capabilities創建.vimrc一堆OS條件(如has("32")) ,但保留原始的unix名稱並在Windows home文件夾中創建符號鏈接到原始文件(vimfiles.vim某處,可能是在Windows家中的.vim目錄,甚至是Dropbox文件夾)。 (我還沒有在舊版Windows XP中測試過這種方法)。

您更喜歡哪種解決方案?爲什麼?每種解決方案有哪些缺點?你有哪些其他解決方案? (你可以發佈自己的.vimrc這裏也討論。)

如果您使用您的.vimrc配置文件的一些源代碼控制,你版本的插件文件,以及(所以當「部署」跨計算機的配置,你只從你的倉庫中做結帳/克隆)?很多人使用pathogen並將每個插件保存在自己的文件夾中(通常是github的git repo)。版本控制插件是否已經是其他地方的存儲庫?

回答

8

我使用了一些近似於選項2的東西,但可能考慮了選項3.我將所有內容都放在一個名爲~/.vimc:\vim\vimfiles的文件夾中。這些版本受Bazaar控制,並通過sftp訪問保存在服務器上。當一個新的Windows機器上安裝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 

它打開存儲在.vim(或Windows上的vimfiles)中的名爲vimrc的文件。這使我可以將我的vimrc保持在與.vim目錄其餘部分相同的版本控制下。由於我通常在Windows上使用cygwin Bazaar,因此我將所有插件保留爲unix行結尾,以避免兼容性問題(Linux vims在插件中處理unix行結尾,但Linux不喜歡Windows行結尾)。

版本控制的使用允許我保持所有我非常容易同步使用的PC,如果我安裝了一個插件並且不喜歡它,我可以很容易地恢復更改,而無需考慮哪些文件由該插件安裝(VCS告訴我)。

至於os條件,我用has("win32")等來區分。但是,很少有需要這種差異的情況,所以這是一個小小的不便。我的vimrc是1000線長(有,我從來沒有得到全面分裂伸到插件相當多的功能),只有約10-15是has塊內部:

  • 字體配置
  • 路徑到的ctags/cscope的,因爲我有在vimfiles一個Windows可執行文件,便於得到它在多臺PC的工作沒有大量的安裝
  • 撤消目錄位置的
  • 一種最大化的GVim窗口映射(,x):這是不同的做法在Windows & Linux
  • 在Windows上,vimtweak.dll的某些映射完全全屏(無標題欄或任何內容)。還沒有找到一個相當於Linux的。
+0

感謝您分享您的設置。這裏有一些有趣的方法。 – 2010-10-15 14:25:56

+0

我使用相同的方法,它工作得很好。 – 2010-10-17 23:00:15

6

我把這個在我的.vimrc

set runtimepath^=~/.vim "Use instead of "vimfiles" on windows 

所以vim的目錄名保持兩個平臺上。我可以使用os的條件只在Windows上運行。

我發現最好是儘可能unixy,即使在windows上也是如此。我默認情況下使用UNIX行結束(你不想在VIM配置一個CR,尤其是):

set fileformats=unix,dos,mac 

和平臺的具體字體:

set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12 
我還使用版本

控制(git/github)爲我的主目錄中的dotfiles/config/etc,並且它工作得很好。唯一的技巧是正確設置被忽略的文件,這樣我就不會經常被告知我不想版本的所有文件(我不得不使用.git/info/exclude,因爲home文件夾中的.gitignore有特殊含義)。

+1

「我發現最好儘可能地使用unixy,即使在windows上也是如此。」有趣的方法,這也是我的想法。 – 2010-10-15 16:15:08

+1

最好預先加上「〜/ .vim」,否則「call pathogen#helptags()」在查找doc目錄(給定一個空/過時〜/ vimfiles/doc)時會失敗。 – blueyed 2010-12-01 10:59:52

+0

@blueyed,謝謝。修復(在問題和我的本地配置) – 2010-12-03 15:46:14