Pathogen がない場合、単一ファイルのスクリプトは次の場所に配置する必要があります。
~/.vim/plugin/stab.vim
Pathogen または Vundle では、次のようにインストールする必要があります。
~/.vim/bundle/stab/plugin/stab.vim
Vim がプラグインをロードする方法が原因で、コマンドを実行してもコマンドStab
を使用できませんが、そのインタラクティブな性質のために、 Vim を起動するたびにコマンド~/.vimrc
を実行するのは良い考えではありません。Stab
ただし、グローバル変数やオートロードなどを使用して、非対話的に実行できるように変更することは可能です...~/.vimrc
それは私にとって実用的です。そして比較的無駄。
とにかく、次の(クイック)バージョンを使用すると、スクリプトを非対話的に実行できます~/.vimrc
. :Stab
インタラクティブに実行したい場合は、引き続き使用できます。
これを機能させるには、スクリプトを次の場所にインストールする必要があります。
~/.vim/autoload/stab.vim
次の行をに追加します~/.vimrc
。
call stab#stab(4, 1)
最初の引数は希望するshiftwidth
もので、2 番目の引数はブール値です: 0
if you don"t want expandtab
, 1
if you want 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