vim: move para o padrão sem alterar o padrão atual

1

Durante a edição de arquivos enormes, eu preciso me movimentar com base na pesquisa de padrões (apesar de eu usar ctags, cscope, Lid), mas não quero perturbar a atual busca de realces ao fazer isso.

A razão de ser o padrão que vou usar é por um período de tempo extremamente curto e eu teria que restaurar manualmente o último padrão novamente.

Deixe-me explicar pelo exemplo. Se eu tiver um arquivo como o seguinte:

  1 #include <stdio.h>
  2
  3 int main(int argc, char **argc)
  4 {
  5         printf("Hello World")
  6         foo();
  7         return 0;
  8 }
  9
 10 void foo(void)
 11 {
 12         printf("Just another function with no declaration yet\n");
 13 }

digamos que o cursor esteja na linha 5. printf("Hello World") e meu padrão de pesquisa atual seja printf.

Agora eu quero adicionar o protótipo para a função foo (). Eu teria que fazer o seguinte:

  1. Pesquise para #include para obter a última instância de #include no arquivo
  2. Adicione o protótipo de foo na próxima linha
  3. Restaurar o último padrão de pesquisa, por exemplo, printf

O que eu quero é que quando eu mudei para a linha 1 pesquisando por #include, ele deve simplesmente passar para a ocorrência sem alterar o padrão atual.

É possível conseguir isso facilmente no vim?

TLDR Eu quero mover / pular dentro de um arquivo, com base no padrão sem alterar o padrão atual para que da próxima vez que eu fizer n ou N o padrão antigo ainda funcione sem ter que restaurá-lo fazendo / then uparrow

    
por thequark 07.08.2014 / 09:00

1 resposta

1

Você pode usar esses mapeamentos personalizados para pesquisar para cima e para baixo sem "poluir" o histórico de pesquisa (usado por nN ) ou remover o realce da pesquisa "normal" anterior:

nnoremap ,/ :<C-u>call search(input("/"))<CR>
nnoremap ,? :<C-u>call search(input("?"),"b")<CR>

Ignorar o normal / e ? não me parece uma ideia viável.

    
por 07.08.2014 / 09:53

Tags