Я использую плагин 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, когда дело доходит до редактирования текста.