Por que os comandos não funcionam juntos no VIM, mas apenas separadamente?

1

Considere o seguinte texto:

com.abc.JavaClassA.doSomething(JavaClassA.java:35)
com.abc.JavaClassA.doSomething(JavaClassA.java:35)
com.abc.JavaClassA$2.doSomething(JavaClassA.java:35)
com.abc.JavaClassA$1.doSomething(JavaClassA.java:35)

Eu corro o comando:

:%s/\v\.[^\.]{-}\(.*\)//ge | g/\v\$[0-9]+$/de | %sort u | %!uniq

Eu espero:

com.abc.JavaClassA

Mas a saída é:

com.abc.JavaClassA
com.abc.JavaClassA$1

Por quê? Eu pensei que com.abc.JavaClassA$1 deveria ser deletado por g/\v\$[0-9]+$/de

    
por ka3ak 25.01.2017 / 17:05

1 resposta

3

De acordo com a documentação do vim , :global (aka :g ) não é capaz para ser usado em uma cadeia de comandos | -delimited, pois | é um dos seus possíveis argumentos. Você pode contornar isso com :execute :

:execute 'command1' | 'command2' [...]
    
por 25.01.2017 / 17:17

Tags