Como encontrar a última linha correspondente com ex?

3

O comando ex $ navega para o caractere primeiro da última linha. Portanto, ao fazer uma pesquisa inversa, ela pula a linha em que está atualmente. Como eu navego até o último caractere com ex ou, alternativamente, procuro pela última ocorrência de uma expressão regular?

Exemplo:

$ cd -- "$(mktemp --directory)"
$ printf '%s\n' foo bar foo bar > test.txt
$ ex -c '$' -c '?bar' -c 'visual' test.txt

Neste ponto, o cursor está na linha 2 em vez da linha 4, como esperado. Usar ex -c '?bar' -c 'visual' test.txt produz o mesmo resultado, embora eu espere encontrar a última linha ao redor ( vim ).

Usando o Vim 7.3.

    
por l0b0 07.06.2013 / 13:04

3 respostas

2

Parece que ex começa na última linha - ex -c '1' -c '?bar' -c 'visual' test.txt move o cursor para a última linha.

    
por 07.06.2013 / 13:53
2

Com a minha versão de ex , $+1?... parece começar a pesquisar para trás após a última linha:

sh$ ex -version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:49:33)

sh$ ex -c '$+1?bar' -c visual test.txt
    
por 07.06.2013 / 17:14
0

Outra solução:

ex -c '?bar' -c '/bar' -c 'visual' test.txt

Por padrão, '? bar' procurará a string bar da última linha do arquivo, mas não buscará a string na última linha. então, quando atingir o primeiro bar da última linha, /bar corrige, de volta para o bar na última linha.

Isso falhará quando a última linha não contiver a string bar .

    
por 07.06.2013 / 14:03

Tags