Como executar um grep no vim de forma assíncrona?

1

Estou usando o Vim no meu desenvolvimento. Também usando: vimgrep para procurar texto em arquivos dentro do Vim. Mas enquanto o vimgrep está procurando, eu não posso fazer nada dentro do Vim até que termine.

Há muito tempo vi um vídeo no Youtube onde você pode entrar no Vim sem bloquear o editor de texto. Infelizmente, não consigo encontrar este vídeo agora.

Como você pode executar o grep dentro do vim, exibir os resultados no buffer (em quickfix ou qualquer outro) semelhante ao vimgrep sem bloquear o editor? Alguma idéia?

    
por yinyang 07.01.2015 / 14:23

4 respostas

2

Essa é uma boa maneira, já que o vim 8 usa o plugin asyncrun.vim para executar seus comandos shell e ler a saída no janela de quickfix em tempo real.

Uma vez instalado, o grep pode ser executado de forma assíncrona com ': AsyncRun grep' .Output é exibido na janela de quickfix, Você pode explorar a saída de correspondência imediatamente ou continuar trabalhando no vim durante a execução.

    
por 13.10.2016 / 21:31
1

Existem algumas maneiras.

A maneira mais fácil é instalar um plugin. Por exemplo, o link possui comandos incorporados para grep, make e alguns outros.

Outro método (se você sabe python ou Perl ou TCL ou algo parecido) é usar uma linguagem de script externa com suporte a threads, e chamar a interface do Vim para essa linguagem. Isso pode ficar complicado e depende de ter o Vim compilado com suporte para essa linguagem de script.

Por fim, o método interno usa os recursos "cliente-servidor" do Vim. A idéia é invocar um comando externo (com system() ou :!start cmd ), onde cmd executará a pesquisa e retornará ao Vim usando --remote-expr e um arquivo pré-definido nome. A expressão para executar o Vim deve ser uma função que lê o arquivo com :cfile ou similar para obter os resultados da pesquisa. Consulte o link para obter um exemplo completo desse método. Eu acho que no Linux você pode usar o método !cmd & de executar um comando em segundo plano no lugar de !start cmd como no Windows.

    
por 07.01.2015 / 14:39
0

O Dispatch também é um ótimo plug-in para operações assíncronas:

Leverage the power of Vim's compiler plugins without being bound by synchronicity. Kick off > builds and test suites using one of several asynchronous adapters (including tmux, screen, > iTerm, Windows, and a headless mode), and when the job completes, errors will be loaded and > parsed automatically.

link

    
por 09.01.2015 / 12:04
0

Você pode fazer uma pesquisa de avanço pressionando / e digitando a string que está procurando. ? para pesquisas inversas. Pressione n para repetir sua pesquisa, N para retornar aos resultados da última pesquisa.

    
por 21.10.2016 / 15:12

Tags