shell command na linha correspondente (no vim: combine o comando global ': g' ou ': v' com o comando shell)

0

Eu quero usar um comando shell ( fmt neste caso) para operar em todas as linhas (não) correspondentes de um regex em um arquivo. Eu prefiro fazer isso dentro de vim ! Eu estou, no entanto, aberto para uma solução shell / bash / zsh pura também, já que o vim também oferece :! .

É possível combinar

:g/pattern/[cmd]

com um comando shell que é executado em linhas correspondentes? Algo como

:g/pattern/!fmt -w 72

não está funcionando.

    
por nox 06.07.2018 / 13:19

1 resposta

1

Eu encontrei a resposta! Você pode usar

:g!/^ /:.!fmt -w 40

ou sem ! para usar o comando shell nas linhas encontradas. Isso, no entanto, funcionará apenas em linhas únicas, por isso não removerá quebras de linha, apenas adicionará novas. Se alguém puder melhorar isso, fique à vontade para postar como:)

    
por 06.07.2018 / 16:35