如果没有 Pathogen,你的单文件脚本应该放在这里:
~/.vim/plugin/stab.vim
使用 Pathogen 或 Vundle,您应该像这样安装它:
~/.vim/bundle/stab/plugin/stab.vim
由于 Vim 加载插件的方式,执行Stab
时命令将不可用~/.vimrc
,但是,由于它的交互性,我不确定Stab
每次启动 Vim 时执行命令是否是个好主意。
但是,可以对其进行修改,使其能够以非交互方式运行,例如使用全局变量或自动加载……但在这一点上,它的工作方式与您的相关选项听起来~/.vimrc
不一样对我来说很实用。而且比较浪费。
无论如何,以下(快速)版本可以从您的~/.vimrc
. :Stab
如果您想以交互方式执行它,您仍然可以使用它。
为此,您必须在此处安装脚本:
~/.vim/autoload/stab.vim
并将这一行添加到您的~/.vimrc
:
call stab#stab(4, 1)
第一个参数是你想要shiftwidth
的,第二个参数是一个布尔值:0
如果你不想expandtab
,1
如果你想要expandtab
。确保这一行出现在任何缩进设置之后。
修改后的脚本:
if exists("g:loaded_stab") || &cp
finish
endif
let g:loaded_stab = 1
command! -nargs=* Stab call stab#stab(<f-args>)
function! stab#stab(...)
if a:0 > 0
let l:tabstop = 1 * a:1
else
let l:tabstop = 1 * input('set shiftwidth=')
endif
if l:tabstop > 0
" do we want expandtab as well?
if a:0 > 1
let l:expandtab = a:2
else
let l:expandtab = confirm('set expandtab?', "&Yes\n&No\n&Cancel")
endif
if l:expandtab == 3
" abort?
return
endif
let &l:sts = l:tabstop
let &l:ts = l:tabstop
let &l:sw = l:tabstop
if l:expandtab == 1
setlocal expandtab
else
setlocal noexpandtab
endif
endif
" show the selected options
try
echohl ModeMsg
echon 'set tabstop='
echohl Question
echon &l:ts
echohl ModeMsg
echon ' shiftwidth='
echohl Question
echon &l:sw
echohl ModeMsg
echon ' sts='
echohl Question
echon &l:sts . ' ' . (&l:et ? ' ' : 'no')
echohl ModeMsg
echon 'expandtab'
finally
echohl None
endtry
endfunction