Итак, у меня есть текстовый файл:
Item a: <total>
Subitem: 10 min
Subitem 2: 20 min
Я хотел бы заменить <total>
на общее число 10 и 20. Сейчас я делаю это со следующими функциями:
let g:S = 0 "result in global variable S
function! Sum(number)
let g:S = g:S + a:number
return a:number
endfunction
function! SumSelection()
let g:S=0
'<,'>s/\d\+/\=Sum(submatch(0))/g
echo g:S
endfunction
vnoremap <s-e> call SumSelection()<cr>
Sum
получает сумму чисел, переданных в, SumSelection
вызывает сумму по всем числам в выбранных строках и (предположительно) Shift + e вызывает SumSelection в визуальном режиме (или что вы хотите назвать).
Проблема в том, что когда я нажимаю Shift + e, когда у меня есть выделенные строки, вместо :call SumSelection()
я действительно получаю :'<,'>call SumSelection()
, что означает, что функция вызывается один раз для выбранной строки. Нет, хорошо, правда? Так что, насколько я могу судить об этом. Что я могу сделать, чтобы получить функцию:
- будет вызываться только один раз
- возможно, это более эффективный способ