3

.vimrcエレガントな方法で単一のファイル(ftpluginなし)を使用してVimの動作を変更するにはどうすればよいですか?

私が意味するのは...私がC/C ++ファイルに対して多くの賞賛を実行する場合、例えば:

set nu
set cin
set ai
set mouse=a
color elflord

AsciiDocファイルに対する別の賞賛の束。例:

set syntax=asciidoc
set nocin
set spell spl=en

Python、LaTeXなどについては言及していません...。

すべてのカスタムコマンドの前に 置くための解決策がhttps://stackoverflow.com/a/159065/544721に提示され ています。autocommand

すべてを1つのファイルに保持するために(多くのマシンを移動する場合などに)、autocommand使用せずにそれらをグループ化するための優れた方法はありますか?括弧付きのステートメントと同等のもの?ftplugin.vimrcif{}

4

2 に答える 2

3

セットアップを行うために、おそらくファイルタイプごとの関数を実行します。恥知らずに@Derekをはぎ取る...

function! SetUpLispBuffer()
    set lisp
    set showmatch
    set cpoptions-=m
    set autoindent
endfunction

function! SetUpCBuffer()
    set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
    set tw=80
endfunction

if has("autocmd")
    augroup LISP
        au!
        au BufReadPost *.cl call SetUpLispBuffer()
    augroup END
    augroup C
        au!
        autocmd BufNewFile,BufRead *.{cpp,c,h} call SetUpCBuffer
    augroup END
endif

変更を加えたいときに変更する必要がはるかに少なく、カットアンドペーストもはるかに少なくなります。

于 2012-08-02T23:37:24.883 に答える
3

以下を使用できます。

if has("autocmd")
    augroup LISP
        au!
        au BufReadPost *.cl :set lisp
        au BufReadPost *.cl :set showmatch
        au BufReadPost *.cl :set cpoptions-=m
        au BufReadPost *.cl :set autoindent
    augroup END
    augroup C
        au!
        autocmd BufNewFile,BufRead *.cpp set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.c set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.h set formatprg=c:\\AStyle\\bin\\AStyle.exe\ -A4Sm0pHUk3s4
        autocmd BufNewFile,BufRead *.cpp set tw=80
        autocmd BufNewFile,BufRead *.c set tw=80
        autocmd BufNewFile,BufRead *.h set tw=80
    augroup END
endif

これにより、autocmdセクションで指定されている、開かれているファイルのタイプに応じてコマンドのグループが作成されました。それぞれの前にautocmdまたはauを指定する必要がありますが、それらは適切にグループ化されています。

于 2012-08-02T20:39:39.373 に答える