我正在使用Vim脚本。我的一个功能需要一个时间显示,就像输入“:clist ”时所显示的那样。我不想要一个全新的缓冲区,因为我很懒,我更喜欢只键入一个键来删除信息。
我坚持使用echo命令的语法高亮显示。我想应用整个语法文件,但到目前为止我刚看到“:echohl ”,我只能应用一个语法规则。我已经尝试过语法集群,但这也不起作用。
是“:echohl ”并且语法聚合正确的方法吗?
答案 0 :(得分:1)
我不确定你是否会设法用echo和消息列表来做这件事。
解决这个问题的一个好方法是创建一个新的缓冲区并将你感兴趣的东西放入缓冲区。然后将缓冲区设置为nomodifiable
,nomodified
和buftype=wipe
。如果您需要向缓冲区set modifiable
添加更多数据,请添加数据,然后添加set noma nomod bh=wipe
。将文件类型设置为自定义类型,并为所需语法编写语法文件。
将缓冲区名称设置为特定于您的要求的内容。
最后,将键盘快捷键或命令映射到类似:
map @ :exe 'bufdelete' bufnr('MyBufferName')<CR>
这将使 @ 键关闭缓冲区(从而为您提供删除信息的单键方法)。当然,您可以通过将其粘贴到函数中并在删除之前检查缓冲区是否存在来改进这一点,但我现在将其作为练习留给您(如果您有任何问题,请告诉我)。
现有的插件与Dr Chip's RunView plugin非常相似。看看源代码,看看它是否有帮助。如果您需要更多帮助,请在此帖子中添加评论。