Выделите текстовые диапазоны в Vim - PullRequest
4 голосов
/ 27 октября 2009

Можно ли отметить диапазон текста в Vim и изменить его цвет выделения (на красный), чем выбрать другой диапазон текста и изменить этот цвет (на зеленый), сохранив предыдущий выделение и т. Д.?

Ответы [ 5 ]

13 голосов
/ 28 октября 2009

Базовые вещи для начала:

:hi Green guibg=#33ff33
:syntax region Green start=/\%20l/ end=/\%30l/

Что он делает:

  1. Определить «зеленую» группу выделения с зеленым цветом фона.
  2. Определить область синтаксиса, которая должна быть выделена с помощью группы подсветки «Зеленый», начинающейся со строки № 20 до строки № 30.

Теперь вы можете написать функцию или / и команду, которая берет визуально выбранный текст и применяет к нему одну из нескольких предварительно определенных цветовых групп. Если у вас есть эта функция - привяжите ее к своим клавишам: например, \ g для зеленого, \ r для красного,

Upd:

А вот немного vimscript:

function! HighlightRegion(color)
  hi Green guibg=#77ff77
  hi Red guibg=#ff7777
  let l_start = line("'<")
  let l_end = line("'>") + 1
  execute 'syntax region '.a:color.' start=/\%'.l_start.'l/ end=/\%'.l_end.'l/'
endfunction

vnoremap <leader>g :<C-U>call HighlightRegion('Green')<CR>
vnoremap <leader>r :<C-U>call HighlightRegion('Red')<CR>

Примечание:

Невозможно повторно применить выделение (например, от зеленого к красному).

5 голосов
/ 04 декабря 2009

Я считаю, что плагин Txtfmt - это то, что вы ищете ...

Txtfmt (The Vim Highlighter)

Txtfmt предоставляет возможность «расширенного текста» для простого текста в Vim. Выделение выполняется с помощью скрытых символов маркера, вставляемых непосредственно в буфер, поэтому выделение становится постоянным без необходимости хранить метаданные отдельно от файла.

Txtfmt легко настраивается. Настройки по умолчанию поддерживают 8 (настраиваемых) цветов переднего плана, 8 (настраиваемых) цветов фона и все комбинации атрибутов полужирный, подчеркивание и курсив (например, полужирный, полужирный курсив, полужирный подчеркивание и т. Д.). Конфигурация не по умолчанию поддерживает следующие дополнительные атрибуты: standout, reverse и undercurl.

Существует очень обширный файл справки, и автор более чем рад ответить на вопросы об использовании ...

5 голосов
/ 27 октября 2009

Есть плагин / скрипт с именем mark:

Марк: небольшой скрипт для выделения нескольких слов разными цветами одновременно. Например, когда вы просматриваете большой программный файл, вы можете выделить некоторые ключевые переменные. Это облегчит отслеживание исходного кода.

http://www.vim.org/scripts/script.php?script_id=1238

1 голос
/ 28 октября 2009

Похоже, плагин Mark делает то, что вы хотите. После установки просто сделайте визуальный выбор и нажмите \ m .

0 голосов
/ 27 октября 2009

Я не знаю ни одного способа сделать что-то подобное, так как это потребовало бы хранения метаданных, не связанных с фактическим содержимым файла. Даже если он работает только в памяти, пока работает Vim, я не знаю, как это сделать.

Не значит, что нет пути, так как мои знания о Vim ограничены. Но похоже, что Вим этого не сделает.

...