Como configuro o vim para completar automaticamente assim?

1

O que eu quero é o seguinte:

  1. Pressionar TAB completa a palavra atual que estou escrevendo com o prefixo comum mais longo e nada mais . Eu também não quero percorrer nenhuma opção, pressionando TAB novamente para me retornar à string original, de preferência, ou não fazer nada se isso não for possível.

  2. Pressionar CTRL + ESPAÇO deve abrir um menu mostrando todas as conclusões possíveis, como o vim padrão.

Isso é possível? Eu encontrei ciclismo através de opções / menus de abertura é extremamente perturbador para mim durante a programação, e incentiva o comportamento para continuar pedalando e espero que a conclusão que estou procurando esteja lá.

    
por orlp 05.02.2013 / 19:45

1 resposta

1

Para o texto comum mais longo, use

:set completeopt+=longest

Para evitar mostrar outras correspondências:

:set completeopt-=menu

<C-N> / <C-P> ainda mostrará as outras correspondências; aprenda a usar <C-E> para parar a conclusão e voltar ao texto originalmente digitado.

Para o mapeamento:

function s:EnableCompleteMenu()
    set completeopt+=menu
    return ''
endfunction
inoremap <expr> <SID>EnableCompleteMenu s:EnableCompleteMenu()
inoremap <script> <C-Space> <SID>EnableCompleteMenu<C-N>

Você também pode usar <C-P> para exibir correspondências na outra direção. Observe que o mapeamento <C-Space> provavelmente funciona apenas no GVIM. Se você quiser usar isso junto com os comandos acima, você precisa escrever um empacotador similar (com :set completeopt-=menu ) e sobrecarregar os outros comandos de conclusão ( <C-N> , etc.) com ele.

    
por 06.02.2013 / 08:45

Tags