有没有办法通过命令在两个.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
这样做的原因是我希望在编码时使用我的设置,而在写作时使用另一套设置。
实现这一目标的最佳方法是什么?
答案 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