Completamento Vim: elimina sempre la nuova riga dopo aver selezionato un suggerimento con il tasto Invio


11

A volte, dopo aver selezionato un suggerimento (dal pop-up di completamento che appare quando si preme Ctrl-N) usando il tasto Invio, Vim inserirà una nuova riga e il cursore si sposterà sulla riga successiva. Questo non succede sempre - sembra che Vim cerchi di essere intelligente su di esso e mi sposterà alla riga successiva solo se pensa che sia quello che vorrei.

Tuttavia, voglio disabilitare questo comportamento (perché non è sempre intelligente) in modo che dovrò sempre passare alla riga successiva da solo premendo manualmente il tasto Invio. È possibile?

Risposte:


14

Cosa fa Vim in risposta alla digitazione del tasto <Invio> durante l'utilizzo del completamento dell'inserimento dipende dallo stato del menu di completamento. Il comportamento del menu è descritto qui:

:help ins-completion-menu

e il comportamento di varie chiavi quando si utilizza il completamento dell'inserimento è descritto nella sezione successiva,

:help popupmenu-keys

dove spiega che il comportamento del tasto <Invio> dipende dallo stato del menu. A quanto ho capito, digitando <Invio> si inserisce una nuova riga tranne nel caso in cui sia stata selezionata una corrispondenza dal menu utilizzando i tasti cursore.

Il modo migliore per evitare di inserire una nuova riga quando non ne vuoi una è terminare o effettuare una selezione usando qualche altro tasto come Ctrl-Y o Ctrl-E.

Guarda anche

:help complete_CTRL-Y

e per l'intera descrizione se completamento in modalità inserimento,

:help ins-completion

4

Puoi aggiungere questo mapping al tuo file .vimrc:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

Mapperà il tasto invio in modalità inserimento per inserire CTRL-Y quando il menu popup è visibile. CTRL-Y seleziona la voce attualmente selezionata nel menu senza inserire una nuova riga. In caso contrario, la chiave di ritorno si comporterà normalmente.


1
Puoi spiegare cosa fa questo codice e come risolve il problema dato dal PO? Il codice inspiegabile può apparire non attendibile e pericoloso per gli utenti.
bwDraco,

0

Ho aggiunto questo a .vimrc e ora si comporta come voglio:

noremap pumvisible ()? "\": ""

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.