
Eu uso um pequeno programa que escrevi que usa um padrão de expressão regular como parâmetro e pesquisa mais de 2.000 arquivos. Os arquivos estão em uma hierarquia de diretórios.
O padrão pode estar em vários arquivos e várias vezes em qualquer arquivo. Depois de encontrar os nomes dos arquivos e as linhas nas quais o padrão ocorre, o programa chama vi
o +line
número da primeira linha e todos os nomes de arquivos encontrados.
Tudo funciona agora, mas uma vez tentei especificar +line
para cada arquivo ( vi +2 x1 +5 x2
), mas isso coloca o cursor na linha 5 in x1
e na linha 1 in x2
, não o que eu queria, então descartei essa ideia.
Os padrões costumam ser complexos e não quero digitá-los duas vezes, então às vezes uso copiar e colar para pesquisar a próxima linha no arquivo vi
. O que seria ótimo é configurar o vi
histórico de pesquisa com o padrão, então eu poderia usar /+ ↑+ Return, sem redigitar ou copiar/colar, para encontrar todos os padrões. Posso então usar :n!
para ir para o próximo arquivo e continuar usando o padrão.
Parece que o padrão está armazenado .viminfo
no meu diretório. Posso apenas atualizar esse arquivo antes de iniciar vi
ou existe alguma biblioteca ou utilitário de linha de comando para fazer isso?
Responder1
Não há necessidade de corrigir o ~/.viminfo
arquivo.
Conforme você está usando, vim
você pode usar a +/pattern
opção de linha de comando para colocar o cursor na linha do padrão. Depois disso você pode usar npara chegar às seguintes ocorrências (se não estiver no início da linha será a primeira, caso contrário a segunda ocorrência).
A página de manual diz que o cursor estará na primeira ocorrência do padrão, mas na minha experiência está no primeiro caractere da linha com esse padrão. Da vim
man
página:
+/{pat} For the first file the cursor will be positioned on the
first occurrence of {pat}. See ":help search-pattern" for
the available search patterns.