我正在尝试做一些听起来非常容易的事情,但由于某些原因它不起作用.命令:
:m 10
Run Code Online (Sandbox Code Playgroud)
将当前行移动到第10行的正下方,然后
:echo line(".") - 2
Run Code Online (Sandbox Code Playgroud)
打印出从光标向上两行的行号.阅读完文档后,我写了这个命令:
:m line(".") - 2
Run Code Online (Sandbox Code Playgroud)
它导致了这个错误:
M14:地址无效
所以我认为除非我使用=符号,否则不会评估函数,所以我试过:
:m =line(".") - 2
Run Code Online (Sandbox Code Playgroud)
这给了我同样的错误.为了确保空间不是原因,我试过:
:m =line(".")
Run Code Online (Sandbox Code Playgroud)
哪个仍然给我同样的错误!我在这做错了什么?
我确保:m接受整数并line()返回整数.
:echo type(5)
0
:echo type(line("."))
0
Run Code Online (Sandbox Code Playgroud)
为了评估表达式并将其传递给ex-mode命令,您需要使用该execute命令.在你的情况下,这工作:
:execute "m" line(".") - 2
Run Code Online (Sandbox Code Playgroud)
您可以将其execute视为采用单个变量的函数"m" line(".") - 2.计算此变量,然后在ex模式下作为字符串执行.
如需更多帮助,请参阅:help execute.