我正在尝试创建自己的评论功能,用于学习vimscript。
我做了以下事情:
function! Comment() range
for line_number in range(a:firstline, a:lastline)
let current_line = getline(line_number)
let current_line_commented = substitute(current_line, '^', '# ', "")
call setline(line_number, current_line_commented)
endfor
endfunction
command! -range Comment call Comment()
但是,当使用给定范围(:'<,'>Comment
)调用命令时,只有选择的第一行才会在前面添加#
,并且不会报告其他错误。
我缺少什么来取代范围内的每一行?
答案 0 :(得分:5)
与映射(在可视模式下调用时自动获取:'<,'>
前置于函数:call
)不同,自定义命令需要明确传递范围:
command! -range Comment <line1>,<line2>call Comment()
不幸的是, :help :command-range
只提到了相关的<count>
,但您会在:help <line1>.