2015-07-13 4 views
1

Я ищу способ сделать привязку vim, где я могу ввести управление C (одновременно одновременно клавиши управления и c), затем другой вариант (simmillar . к yy или dd, например, Ctrl + C, то 1 будет установлен так, что функция я определяю, называется мой FUNC, будет называться так: myfunc(1)vim привязка клавиш к функции вызова: control + c then 1

Вот моя попытка до сих пор: map <C-A> <F1>:call myfunc(1)<CR>

ответ

3

Вы можете сделать это с несколькими поправками:

  • Ctrl - c используется для сигналов прерывания; выберите другую комбинацию клавиш, такую ​​как <Leader>c
  • Это намного проще сделать, чем считать аргументы; то есть вызвать сочетание клавиш с \с, а не с \с
  • Функции пользователя должны иметь имена, начинающиеся с заглавных букв.

С этими нотами, вы можете сделать это следующим образом:

nnoremap <silent> <Leader>c :<C-u>call MyFunc(v:count)<CR> 

v:count это предопределенная переменная, которая принимает значение счетчика переданному последней команды нормального режима, или 0, если не было нет счетчика. Также есть v:count1, который делает то же самое, за исключением того, что по умолчанию он равен 1, если счетчик не был.

+0

Каково значение ''? У меня проблемы с этой работой. Вы видите что-то не так с 'noremap : call Myfunc (v: count) '? Я установил этот способ, но не могу получить доступ к функции с помощью ctrl + a .... – kilojoules

+1

Да, ваша карта неверна. '' необходимо, он удаляет счет после ':'. '' является ключом для сигнала остановки, вы не сможете его сопоставить. '' добавляет счет к символу под курсором. Вероятно, вы могли бы отобразить его, если вы действительно настроены, но не должны. Есть очень мало клавиш Ctrl, которые уже не делают что-то важное. _shrug_ – lcd047