各位 Vim 用户,大家好。
当我用 :w
写一个缓冲区时,我试图执行一个命令.
但是只有当我更改了缓冲区的内容时才应该执行该命令。
我想可能是这样的事情:
autocmd BufWritePost * if modified | echo 'execute command' | endif
我该怎么做?
编辑:
我找到了解决方案
autocmd BufWritePre * if &modified | echo 'execute command' | endif
显然我不能在它前面没有'&'的情况下写修改。
最佳答案
正如您已经发现的那样,您可以检查缓冲区本地 '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>
关于Vim - 写入更改的缓冲区时执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47004041/