2

バッファの内容がファイルに保存される前に、いくつかの小さな調整を行うpre-buffer書き込みフックをvimに設定しています。

if !exists("autocommands_loaded")
    let autocommands_loaded = 1
    autocmd BufWritePre *.php call TidyUpFormatting()
endif

func! TidyUpFormatting()
    let save_cursor = getpos('.')
    %s/\s\+$//ge
    %s/\($\n\s*\)\+\%$//ge
    %s/var_dump /var_dump/ge 
    %s/){/) {/ge
    %s/( /(/ge
    %s/if(/if (/ge
    %s/while(/while (/ge
    call setpos('.', save_cursor)
endfunction

これは私のftplugin/php.vimファイルにあります。TidyUpFormattingのこれらの置換は、すべての置換の履歴に表示されることに気づきました。たとえば、手動で行った置換のリストを上にスクロールすると、そこにあります。

これらの置換が「漏れ」ないようにするために、これを行うために使用できるフラグ、または実際にいくつかのより良い方法はありますか?

4

2 に答える 2

3

関数内からの検索パターンは:substitution、実際に検索履歴を汚染します (関数ごとではなく、関数全体に対して 1:s)。関数の最後にこれを追加することで、これを修正できます。

:call histdel('search', -1)
于 2013-03-16T16:03:29.717 に答える
0

TidyUpFormatting 関数を次のように変更して、置換コマンドの前に「silent」コマンドを付ける必要がありました。

func! TidyUpFormatting()
    let save_cursor = getpos('.')
    silent! %s/\s\+$//ge
    silent! %s/\($\n\s*\)\+\%$//ge
    silent! %s/var_dump /var_dump/ge 
    silent! %s/){/) {/ge
    silent! %s/( /(/ge
    silent! %s/if(/if (/ge
    silent! %s/while(/while (/ge
    call setpos('.', save_cursor)
endfunction
于 2013-03-16T15:03:47.823 に答える