Макросы IdeaVim не записываются в регистры при наличии команд Emmet - PullRequest
0 голосов
/ 06 февраля 2019

Я использую плагин IdeaVim с Pycharm и был удивлен, увидев, что макросы просто не записывают или не работают, как ожидалось, когда в последовательности команд есть сокращения Emmet.Однако точно такая же вещь прекрасно работает в чистом Vim без проблем.Пожалуйста, смотрите ниже пример

Пример текста:

Text1
Text2
Text3
Text4

Vim :

Я начинаю запись с qq, визуально выберите текущую строку, нажмите C-y,, которая является просто ярлыком для переноса Эммета, введите тег и нажмите enter.Затем я нажимаю j0q и все.Наконец, я проигрываю записанный макрос и получаю результат ниже.

<div class="row"> Text1 </div>
<div class="row"> Text2 </div>
<div class="row"> Text3 </div>
<div class="row"> Text4 </div>

Contents of register q
V,div.row
kkJJj0

IdeaVim :

Я начинаю запись с qq, визуально выбираю текущую строку, нажимаюc-s-, (это мое пользовательское отображение для Emmet wrap), затем в диалоговом окне я набираю div.row, нажимаю enter, затем j0q и макрос записывается.Однако, когда я пытаюсь воспроизвести записанный макрос, ничего не происходит.Далее Если я попытаюсь вставить содержимое регистра q в режиме вставки с помощью C-rq, ничего не будет вставлено.Это вывод, который я получаю в IdeaVim.

<div class="row">Text1</div>
Text2
Text2
Text2

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

Однако, если я записываю макросы без Emmet, они работают просто отлично.Ниже приведен пример, когда он работает, поэтому у меня есть тот же текст сверху

Text2
Text2
Text2

И вот последовательность команд, которую я запускаю V>gv<Esc>A --<Esc>gj0, и я получаю результат ниже.

    Text1 --
    Text2 --
    Text2 --
    Text2 --

Также другие вещи, которые я заметил относительно регистров в IdeaVim.

В режиме вставки и командном режиме мне не удалось вставить содержимое регистров q и a, однако при вставке содержимого s и j регистры работали нормально.Обратите внимание, что я мог обработать содержимое q и a с помощью команды :reg.

Я не смог очистить содержимое любого регистра с помощью команды let @="", которая прекрасно работает в Vim.В Ideavim я получаю сообщение об ошибке: only simple expressions are allowed with let command

Существует также непредвиденное поведение с C-R семейством команд.

<C-R><C-W> не вставляетслово под курсором в командном режиме.

Я думаю, что Pycharm - отличная IDE, но для меня использовать его без IdeaVim практически невозможно, потому что ничто не сравнится с Vim, когда дело доходит до редактирования текста.

...