normal!
执行某些操作时如何使用变量?示例:
function! MyFunction(someArg)
normal! (a:someArg)l
endfunction
这应将光标
someArg
步骤移至对。#1 楼
execute
函数将字符串作为参数,它将扩展该字符串并通过常规ex命令执行它。因此,您可以执行以下操作:function! MyFunction(someArg)
execute "normal! ". a:someArg. "l"
endfunction
.
是连接字符串的标准vimscript运算符。 execute
可以缩短为exe
。 请参阅
:h :execute
编辑我将对@Christian Brabandt的评论与
.
串联进行补充。文档中说:
多个参数被串联在一起,之间有一个空格。为避免多余的空间,请使用“。”
运算符将字符串连接成一个参数。
因此命令可以是:
execute "normal!" a:someArg . "l"
执行的命令将是:
normal! 2l
评论
您不需要'。'。 exe将使用空格将字符串连接在一起。
–克里斯蒂安·布拉班德(Christian Brabandt)
16-09-22在20:33
@ChristianBrabandt认真等待吗?我不知道。
– Tumbler41
16-09-22在20:36
@ChristianBrabandt我不知道谢谢你!
–statox♦
16-09-23在7:42
#2 楼
为了完整起见,我发现使用.
进行的字符串连接阅读起来并不愉快。我们可以使用printf
连接字符串和变量,以提高可读性。execute printf("normal! %sl", a:someArg)
评论
而且,如果您希望a:someArg是一个计数,您甚至可以在您的printf格式中使用%d强制执行该解释。
–filbranden♦
20/09/24在11:25
评论
您需要使用exe“规范”!变量相关:vi.stackexchange.com/q/21392/10604