Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim缓冲区已修改_Vim_Buffer_Autocmd - Fatal编程技术网

Vim缓冲区已修改

Vim缓冲区已修改,vim,buffer,autocmd,Vim,Buffer,Autocmd,我试图在Vim中实现一个AutoCmd,当修改当前缓冲区时需要执行该命令 我已经阅读了文档中有关AutoCmd的所有可用事件,但找不到有助于确定何时修改缓冲区的内容 这并不一定意味着“写入缓冲区时”,因为需要在修改缓冲区(包括写入缓冲区)时调用我需要触发的操作 关于如何实现这一目标的BUFIS修改有什么想法吗 注意:不是的副本,因为这个问题是关于一个autocmd的,而不仅仅是缓冲区修改检查我想到的唯一一件事就是使用CursorMoved和CursorMovedI事件 HTH在我听来似乎是可行的

我试图在Vim中实现一个
AutoCmd
,当修改当前缓冲区时需要执行该命令

我已经阅读了文档中有关
AutoCmd
的所有可用事件,但找不到有助于确定何时修改缓冲区的内容

这并不一定意味着“写入缓冲区时”,因为需要在修改缓冲区(包括写入缓冲区)时调用我需要触发的操作

关于如何实现这一目标的
BUFIS修改
有什么想法吗


注意:不是的副本,因为这个问题是关于一个
autocmd
的,而不仅仅是缓冲区修改检查我想到的唯一一件事就是使用
CursorMoved
CursorMovedI
事件


HTH

在我听来似乎是可行的,在事件函数中测试
&modified
vim变量,如果未更改,则为0;如果上次写入磁盘后发生更改,则为1。您可以运行一系列Ex命令来完全转换缓冲区,而无需移动光标或进入插入模式。我愿意使用Ex命令进行折衷。答案加上赫伯特的评论符合我的要求。谢谢@直觉:您所描述的情况可能被认为是罕见的,修改缓冲区的EX命令很可能也会导致光标移动。可能的重复:这很奇怪,如果先问这个问题,为什么这个问题会重复另一个问题?什么重复?我怎样才能成为一名汽车司机?(我来这里的原因…)实际解决方案:让modified=getbufvar(bufname(“%”),“&mod”)@Robert Harvey这不是链接问题的重复。