Wenn ich in vim arbeite, habe ich oft einen oder mehrere Splits geöffnet, die Hilfedateien enthalten.
Wenn ich andere Fenster :q
so schließe, dass vim in einem Zustand verbleibt, in dem nur Hilfefenster geöffnet sind, schließt vim den gesamten Editor, wodurch ich meine Position auf den Hilfeseiten verliere. Beispiel: Ich habe dieses Layout
tab1 (this is the only tab open)
+------------------+-------------+-----------------+
| | | |
| |:h usr_26.txt| |
| A normal file, | | :h change.txt|
| containing code |section 26.2 | |
| e.g. |line 47 | line 272 |
| | | |
| app_db.sql | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+------------------+-------------+-----------------+
Wenn ich das Fenster mit app_db.sql
einem Problem mit dem :q
Befehl betreten würde, würde überraschenderweise der gesamte Editor verloren gehen.
Ich brauche oft eine lange Zeit - bis zu 15 bis 20 Minuten -, um die Hilfe zu durchsuchen, um diesen Hilfeinhalt endgültig zu entdecken. Auch wenn es sich nicht gerade um verlorene Arbeit handelt, geht in diesem Fall definitiv viel Zeit verloren.
Wie kann ich verhindern, dass vim den Editor selbst schließt, wenn ich ein Fenster schließe, in dem nur Hilfefenster geöffnet werden?
Mögliche Lösungen habe ich mir überlegt
- Schließen Sie einfach nicht das letzte Fenster, wenn Hilfefenster geöffnet sind.
- Das Problem dabei ist, dass ich beim Schließen des aktuellen Fensters nicht darauf achte, was sich in anderen Fenstern befindet.
- Verwenden
mksession
- Dies setzt voraus, dass Sie im Voraus wissen, dass Sie dies tun müssen,
:mksession
und dass das Schließen des Editors immer unerwartet erfolgt.
- Dies setzt voraus, dass Sie im Voraus wissen, dass Sie dies tun müssen,
- Verwenden Sie ein Plugin wie vim obsession, das eine
Session.vim
Datei ständig aktualisiert .- Ich habe derzeit die Verwendung von vim-obsession unterbrochen, weil (ironischerweise) die
Session.vim
Dateien , die vim obsession erstellt, häufig keine Registerkarten mit Hilfeseiten wiederherstellen, sondern die vonSession.vim
generierten Dateien:mksession
die Registerkarten mit Hilfefenstern wiederherstellen. (Auch ein weiteres Problem, bei dem Tab-Beschriftungen nicht mit den Tabs selbst übereinstimmen)
- Ich habe derzeit die Verwendung von vim-obsession unterbrochen, weil (ironischerweise) die
quelle
QuitPre
Ereignis automatisch zu beobachten, um den Fokus wieder auf das vorherige Fenster zuautocmd QuitPre * wincmd p
~/.vimrc
und alle seltsamen Nebenwirkungen im Auge behaltenwincmd p
funktioniert nicht, weil p möglicherweise null ist. Ich muss etwas später testen, wenn ich Zeit habeobsession
speichern Hilfefenster, wenn Sie hinzufügen ,help
umsessionoptions
einige Zeit vor der Sitzung zu speichern:set sessionoptions+=help
.Antworten:
Die Verwendung des Befehls
:clo[se]
anstelle von:q
scheint das Problem für mich gelöst zu haben.Das heißt, wenn ich Probleme
:clo
mit dem obigen Fensterlayout habe, wird vim ausgelöstTatsächlich scheint
:close
es für diese Situation gedacht zu sein, dh um ein versehentliches Schließen des Editors zu verhindern, wenn Sie nur ein Fenster (oder eine Registerkarte) schließen wollten.von
:h windows.txt
quelle