Специальные атомы регулярного выражения \%^
(:help start-of-file
) и \%$
(:help end-of-file
) помогут здесь.С их помощью вы можете сопоставлять пустые строки на границах буфера, например:
call matchadd('EmptyLines', '\%^\n\+')
call matchadd('EmptyLines', '^\n\+\%$')
К сожалению, существуют некоторые ограничения :
- Выможет совпадать только с тем, что там есть, чего не так много в пустых строках.Vim просто выделит одну ячейку шириной (которая представляет символ новой строки).
- В самой последней строке ничего не выделяется вообще.Если вы хотите увидеть какой-либо признак единственной пустой последней строки, вы можете удалить
^
из шаблона.Затем пустая конечная строка будет указана выделением перед этой строкой.
Варианты реализации
Используя :help signs
, вы можете выделить полную ширинупустые строки и имеют дополнительное указание в знаковой колонке .Недостатком является то, что вы не можете просто определить шаблон для знаков.Вы должны явно разместить их в определенных строках и адаптировать эту позицию при каждом изменении содержимого буфера.Это будет означать определение некоторых :autocmd
с и жить с низкой производительностью или принимать короткие задержки до обновления знаков.(Они предназначены для обозначения ошибок сборки, которые меняются не так часто и только по требованию.)
Вместо визуальной индикации, если ваша цель - избежать пустых ошибоклиний, вы также можете подключиться к событию BufWrite
и либо напечатать предупреждение, либо полностью прервать :write
, если такие строки найдены.Мой плагин DeleteTrailingWhitespace делает это (но для пробелов в конце отдельных строк).