作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 vimrc 文件中,我试图编写一个函数,将两行数字作为参数,然后注释掉该范围内的所有行。我正在使用替代行 '^' 的开头并将其替换为 '#',这在我从函数外部调用时可以正常工作。到目前为止我有这个功能:
function Comment(line1, line2)
a:line1,a:line2s/^/#/g
endfunction
但这不起作用,当我尝试启动 Vim 时出现错误,提示“缺少 :endfunction”
最佳答案
在您的命令中:
a:line1,a:line2s/^/#/g
a:line1
和
a: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
: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/
在我的 vimrc 文件中,我试图编写一个函数,将两行数字作为参数,然后注释掉该范围内的所有行。我正在使用替代行 '^' 的开头并将其替换为 '#',这在我从函数外部调用时可以正常工作。到目前为止我有
我是一名优秀的程序员,十分优秀!