你好伙伴Vim用户。
我在写:w
的缓冲区时尝试执行命令。
但是只有在我改变了缓冲区的内容时才能执行该命令。
我认为这样的事情可能是:
autocmd BufWritePost * if modified | echo 'execute command' | endif
我该怎么做?
修改
我找到了解决方案
autocmd BufWritePre * if &modified | echo 'execute command' | endif
如果没有'&'在它前面。
答案 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>