Карта ключей для бывшей команды в emacs evil-mode

Как в emacs evil-mode связать последовательность клавиш, чтобы она предварительно заполняла командную строку evil-mode ex и позиционировала курсор? В VIM я могу сделать это:

nnoremap g/r :%s//g<left><left>

В emacs я пробовал это (и несколько вариантов):

(define-key evil-normal-state-map "g/" nil)
(define-key evil-normal-state-map (kbd "g/r")
    (lambda () (interactive) (kbd ":%s/")))

Это не имеет никакого эффекта, и я не вижу никаких сообщений после попытки раскладки клавиатуры.

Похоже, в emacs была полезная функция evil-ex-read-command, которая отправляла ввод в командную строку режима зла:

https://github.com/magnars /.emacs.d /BLOB /Master /сайт-шепелявость /зло /зло ex.el # L554

Но эта функция, похоже, больше не доступна.

7 голосов | спросил Justin M. Keyes 7 SatEurope/Moscow2013-12-07T11:30:16+04:00Europe/Moscow12bEurope/MoscowSat, 07 Dec 2013 11:30:16 +0400 2013, 11:30:16

1 ответ


0

Если вы хотите связать комбинацию клавиш

  1. Нажмите и отпустите g
  2. Нажмите и отпустите /
  3. Нажмите и отпустите кнопку

ваша строка в kdb должна быть "g / r".

Emacs не основан на нажатиях клавиш, как vim, но нажатия клавиш являются лишь средством для выполнения функций. Поэтому нажатие k в обычном режиме не приводит к выполнению функции k (как в vim), но self-insert-char. Это означает, что вы не привязываете комбинацию g / r для сопоставления с некоторыми другими нажатиями клавиш, а скорее для вызова произвольной функции. И зло определяет evil-ex , которая делает именно то, что вы хотите (На самом деле это именно та функция, которая вызывается, когда вы нажимаете : в обычном режиме).

Не проверено, но оно должно работать

(define-key evil-normal-state-map (kbd "g / r") (lambda () (evil-ex "%s/")))

ответил CQQL 8 SunEurope/Moscow2013-12-08T03:34:36+04:00Europe/Moscow12bEurope/MoscowSun, 08 Dec 2013 03:34:36 +0400 2013, 03:34:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132