• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

自动命令执行只有一次后,许多文件保存(:WA)

vim 来源:Dmitry Frank 5次浏览

我已经在我的插件自动命令的BufWritePost里。 (我更新标签在此自动命令,这是插件Indexer.tar.gz整个项目)自动命令执行只有一次后,许多文件保存(:WA)

有时候我需要保存多个文件(我愿意“:WA”)。当然,我的autocmd被称为每个文件。

我想使它打电话只是毕竟filesaves。比方说,如果我有20个未保存的缓冲区,我这样做:wa,并且在最后一个缓冲区被保存后,我的autocmd被调用一次。 有什么办法可以做到吗?

其实这个插件是足够聪明,它开始在CTAGS背景如果有可能,但无论如何,这是一个有点讨厌。没有自动命令


===========解决方案如下:

方式一:

function! MyFunction() 
    "" Save all buffers. 
    bufdo wa 
    "" Run your command once. 
    ... your command ... 
endfunction 

nnoremap ,wa :call MyFunction()<CR> 

,wa在正常模式(无需冒号)和所有的缓冲区将被保存,以后它会运行命令。

编辑:修改函数返回前一个缓冲区,因为bufdo改变它:

function! MyFunction() 
    "" Save number of current buffer. 
    let l:current_buffer = bufnr("%") 

    "" Save all buffers. 
    bufdo wa 

    "" Bufdo probably changed the buffer, so return to where we were before running previous command. 
    execute "buffer " . l:current_buffer 

    "" Run your command once. 
    ... your command ... 
endfunction 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)