gpt4 book ai didi

vim - 自动命令在保存多个文件后仅执行一次 (:wa )

转载 作者:行者123 更新时间:2023-12-01 05:36:07 25 4
gpt4 key购买 nike

我的插件中有用于 BufWritePost 的 autocmd。 (我在此自动命令中更新整个项目的标签,这是插件 Indexer.tar.gz )

有时我需要保存很多文件(我做 ":wa")。而且,当然,每个文件保存都会调用我的 autocmd。

我想在所有文件保存后调用它。比如说,如果我有 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

关于vim - 自动命令在保存多个文件后仅执行一次 (:wa ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com