阻止vim函数中的替换泄漏到所有替换的历史记录中
我在vim中设置了一个预缓冲区写入挂钩,在将缓冲区的内容保存到文件之前进行一些小的调整阻止vim函数中的替换泄漏到所有替换的历史记录中,vim,Vim,我在vim中设置了一个预缓冲区写入挂钩,在将缓冲区的内容保存到文件之前进行一些小的调整 if !exists("autocommands_loaded") let autocommands_loaded = 1 autocmd BufWritePre *.php call TidyUpFormatting() endif func! TidyUpFormatting() let save_cursor = getpos('.') %s/\s\+$//ge
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文件中。
我注意到,TidyupFormat中的这些替换显示在所有替换的历史记录中——例如,如果我向上滚动我手动完成的替换列表,它们就在那里
是否有一个标志可以使用,或者确实是某种更好的方法来实现这一点,以便这些替换不会“泄漏”?我需要用“静默”命令作为替换命令的前缀,将TIDYUPFormat函数更改为:
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
函数内部
:替换的搜索模式确实会污染搜索历史记录(对于整个函数一次,而不是每个:s
)。您可以通过在函数末尾添加以下内容来解决此问题:
:call histdel('search', -1)