В Vim у меня есть следующий текст:
Door Chair Table Uganda
И я хочу добавить пронумерованный текст в каждую нечетную строку, которая должна дать это:
>item1
Door
>item2
Chair
>item3
Table
>item4
Uganda
Возможно ли это в vim?
Вы можете попробовать эту команду, которая, как бы не интуитивно это ни звучало, увеличивает i
при каждом совпадении:
:let i = 1 | g/^$/execute "normal i>item" . i | let i = i + 1
Вот vimscript для этого:
:for s:i in range(1, line("$") / 2)
: execute "normal " . eval(s:i * 2 - 1) . "gg"
: execute "normal a" . ">item" . s:i
:endfor
gg
.>itemX
в строку, где X - номер элемента.Вы можете либо ввести это непосредственно в командной строке vim, либо поместить его в файл, а затем выполнить его, используя :source <filename>
.
В качестве альтернативы вы можете добавить это как функцию к вашему .vimrc, а затем выполнить его с помощью :call <funcname()>
.