Com base na resposta de Alexander, eu tenho algo parecido com essas linhas no meu .vimrc
"unix like completion - longest substring
set completeopt+=longest
"add command to retrigger longest substring
"Naive version... see below
inoremap <C-m> <C-e><C-n>
Assim, o bit "mais longo" faz a maior parte do trabalho, no entanto, as pressões subsequentes de <C-n>
começarão a percorrer as opções. Se você pressionar <C-e>
(e), o preenchimento automático, acionando-o novamente com <C-n>
, corresponde à próxima subcadeia mais longa ... adicionar um atalho para isso impede que você tenha que pressionar duas teclas ....
Você não deseja vincular isso a <C-n>
, pois isso fará com que você pare de pedalar de maneira familiar
Eu escolhi M como está ao lado de N e a verificação ( :h insert-index
) é padronizada apenas para same as <CR>
.... porque isso é vim e nada é fácil, acontece que isso significa que vim não é possível distinguir entre os dois pressiona as teclas !
Se você não se importa em usar <C-m>
, escolha outra coisa, caso contrário, leia ...
Com base nessa outra postagem, adaptei a resposta na parte inferior e limpei um pouco a sintaxe (com base no )
Acabei com isso:
"add command to retrigger longest substring
inoremap <expr> <C-M> pumvisible() ? "\<C-e><C-n>" : "\<C-m>"
pumvisible () retorna um sinalizador que diz se o menu pop-up está aberto. Isso nos impede de alterar o comportamento da tecla enter no modo de inserção quando o menu pop-up não está aberto.
Infelizmente não consigo encontrar nenhuma documentação para o? e: e por que temos que passar strings.