Realce o cursor depois de alterar o buffer no vim

0

Enquanto uso o vim, tenho dificuldade em encontrar meu cursor rapidamente depois de entrar em outro buffer, especialmente se eu tiver muitos divisões abertos.

Eu consertei isso escrevendo uma função que é chamada por um autocmd quando um buffer é inserido. A função corresponde e descompacta alguns caracteres ao redor do cursor, esperando entre sleep .

No entanto, isso é irritante quando se muda rapidamente e muito, ou por ex. ao abrir uma tag de ajuda, já que minha função é chamada após entrar no buffer, mas antes de pular para a tag de ajuda, por isso aparece tarde.

Como posso alcançar meu objetivo sem diminuir significativamente o vim?

EDITAR : trabalhei em torno da parte da etiqueta de ajuda verificando o tipo de arquivo de ajuda na minha função de destaque. No entanto, isso ainda não é o ideal.

Esta é minha função:

function! HlCursor()
    let l:pat = '\v.{0,3}%#.{0,3}'
    " Let it blink for 250ms
    let l:match = matchadd('Todo', l:pat)
    redraw | sleep 250 m
    call matchdelete(l:match)
    redraw
endfunction
    
por madmax1 26.07.2014 / 21:16

2 respostas

1

Uma alternativa ao seu bloqueio de sono seria remover apenas o realce em um evento seguinte. Para fazer isso, após o matchadd() , basta definir outro (fire-once; ou seja, um que se apaga) autocmd que limpa o realce e retorna da função. Eventos adequados seriam WinLeave,CursorMoved,CursorMovedI,CursorHold,CursorHoldI .

    
por 27.07.2014 / 20:56
0

Que tal usar as opções "cursorline" e "cursorcolumn" incorporadas? Em seguida, você pode usar dois autocmds: um autocmd BufEnter ou WinEnter para fazer setlocal cursorline cursorcolumn e um autocmd CursorHold, WinLeave para fazer setlocal nocursorline nocursorcolumn .

    
por 28.07.2014 / 15:40