Parece que ex
começa na última linha - ex -c '1' -c '?bar' -c 'visual' test.txt
move o cursor para a última linha.
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.
Parece que ex
começa na última linha - ex -c '1' -c '?bar' -c 'visual' test.txt
move o cursor para a última linha.
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
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
.
Tags ex