O seguinte faz o truque:
:echo eval(join(map(range(1, line('$')), 'len(substitute(getline(v:val),"[^x]","","g"))')," + "))
Isso substitui todos os caracteres que não são x
por nada, conta o número de caracteres restantes (deve ser x
s) e adiciona esse resultado para cada linha no arquivo.
Eu tenho a ideia para essa técnica usando a função map
de Dennis Williamson , em outro post no script Vim.