Vim - 写入更改的缓冲区时执行命令

时间:2017-10-29 18:56:20

标签: vim command buffer execute

你好伙伴Vim用户。

我在写:w的缓冲区时尝试执行命令。 但是只有在我改变了缓冲区的内容时才能执行该命令。

我认为这样的事情可能是:

autocmd BufWritePost * if modified | echo 'execute command' | endif

我该怎么做?

修改

我找到了解决方案

autocmd BufWritePre * if &modified | echo 'execute command' | endif

如果没有'&'在它前面。

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,您可以检查缓冲区本地'modified'标志。对于语法,需要在选项名称前添加&

或者,如果使用:update命令而不是:write,则缓冲区将仅保留(并且触发autocmd),其中存在实际更改;对于未更改的缓冲区,此命令是无操作。

许多用户的映射类似于:

nnoremap <C-S>      :<C-U>update<CR>
vnoremap <C-S>      :<C-U>update<CR>gv
inoremap <C-S>      <C-O>:update<CR>