Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止vim函数中的替换泄漏到所有替换的历史记录中_Vim - Fatal编程技术网

阻止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

我在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文件中。 我注意到,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)