Existe um padrão como ^ in vim?


20

No modo normal do Vim, o 0comando leva você para a primeira coluna da linha e ^o início lógico da linha (por exemplo, o primeiro caractere que não é um espaço em branco). No mundo regex, ^corresponde ao primeiro caractere da linha, com espaço em branco ou não. O Vim tem um padrão que se comporta como o comando '^' - correspondendo ao início lógico de uma linha?


Eu acho que ^ em uma regex normalmente corresponde ao início da linha, não ao primeiro caractere. ^. corresponderá ao início e, em seguida, ao primeiro caractere, não ao início e, em seguida, ao segundo caractere.
— precisa

Respostas:


17

Não há atalho para corresponder ao primeiro caractere que não seja um espaço em branco em uma linha; você deve criar o padrão sozinho, como:

^\s*restofpattern

Se você não deseja incluir o espaço em branco na sua correspondência, use uma asserção de largura zero, como:

\(^\s*\)\@<=restofpattern

Não é exatamente bonito, mas pelo menos faz o trabalho.


6

Para corresponder ao primeiro caractere que não seja um espaço em branco, você usaria \Snormalmente.


Se você usar ^um regex no vim, ele corresponderá ao início real da linha, mesmo que contenha espaço em branco.

Por exemplo, esta linha começa com um espaço:

 <- there's a space there you can't see :)

Este comando vim removerá o espaço inicial:

:%s/^ //

resultando no seguinte:

<- there's a space there you can't see :)

Portanto, o regex se comportará conforme o esperado, mesmo que o comando não o faça.


Eu presumo que você vai explicar o voto negativo. Esta resposta, tanto quanto eu sei, está correta.
— Michael Hampton

11
Não diminuí a votação, mas, a título de esclarecimento: estava pensando se o Vim tem um operador para corresponder ao primeiro caractere não em branco da linha. O ^operador (como todas as implementações de sã regex) corresponderá ao primeiro caractere, mesmo que seja um espaço em branco.
— Michael

Bem, como você esperava fazer isso normalmente? Geralmente em uma regex, você usaria algo parecido \Scom o primeiro caractere que não é um espaço em branco.
— Michael Hampton

2
\Scorresponderá a qualquer caractere que não seja um espaço em branco. Dito de outra forma, eu estou querendo saber se Vim tem uma forma abreviada de largura zero para isso: ^\W*\S.
— Michael

11
Nenhum mecanismo que eu conheço fornece essa funcionalidade, mas, novamente - quando você se importaria em um mecanismo de uso geral? O Vim não é um mecanismo regex de uso geral. É um editor que possui um mecanismo de regex, então eu queria saber se havia alguma construção especial para algo que só importa dentro de um editor.
— Michael Michael
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.