Faça o cnext e o loop cprevious de volta ao início

11

Se eu executar :cnextquando já estiver no final da lista de correções rápidas, recebo a mensagem de erro

E553: No more items

e nada acontece. Em vez disso, quando entrar :cnextno final da lista, gostaria que o vim voltasse para a primeira entrada do quickfix. É possível configurar o vim para esse comportamento?

lwassink
fonte
1
Já respondeu muitas vezes no passado. Aqui está um exemplo.
Sato Katsura

Respostas:

16

Você pode escrever alguns comandos:

command! Cnext try | cnext | catch | cfirst | catch | endtry
command! Cprev try | cprev | catch | clast | catch | endtry

command! Lnext try | lnext | catch | lfirst | catch | endtry
command! Lprev try | lprev | catch | llast | catch | endtry

Se a exceção for detectada, ela salta para o primeiro / último item. Você pode usar cabbrevpara não precisar usar os comandos em maiúsculas:

cabbrev cnext Cnext
cabbrev cprev CPrev
cabbrev lnext Lnext
cabbrev lprev Lprev
Tommy A
fonte
Atualizado para remover, silent!pois fazia com que a linha de status não fosse atualizada ao quebrar.
Tommy A