Как задать цвет только для результата отображения функции vim?

#vim #neovim

Вопрос:

У меня есть это на моем vimrc:

 nmap <F3> i<C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR>
 

Когда я нажимаю F3 в редакторе vim, он возвращает что-то вроде даты и времени.
Но я не знаю, как я могу установить для этого другой цвет.

Я нашел некоторые другие функции, которые, кажется, делают это на https://manpages.debian.org но я не знаю наверняка… Есть идеи?

Комментарии:

1. Цвет? Но сопоставления просто вставляют текст в буфер, он ничем не отличается от того, если бы вы набрали его самостоятельно.

Ответ №1:

Функция, которую вы вызываете в своем сопоставлении, не является внешней функцией/командой/чем угодно: это функция Vim, которая возвращает только обычный текст без какой-либо информации о выделении.

Это имеет два последствия:

  • все справочные страницы, которые вы найдете на этом сайте, не имеют отношения к делу,
  • вам придется справиться с этим выделением самостоятельно, в Vim, вне этих сопоставлений.

Во-первых, вы могли бы немного упростить свою пару сопоставлений:

 inoremap <F3> <C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR>
nmap <F3> i<F3><Esc>
 

Во-вторых: если это одноразовый выстрел, вам может сойти с рук что-то вроде следующего:

 :match Directory /d{4}-w{3}-d{2}-d{2}sd{2}:d{2}sd{2}:d{2}/
 

который соответствует дате, возвращенной вашим :help strftime() звонком, и назначает ее Directory группе выделения по умолчанию (это первое, что пришло на ум):

введите описание изображения здесь

Видеть :help :match .

В-третьих, если вы хотите, чтобы это было автоматически, вам придется немного углубиться в подсветку синтаксиса, которая состоит из двух этапов:

  1. вы определяете синтаксические группы с помощью :help syntax ,
  2. вы применяете визуальные атрибуты к этим группам с :help :highlight помощью .

Предполагая , что вы хотите, чтобы это происходило в буферах с типом foo файла, вы можете создать ~/.vim/after/syntax/foo.vim место, где вы можете определить свою собственную группу синтаксиса:

 syntax match MyDate /d{4}-w{3}-d{2}-d{2}sd{2}:d{2}sd{2}:d{2}/
 

и свяжите его с группой по умолчанию:

 highlight link MyDate Directory
 

Если вы предпочитаете самостоятельно обрабатывать визуальные атрибуты этой конкретной группы подсветки, вы можете следовать методу, описанному в этой статье.