Как получить результат regex-приводимой-в-действие команды в Vim нормальный режим?

Я хочу найти, что количество раз 'x' присутствует в моем файле, таким образом, я отправляю %s/x//gn и получите корректный ответ.

Как я могу получить результирующее количество в переменную с помощью vimscript на командной строке?

На следующее решение намекнул ответ ниже:

:let cnt=0
:g/x/let cnt=cnt+1
:echo cnt

Однако cnt сделан сохранить общее количество строк в буфере, которые имеют x, не, сколько xs существуют в целом файле.

Так, исходный вопрос все еще стоит.

2
задан 30.03.2011, 21:25

3 ответа

Следующее добивается цели:

:echo eval(join(map(range(1, line('$')), 'len(substitute(getline(v:val),"[^x]","","g"))')," + "))

Это заменяет все не -x символы ни с чем, рассчитывает, количество оставшихся символов (должен быть xs), и складывает этот результат для каждой строки в файле.

Я получил идею для этой техники с помощью map функция от Dennis Williamson, в другом сообщении на сценариях Vim.

0
ответ дан 12.12.2019, 00:16

Можно попробовать это

:let cnt=0
:g/^.*may/let cnt=cnt+1
:echo cnt

Таким образом, Вы будете затем видеть, сколько строк имеет слово 'май' в них, по крайней мере, однажды. Таким образом, следующий текст будет считаться как 1:

Your mileage may vary. You may have already won.

Легкий.

0
ответ дан 12.12.2019, 00:16

Теги

Похожие вопросы