The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Отображение табуляций и выхода стро..."
Отправлено auto_tips, 21-Май-09 17:09 
Большинство программистов согласятся, что строчки кода должны быть короче 80 символов. Часто это просто хороший тон:
читаем Linux Kernel Coding Style (80) , Style Guide for Python code (79), Good Haskell Style (79),
Ruby Coding Conventions (80), Google C++ Style Guide (80)...

Практический вопрос: а как в Vim увидеть, что строка стала длиннее 80 символов? Это может быть очень полезно,
если ширина окна больше 80. Простой и дубовый способ: 80| и курсор перемещается на 80-ю колонку.

Проверять так каждую строку или включить автоматический перенос (set tw=80) не всегда удобно.

Более элегантный выход - подсвечивать всё, что вылазит за 80-ю колонку. Ниже несколько рецептов.

Включить подсветку вручную:

   :match ErrorMsg '\%>80v.\+'

Чтобы включать подсветку автоматически, каждый раз при открытии буфера, в ~/.vimrc помещаем:

   :au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1)
   :au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)

Должно работать в Vim после 7.1.40. При этом последние 4 символа до 80-й колонки будут предупреждающе
подсвечиваться "поиском", а все, что после 80-й — "ошибкой".

Подвечивать только 81-ый символ и кривые пробелы/табы:

   :match BadFormat /\s\+$\|\ \+\t\| \{8,}\|\%81v/


Другая проблема для исходного кода - концевые пробелы (trailing whitespace) и смешанные с пробелами табуляции.
Для их подсветки в ~/.vimrc можно добавить:

   " highlight trailing spaces
   au BufNewFile,BufRead * let b:mtrailingws=matchadd('ErrorMsg', '\s\+$', -1)
   " highlight tabs between spaces
   au BufNewFile,BufRead * let b:mtabbeforesp=matchadd('ErrorMsg', '\v(\t+)\ze( +)', -1)
   au BufNewFile,BufRead * let b:mtabaftersp=matchadd('ErrorMsg', '\v( +)\zs(\t+)', -1)

Первое включает подсветку любых пробелов на конце строки.
Второе и третье подсвечивают табуляции, перед которыми или после которых есть пробелы.
Вместо "*" можно явно прописать типы файлов, для которых это должно работать.


URL: http://sovety.blogspot.com/2009/05/show-lines-longer-than-80... http://sovety.blogspot.com/2009/05/highlight-trailing-whites...
Обсуждается: https://www.opennet.ru/tips/info/2073.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру