Ativar linha do cursor e coluna do cursor após a janela do Quickfix ser aberta


7

Devido ao desempenho, eu desativar o cursorlinee cursorcolumnno vim. No entanto, no caso de pular uma Quickfixjanela, é difícil localizar o cursor no arquivo. Então, eu gostaria de ativar cursorlinee cursorcolumnautomaticamente depois que uma Quickfixjanela for aberta (por qualquer ação).

Agora eu tenho a solução usando o Autocmdseguinte:

autocmd BufferEnter quickfix :bufdo set cursorline cursorcolumn

Essa é a solução adequada? Alguma ideia melhor?

Muito obrigado!


2
Talvez você possa usar o evento QuickFixCmdPost ( :h QuickFixCmdPost), mas não tenho certeza de que seria melhor.
statox

@statox Graças, trabalha com Ack, vimgrepe assim por diante. Mas não funciona no caso de :copen. Solução bastante agradável!
tamlok

Veja que :h QuickFixCmdPreele contém uma lista dos comandos que acionam o evento QuickFixCmdPre(e, portanto, o evento QuickFixCmdPost) e, de fato, :copennão é um deles. Assim, o comportamento que você está enfrentando é normal, mas eu não sei como fazê-lo trabalhar com :copen...
statox

Respostas:


2

Crie o arquivo ~/.vim/ftplugin/qf.vim(ou $HOME/vimfiles/ftplugin/qf.vimse você estiver no Windows) com o seguinte conteúdo:

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
   finish
endif

wincmd p " go to original window
set cursorline
set cursorcolumn
wincmd p " back to quickfix window

Os arquivos ftplugin são executados sempre que o tipo de arquivo é definido para um determinado buffer de arquivo (a janela de correção rápida e localização possui o tipo de arquivo qf).

Usar os arquivos de plug-in de tipo de arquivo em vez de autocmds evita sobrecarregar seu vimrc. Você pode encontrar mais detalhes no :help ftplugin-name, :help 43e Vim FAQ 26,8 .


Editar:

A verificação b:did_ftpluginé necessária para permitir desativá-lo, se necessário, e evitar carregá-lo duas vezes (consulte :help ftplugin).

O let b:did_ftplugin = 1arquivo é omitido porque o objetivo desse arquivo é incrementar o plug-in de tipo de arquivo padrão para o quickfix, e não substituir. Se essa linha foi adicionada, as configurações em $VIMRUNTIME/ftplugin/qf.vimseriam ignoradas, conforme explicado em :help ftplugin-overrule.


Muito obrigado! Mas o que b:did_ftpluginsignifica? Seu script parece não alterá-lo em nenhum lugar. Eu tentei no meu vimrc e funciona!
tamlok

@tamlok feliz por poder ajudar. Observe que você não deve copiá-lo para o vimrc, mas para um arquivo como mencionado na primeira frase. O Vim lida com esse tipo de arquivo de maneira especial. Eu atualizei a pergunta sobre a b:did_ftpluginpeça.
MMontu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.