使用命令在两个.virmc设置之间切换?

时间:2014-02-11 05:28:57

标签: vim

有没有办法通过命令在两个.vimrc设置之间切换?

说我的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

这样做的原因是我希望在编码时使用我的设置,而在写作时使用另一套设置。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

您可以使用:S1创建:S2:h :command命令。在功能中键入这些命令,并确保设置相互抵消。例如......

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