当有Emmet命令时,IdeaVim宏不会记录到寄存器

时间:2019-02-06 07:54:36

标签: pycharm ideavim

我正在将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寄存器的内容,但是粘贴as寄存器的内容效果很好。请注意,我可以使用j命令来访问qa的内容。

我无法使用:reg命令清空任何寄存器的内容,该命令在Vim中正常工作。在Ideavim中,出现错误消息 let @=""

only simple expressions are allowed with let command系列命令也有一些意外行为。

C-R不会在命令模式下将单词粘贴到光标下方。

我认为Pycharm是一个出色的IDE,但是对我来说,如果不使用IdeaVim来使用它几乎是不可能的,因为在文本编辑方面,没有什么比Vim更好。

0 个答案:

没有答案