Ключевые повторы и диапазоны в отображениях Vim - PullRequest
1 голос
/ 14 января 2010

Я хочу определить отображение в моем .gvimrc так, чтобы, если удерживалась последняя нажатая клавиша, запускаемое действие повторялось. В частности, я хочу сделать что-то вроде

map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1

для MacVim, но я хочу, чтобы прозрачность продолжала уменьшаться / увеличиваться при удерживании t / T (не нужно нажимать пробел).

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

Отдельно было бы неплохо иметь возможность набирать 20 SPACE t и уменьшать прозрачность на 20; однако, когда я пытаюсь, я получаю

E481: No range allowed.

Как включить указание диапазона?

Большое спасибо.

1 Ответ

6 голосов
/ 14 января 2010

Я не уверен насчет первой части вашего вопроса, но чтобы получить 20 <Space> t , чтобы выполнить свою работу:

:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
  • С помощью <C-U> вы удаляете диапазон строк, который добавляется к вашей бывшей команде, когда вы набираете 20 в обычном режиме.
  • С помощью exe вы выполняете динамический vimscript.
  • v:count1 - количество, указанное для последней команды нормального режима (в данном примере - 20). А если счет не указан, по умолчанию он равен 1.

Для получения дополнительной информации см.

:h v:count
:h v:count1

Обновление:

Вы можете опустить exe, используя let форму вместо set one:

:map <space>t :<C-U>let &transparency-=v:count1<CR>

См. :h :let-&.

...