这个Vim序列在做什么?

时间:2017-03-06 01:16:29

标签: vim

有一个Vimgolf练习来转换它:

- One number per line -
-----------------------
2,3,5,7,
11,13,17,
19,23,29,

使用Vim:

2
3
5
7
11
13
17
19
23
29

一种可能的解决方案是:

dj3JAwr<CR><Esc>ux09@.ZZ

我的问题是 - &#34; 09 @。&#34;部分命令吗?我知道0是句子的开头,9是结束,&#34;。&#34;意味着重复命令。

但是重复了什么命令?做&#34; 09 @。&#34;当按顺序排列在一起时意味着什么不同?

1 个答案:

答案 0 :(得分:2)

09@.是:

  • 0转到第一个字符

  • 9@.执行 注册的{strong>内容 . 9 次。

寄存器.定义为:

                                        quote_. quote. E29
".      Contains the last inserted text (the same as what is inserted
        with the insert mode commands CTRL-A and CTRL-@). (...)

您仍然可以执行以下操作检查其内容:

:register .

赋予wr^@所以vim在这里将换行符更改为空字符并且不给出你期望的值。

所以dj3JAwr<CR><Esc>ux09@.ZZ永远不能成为问题的解决方案,尤其是J在连接线时也留下空格。