Inicializando a pesquisa no vi antes de começar

Inicializando a pesquisa no vi antes de começar

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 vio +linenúmero da primeira linha e todos os nomes de arquivos encontrados.

Tudo funciona agora, mas uma vez tentei especificar +linepara cada arquivo ( vi +2 x1 +5 x2), mas isso coloca o cursor na linha 5 in x1e 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 vihistó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 .viminfono meu diretório. Posso apenas atualizar esse arquivo antes de iniciar viou existe alguma biblioteca ou utilitário de linha de comando para fazer isso?

Responder1

Não há necessidade de corrigir o ~/.viminfoarquivo.

Conforme você está usando, vimvocê pode usar a +/patternopçã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 manpá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.

informação relacionada