我正在将IdeaVim插件与Pycharm一起使用,并惊讶地发现当命令序列中有Emmet缩写时,宏根本无法按预期进行记录或工作。但是,完全相同的事情在纯Vim中也可以正常工作而没有任何问题。请参见下面的示例
原始示例文本:
Text1
Text2
Text3
Text4
Vim :
我从qq
开始记录,直观地选择当前行,按C-y,
,这只是Emmet包装的快捷方式,键入标签并按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
,按{{ 1}},然后记录enter
和宏。但是,当我尝试播放录制的宏时,什么也没有发生。此外,如果我尝试在插入模式下使用j0q
粘贴寄存器q
的内容,则不会粘贴任何内容。这是我在IdeaVim中得到的输出。
C-rq
我知道我可以仅使用Emmet即可完成此任务,甚至不需要宏,但我只是想强调一下这一点,因为宏对于各种复杂的任务确实非常有用。
但是,如果我录制没有Emmet的宏,它们就可以正常工作。所以下面是一个可行的例子,所以我上面有相同的文字
<div class="row">Text1</div>
Text2
Text2
Text2
这是我运行Text2
Text2
Text2
的命令序列,但得到的结果却不足。
V>gv<Esc>A --<Esc>gj0
我还注意到了有关IdeaVim中寄存器的其他信息。
在插入和命令模式下,我无法粘贴 Text1 --
Text2 --
Text2 --
Text2 --
和q
寄存器的内容,但是粘贴a
和s
寄存器的内容效果很好。请注意,我可以使用j
命令来访问q
和a
的内容。
我无法使用:reg
命令清空任何寄存器的内容,该命令在Vim中正常工作。在Ideavim中,出现错误消息 let @=""
only simple expressions are allowed with let command
系列命令也有一些意外行为。
C-R
不会在命令模式下将单词粘贴到光标下方。
我认为Pycharm是一个出色的IDE,但是对我来说,如果不使用IdeaVim来使用它几乎是不可能的,因为在文本编辑方面,没有什么比Vim更好。