L'uso di ctrl + c invece di esc per uscire dalla modalità di inserimento interrompe qualcosa in vi?


15

Quando si utilizza vi, è possibile uscire dalla modalità di inserimento con Ctrl+ Canziché il più tradizionale Esc. Ci sono situazioni in cui sarebbe indesiderabile utilizzare per il primo anziché per il secondo? Si rompe qualcosa di diverso dalle migliori pratiche?


È indesiderabile colpire il primo per caso, il che ti dà un errore Type :quit<Enter> to exit Vime mi ha fatto Google come tornare. Colpire iti riporta alla modalità di inserimento.
Noumenon,

Risposte:


9

Ctrl-Ce Escnon sono gli stessi nella vi/ vimnella maggior parte delle modalità, inclusa la modalità di inserimento. La differenza è Escinnesca abbreviazioni mentre Ctrl-cnon lo fa. Se questo è importante per te dipende dal fatto che tu o i plug-in che usi utilizzi le abbreviazioni.


Si noti che è più sicuro di assumere Esce Ctrl-Cfare non significa la stessa cosa in vim. Un altro esempio di questo stesso sito è quando si esce dalla modalità di inserimento blocco (non in vi).


Buono a sapersi, ma la mia domanda riguardava l'uscita dalla modalità di inserimento.
MDMarra,

@MDMarra Doh, hai letto male la tua domanda. La modalità di inserimento è ancora diversa: vedi la risposta aggiornata.
jw013,

1
Ecco la differenza più importante che ho dovuto affrontare: l'inserto multilinea con modalità blocco visivo funziona con Esc e non con Cc.
Fascino

4

Penso che tu intenda vim , no vi.

Funziona davvero vim, anche se non lo userei se non fossi sicuro al 100% che non toccherei mai un sistema operativo non Linux. Il motivo è che altri sistemi operativi potrebbero avere le proprie implementazioni vi, che non implementano questo, e potresti scoprire che durante l'esecuzione visu quelle piattaforme, Ctrl-C ha il suo comportamento tradizionale: interrompere il processo e lasciare il tuo terminale in uno stato strano .


3
Puoi indicare qualsiasi viimplementazione che esiste ancora oggi che non gestisce Ctrl-C? Vedi la mia risposta per la vera differenza.
jw013,

2

Se ti riferisci a vim, c'è una leggera differenza. CTRL-Cnon controlla le abbreviazioni e non attiva l' InsertLeaveevento. Quindi tu o i plugin avete definito qualsiasi autocmdistruzione da cui dipendano InsertLeave, non verranno attivate.

Dalla documentazione ufficiale http://vimhelp.appspot.com/insert.txt.html :

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

È possibile definire una mappatura per CTRL-Ca <esc>, allora si innescherà InsertLeave.

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.