challenge的第82个解决方案包含如下所示的片段:
V"=[<C-R><C-A>]<CR>p
我认为这里V
进入同样的视觉模式,然后帮助文档说明了
When typing the '=' after " or CTRL-R the cursor moves to the command-line,
where you can enter any expression (see |expression|). All normal
command-line editing commands are available, including a special history for
expressions. When you end the command-line by typing <CR>, Vim computes the
result of the expression. If you end it with <Esc>, Vim abandons the
expression. If you do not enter an expression, Vim uses the previous
expression (like with the "/" command).
然后我感到困惑:表达式是否以输入结束,因此看起来像[
,之后我们按ctrl-a
?
如果我重复上面的顺序,会发生一些奇怪的行为,我不认为是预期的。所以我一定错过了重要的事情。
提前感谢您的任何帮助或参考。
答案 0 :(得分:3)
"=
将评估给定的表达式,如果p(paste)
将评估的结果转换为字符串。如果您进一步阅读该文档,您将看到:
表达式必须求值为String。数字始终是自动的 转换为String。对于“p”和“:put”命令,如果结果是a 浮动它转换成一个字符串。如果结果是List,则每个元素都是 变成一个字符串并用作一行。字典或FuncRef结果 一条错误消息(使用string()进行转换)。
<c-r><c-a>
将填充光标下的WORD
。
所以表达式是[---...---2,3,5,..]
这个表达式是什么?这是一个清单。正如文档告诉我们的那样,当您p
粘贴时,它将被转换为线条。
这里最棘手的是列表中的第一个元素-------...-2
,
我们有:
2 -> 2
-2 -> -2
--2 -> 2
---2 -> -2
.....
现在你可以算一下-
之前2
的数量,我认为它必须是偶数。所以我们在粘贴后的第一行有2
。
我希望现在你能更好地理解它。