Gvim, Использование регистров в команде

Я хочу использовать значение регистров в командной строке и в функции в GVIM.

В частности, моя цель — упростить выделение файла журнала на лету. Я хочу иметь возможность выделить с помощью простой команды выбранную строку, например * touch do.

В настоящее время у меня есть эта строка в моем vimrc

hi Hi1 guifg=#FFD000
hi Hi2 guifg=#FA0020
hi Hi3 guifg=#A5BB00

Для хайлайта пишу в командной строке:

:syntax match Hi1 /MON_STRING/

и я получаю то, что хочу. Я хотел бы иметь команду типа

noremap ,H1 :syntax math Hi1 "0

сделать то же самое проще, но я не нашел правильного способа написать "0

Есть идеи?

РЕДАКТИРОВАТЬ => Благодаря ответу я создаю функцию, которую искал:

let g:hicounter = 0
function TT(incr)
   if a:incr == 1
      let g:hicounter = g:hicounter + 1 
      let g:hicounter = g:hicounter % 18
   endif
    :exec 'syntax match Hi' . g:hicounter .'  /'.@/.'/'
    :echo "falue de incr a:incr " . a:incr . " :let  g:hicounter ="
endfunction

noremap <F3> *#:call TT(1)<CR>
noremap <s-F3> *#:call TT(0)<CR>

person Gvim-Louu    schedule 06.12.2013    source источник


Ответы (2)


используйте 1_

:exec 'your command'.@x
  • x это рег
  • . объединение строк cmd
person Kent    schedule 06.12.2013

Ваш подход использует :syntax match; это может мешать существующему синтаксису (поэтому иногда ваше выделение не будет соответствовать существующему синтаксису или мешает существующему синтаксису правильно выделить файл). Для более надежной подсветки лучше использовать :match / matchadd() (но сложнее в управлении).

Если вы хотите установить плагин, мой плагин Mark предоставляет это функциональность. (На странице плагина есть ссылки на альтернативные плагины.)

person Ingo Karkat    schedule 06.12.2013