gpt4 book ai didi

vim - 缺少 :endfunction error for vim function

转载 作者:行者123 更新时间:2023-12-04 03:05:03 24 4
gpt4 key购买 nike

在我的 vimrc 文件中,我试图编写一个函数,将两行数字作为参数,然后注释掉该范围内的所有行。我正在使用替代行 '^' 的开头并将其替换为 '#',这在我从函数外部调用时可以正常工作。到目前为止我有这个功能:

function Comment(line1, line2)
a:line1,a:line2s/^/#/g
endfunction

但这不起作用,当我尝试启动 Vim 时出现错误,提示“缺少 :endfunction”

最佳答案

在您的命令中:

a:line1,a:line2s/^/#/g

有些部分是变量( a:line1a:line2 )。他们需要被评估。为此,您可以将命令的每个部分都包含在一个字符串中,变量除外,然后使用点运算符连接所有部分,最后将结果传递给命令 :execute。将其作为常规 Ex 命令执行:
execute a:line1.','.a:line2.'s/^/#/g'

如果你需要一个命令来调用它,你可以试试这个:
function! Comment(line1, line2)
execute a:line1.','.a:line2.'s/^/#/'
endfunction

command! -range=% Comment call Comment(<line1>,<line2>)

它定义了 :Comment调用同名函数的命令。它接受一个范围,因为它是用 -range 定义的。属性。如果您没有为命令提供范围,它将使用整个缓冲区,因为 % (= 1,$ ) 被定义为默认范围。见 :h user-commands了解更多信息。

要使用该命令,您可以直观地选择一些行,然后执行:
:'<,'>Comment

要使用该函数,假设您想注释地址在 10 到 20 之间的行,您可以执行:
:call Comment(10,20)

它与您的问题无关,但如果您没有在关键字 function 中添加一个感叹号, 每次获取脚本时,都会出现错误:
E122: Function Comment already exists, add ! to replace it

对于命令,您可能希望在关键字 command 后添加一个 bang。 ,否则会报错:
E174: Command already exists: add ! to replace it

关于vim - 缺少 :endfunction error for vim function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45369890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com