Antworten:
Ctrl-Cund Escist nicht das gleiche in vi
/ vim
in den meisten Modi, einschließlich Einfügen - Modus. Der Unterschied besteht darin, dass EscAbkürzungen ausgelöst werden, während Ctrl-cdies nicht der Fall ist. Ob dies für Sie von Bedeutung ist, hängt davon ab, ob Sie oder von Ihnen verwendete Plugins Abkürzungen verwenden.
Beachten Sie, dass es sicherer ist, anzunehmen Escund Ctrl-Csie nicht das gleiche bedeuten in vim
. Ein weiteres Beispiel von derselben Site ist das Verlassen des Block-Einfügemodus (nicht in vi
).
Ich denke du meinst vim
, nicht vi
.
Dies funktioniert in der Tat vim
, obwohl ich es nur verwenden würde, wenn ich zu 100% sicher wäre, dass ich niemals ein Nicht-Linux-Betriebssystem berühren würde. Der Grund dafür ist, dass andere Betriebssysteme möglicherweise eigene Implementierungen von habenvi
, die dies nicht implementieren, und Sie möglicherweise feststellen, dass vi
Strg-C auf diesen Plattformen sein eigenes traditionelles Verhalten aufweist: Unterbrechen Sie den Prozess und lassen Sie Ihr Terminal in einem seltsamen Zustand .
vi
Implementierung verweisen, die heute noch existiert und die nicht funktioniert Ctrl-C
? Siehe meine Antwort für den wirklichen Unterschied.
Wenn Sie sich beziehen vim
, gibt es einen kleinen Unterschied. CTRL-C
prüft nicht auf Abkürzungen und löst nicht dieInsertLeave
Ereignis nicht aus. Sie oder Plugins haben also autocmd
Anweisungen definiert , die davon abhängen InsertLeave
, dass sie nicht ausgelöst werden.
Aus der offiziellen Dokumentation 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.
Sie können ein Mapping für CTRL-C
bis definieren <esc>
, dann wird es ausgelöst InsertLeave
.
Type :quit<Enter> to exit Vim
und mich zu Google veranlasst, wie ich zurückkomme. Wenni
Sie drücken, kehren Sie direkt in den Einfügemodus zurück.