是否通过输入超过指定列号的字符触发了vim中的autocmd事件?

时间:2016-12-18 05:26:28

标签: vim

autocmd中是否有vim的事件是由指定列以外的输入触发的? 我无法找到我需要的活动。 如果事件不存在,我可以自定义autocmd的事件吗? 我想执行一个命令当我的输入字符超过指定的列号时。

此命令:match Underlined /.\%>81v/可以指定81以外的字符样式,现在我想运行命令而不是更改样式。

1 个答案:

答案 0 :(得分:1)

当光标移动时(由于键入,移动等),在插入模式中触发CursorMovedI事件。可以通过virtcol('.')查询当前屏幕列; col('.')函数返回字节索引,当有制表符,双宽字符或任何非ASCII字符时,它会有所不同。 因此,您可以通过

触发自定义功能
:autocmd CursorMovedI * if virtcol('.') > 80 | ... | endif

但是,如果您在某个列之后自动插入换行符之后,则会内置该功能。请参阅:help 'textwidth'(或'wrapmargin'}和:help fo-table。以下内容将在80列之后中断文本:

:set textwidth=80 formatoptions+=t