2

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

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

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

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

Тем не менее, cnt сделан для хранения общего количества строк в буфере, которые имеют x , а не сколько x s во всем файле.

Итак, первоначальный вопрос остается в силе.

3 ответа3

0

Вы можете попробовать это

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

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

Your mileage may vary. You may have already won.

Легко.

0

Следующее делает трюк:

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

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

Я получил идею для этого метода, используя функцию map от Денниса Уильямсона, в другом посте о сценариях Vim.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .