2014-02-11 65 views
3

有沒有辦法通過命令在兩個.vimrc設置之間切換?使用命令在兩個.virmc設置之間切換?

說我有我的vimrc:

* Settings 1 
    setlocal formatoptions=1 
    setlocal noexpandtab 
    map j gj 
    map k gk 

    * Settings 2 
    setlocal formatoptions=2 
    map h gj 
    map l gk 

而且我希望能夠設置1和2之間變化,說通過鍵入:S1:S2

這樣做的原因是,我想有我使用的設置,而編碼和另一組,而寫作。

完成此操作的最佳方法是什麼?

回答

6

您可以使用:h :command創建:S1:S2命令。將這些命令鍵入功能並確保設置互相取消。例如...

command! S1 call Settings1() 
command! S2 call Settings2() 

fun! Settings1() 
    setlocal formatoptions=1 
    setlocal noexpandtab 
    silent! unmap <buffer> h 
    silent! unmap <buffer> l 
    nnoremap j gj 
    nnoremap k gk 
endfun 

fun! Settings2() 
    setlocal formatoptions=2 
    setlocal expandtab 
    silent! unmap <buffer> j 
    silent! unmap <buffer> k 
    nnoremap h gj 
    nnoremap l gk 
endfun 

如果你不想進行設置抵消,最簡單的解決方案可能是重新啓動VIM有不同的配置文件。您還可以使用set option!切換選項,並使用mapclear命令清除映射。但是,您必須針對無法切換的選項(如formatoptions)進行特定設置。您可以使用set option&將它們重置爲默認值。

但是,您可以將所有選項重置爲默認值:set all&。例如,使用此功能,您可以撥打Settings1()致電:set all&source $MYVIMRC。然後Settings2()也可以調用它們,然後設置各種選項。例如...

" tons of settings 

command! S1 call Settings1() 
command! S2 call Settings2() 

fun! Settings1() 
    set all& 
    mapclear 
    source $MYVIMRC 
endfun 

fun! Settings2() 
    set all& 
    mapclear 
    setlocal formatoptions=2 
    setlocal expandtab 
    nnoremap h gj 
    nnoremap l gk 
endfun 
+0

謝謝!有沒有辦法取消功能而不是個人設置?因爲我的編碼設置太多了,我不得不尋找每一個,並找出如何逐個取消它。 – alexchenco

+0

我不知道沒有重新啓動vim的簡單方法,但我更新了答案以反映這一點。 – Conner

+0

非常感謝!我會試試這個。我想知道colorcheme會發生什麼,我認爲它不會改變? – alexchenco