2011-03-15 12 views
27

mio solito flusso di lavoro Vim è:Come si correggono gli errori di ortografia Vim più rapidi?

  • In modalità di inserimento, scrive qualcosa di sbagliato.

    Vim spell

  • Press ^X s per ottenere alcuni suggerimenti.

    Vim screen

  • premere Esc per accettare il primo.

Dopo questo, sono in modalità di comando nel mezzo della linea, invece della modalità di inserimento di dove ero prima. Potrei usare A, ma funziona solo se stavo scrivendo alla fine della linea. C'è un modo alternativo? In modo ottimale, mi piacerebbe un comando che corregge l'ultimo errore al primo suggerimento senza spostare il cursore.

risposta

20

Questo funziona abbastanza bene:

imap ^L <Esc>[s1z=`]a 

[s si sposta l'ultimo errore di ortografia
1z= sceglie il primo suggerimento
`] mossa per l'ultimo punto di inserimento
a testo accodamento

+0

Come viene richiamata questa mappatura? Ho provato a inserire '^ L' in modalità inserimento ma non funziona. – yegle

+0

Qualche motivo speciale per usare '^ L'? Tradizionalmente, il controllo ortografico è mappato a "". Comunque, 'F10' sembra essere già in uso da gVim, quindi alla fine ho optato per il tipico' 'bind di controllo ortografico di Microsoft. –

+0

@SergeStroobandt 'L' è sulla riga principale. Anche i mac richiedono fn + f10 per ottenere l'F10 di default, sebbene possa essere facilmente modificato. –

8

Non riesco a offrire una soluzione "ottimale" (anche se sospetto che ci sia un modo).

Tuttavia, è possibile utilizzare gi per accedere alla modalità di inserimento nel luogo nel file in cui l'ultima lasciato. (help gi lo spiega in modo più eloquente).

+0

Non lo sapevo, grazie! – Tim

+0

Sembra che l'Esc lasci la modalità di inserimento. In quanto tale, 'gi' non aiuterà in questo caso. – Tim

+0

Ah, mi dispiace ... avrei dovuto provarlo prima di postare. La tua mappa qui sotto sembra comunque fare il trucco (supponendo che tu abbia sempre bisogno della prima ortografia suggerita). –

2

È possibile utilizzare Ctrl +Y ad accettare un elemento in un menu a comparsa. Vedi :help complete_CTRL-Y.

+0

Inserisce il cursore nella modalità di inserimento, ma subito dopo la parola inserita, non dove ero. – Tim

2

L'ho risolto con la seguente rimappatura nel mio .vimrc.

imap <F2> <Esc>mti<C-X>s<Esc>`tla 

Premere F2 in modalità di inserimento per correggere l'ultimo errore e tornare modalità in cui si dovesse inserire. Sovrascrive il marker t.

25

Un miglioramento alla risposta di PDug: Per rendere la correzione ortografica annullabile separatamente dagli inserimenti, utilizzare questo:

imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u 

<c-g>u inserisce un annullamento rottura
Il resto è lo stesso.

In questo modo, se non ti piace la correzione scelta, puoi annullarla utilizzando <Esc>u. Senza le interruzioni di annullamento, questo annullerebbe l'inserimento completo. Si noti che l'annullamento alla fine della mappatura assicura che il testo aggiunto dopo la correzione possa essere annullato separatamente dalla correzione stessa.

Inoltre, ho trovato conveniente per mappare questo per CTRL + F (che è facile da raggiungere) sia in inserimento e modalità normale in questo modo:

imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u 
nmap <c-f> [s1z=<c-o> 

In questo modo, si può rapidamente correggi l'ultimo errore (relativo al cursore).

+0

grazie mille. – tito11

Problemi correlati