Se você quiser remover a palavra inteira, e se sua amostra estiver completa, você deseja usar este regexp:
:s/[0-9]\{3\}abc//g
Remove todos os bits que consistem em 3 dígitos seguidos por abc
.
Eu quero remover todas as palavras que terminam com abc
Exemplo:
111abc 222def 333abc 444def 555abc 666def
A partir daqui, quero excluir todas as palavras que terminam com abc.
então eu tentei isso
:s/abc//g
Mas isso substituirá apenas o abc
Como deletar todas as palavras que terminam com abc?
Se todas as palavras que você deseja excluir consistirem em três dígitos seguidos pela seqüência de caracteres "abc", você pode ir com a sugestão de @ m4673r. Para uma abordagem mais geral, sugiro isso:
:s/\<\S*abc\>//g
Isso removerá qualquer palavra (independentemente de caracteres / comprimento) que termine com a sequência de caracteres "abc" ( 111abc
, bem como FOOBARabc
ou apenas abc
).
Ansgar é bem clara.
Vou explicar suas partes para torná-lo uma metodologia mais do que uma receita, porque acho que expressões regulares são de alguma forma enigmáticas.
:s/\<\S*abc\>//g
é um comando de substituição vim.
Significa "na linha atual (use% s para linhas todas ) substituir as correspondências da expressão regular \<\S*abc\>
(delimitadas pelas duas primeiras" / "s pelo texto contido entre as duas últimas "/" s, isto é, nada. O final "g" é global e significa substituir todas as correspondências em vez de apenas a primeira.
O regexp é colocado entre colchetes de escape \<
e \>
. Estes são os limites word , o que significa que o regexp corresponderá ao texto apenas dentro de palavras isoladas. Pense que o vim irá dividir o texto em palavras antes de tentar corresponder a cada um.
A maiúscula com escape S é para o espaço não-wites. \s
(em letras minúsculas) corresponde a espaços em branco (espaços e tabulações), enquanto \S
(maiúsculas) corresponde a todos os outros.
Portanto, \S*
significa "caracteres sem espaço em branco zero ou mais vezes".
A parte abc
simplesmente corresponde a essa sequência de caracteres exatos.
Juntando tudo, o regexp corresponde a palavras inteiras compostas de qualquer sequência de caracteres seguidos por abc
, conforme max desejado.
Por causa da forma como o vim pensa em palavras, a qualquer sequência de caracteres não conterá espaços e outros caracteres que são limites de palavras. A lista outros personagens depende do tipo de arquivo que está sendo editado e pode ser visto digitando :set iskeyword
enter . Esta é a informação usada para dividir o texto em palavras.