2016-12-18 2 views
0

Есть ли событие autocmd в vim, вызванное путем ввода за пределами указанной колонки? Я не могу найти нужное мероприятие. Если событие не существует, можете ли я настроить событие autocmd? Я хочу выполнить команду Когда мой входной символ превышает указанный номер столбца.Есть ли событие autocmd в vim, вызванное путем ввода символа, превышающего указанный номер столбца?

Эта команда :match Underlined /.\%>81v/ может указывать стиль символов за пределами 81, и теперь я хочу запустить команду вместо изменения стиля.

+0

О, я пробую это сам, и он работает, наконец, хотя он может быть неэффективным. – Sword

+0

пример: autocmd CursorMovedI * if col ('.') == 82 | exec "MyFun" | endif – Sword

+0

Какую функцию вы хотите запустить? – romainl

ответ

0

CursorMovedI события запускается в режиме вставки всякий раз, когда курсор перемещается (из-за ввод, движение и т.д.) текущий столбец экрана может быть запрошен с помощью virtcol('.'); функция col('.') возвращает индекс байта , который отличается при наличии вкладок, символов двойной ширины или любого символа, отличного от ASCII. Таким образом, вы можете вызвать пользовательскую функцию с помощью

:autocmd CursorMovedI * if virtcol('.') > 80 | ... | endif 

Однако, если вы только после того, как автоматически вставляя разрыв строки после определенного столбца, что функциональность встроена в систему. См :help 'textwidth' (альтернативно 'wrapmargin') и :help fo-table. После 80 столбцов текст текста будет прерван:

:set textwidth=80 formatoptions+=t 

 Смежные вопросы

  • Нет связанных вопросов^_^