5

私は次の素晴らしい山をまとめました:

if !exists("g:AsciidocAutoSave")
  let g:AsciidocAutoSave = 0
endif

fun! AsciidocRefresh()
  if g:AsciidocAutoSave == 1
    execute 'write'
    execute 'silent !asciidoc -b html5 -a icons "%"'
  endif
endf

fun! AsciidocFocusLost()
  augroup asciidocFocusLost
    autocmd FocusLost <buffer> call AsciidocRefresh()
  augroup END
endfun

augroup asciidocFileType
  autocmd FileType asciidoc :call AsciidocFocusLost()
augroup END

asciidoc唯一の問題は、ファイル内で vim がフォーカスを失うたびに 2 回保存されることです。

:autocmd asciidocFileTypeコマンドラインに入力すると、次のように表示されます。

---Auto-Commands---
asciidocFileType  FileType
    asciidoc   :call AsciidocFocusLost()
               :call AsciidocFocusLost()

:autocmd asciidocFocusLostとも同様AsciidocRefresh()です。

なぜこの重複?

4

2 に答える 2

5

なぜこれらの重複を取得したのかはわかりませんが (複数のソースですか?)、これを防ぐための標準的な方法はaugroup最初のものをクリアすることです:

augroup asciidocFileType
    autocmd!
    autocmd FileType asciidoc :call AsciidocFocusLost()
augroup END

定義が 1 つしかないため、これを 1 つのコマンドで実行することもできます。

augroup asciidocFileType
    autocmd! FileType asciidoc :call AsciidocFocusLost()
augroup END
于 2013-04-24T16:08:56.943 に答える