Bei Verwendung des NERDTree-Plugins besteht das Standardverhalten darin, eine neue Datei zu öffnen und den NERDTree-Puffer offen zu halten. Ich möchte dieses Standardverhalten beibehalten, es aber auch überschreiben, wenn ich möchte, damit der NERDTree-Puffer nach dem Öffnen einer Datei geschlossen wird.
Ich weiß, dass ich let NERDTreeQuitOnOpen=1
den NERDTree-Puffer beim Öffnen einer neuen Datei automatisch schließen kann, aber diese Option überschreibt das Standardverhalten vollständig (was nicht das ist, was ich will).
Im Idealfall möchte ich wissen, ob NERDTree eine integrierte Funktion enthält, mit der ich das tun kann, was ich will. (Ich habe gesucht, aber so etwas nicht gefunden, also gibt es es wahrscheinlich nicht)
Und wenn das nicht existiert, hatte ich zwei Ideen:
Das erste ist eine Funktion zu erstellen , die würden eingestellt ,
NERDTreeQuitOnOpen
um1
die Datei zu öffnen und legen Sie dann wiederNERDTreeQuitOnOpen
auf0
.Die zweite besteht darin, die folgende Zuordnung zu erstellen: Diese
map d<CR> <CR> :NERDTree <CR> :bd<CR>
öffnet die Datei (erste<CR>
), kehrt zum NERDTree-Puffer (:NERDTree <CR>
) zurück und schließt diesen Puffer (:bd <CR>
). Ich sollte es verbessern, damit das Mapping nur im NERDTree-Puffer vorhanden ist, aber ich denke, dass dies eine ziemlich hässliche Lösung ist und ich denke, dass es verbessert werden kann.
Welche Idee wäre die beste und warum? Oder gibt es eine noch bessere Option?
quelle
map d<cr> <cr>:NERDTreeClose<cr>
für das Mapping?Antworten:
Da die Frage nicht viele Antworten zu generieren scheint, beantworte ich sie nur mit dem Vorschlag von @muru, den ich eine Woche lang verwendet habe, bevor ich zum Netrw Explorer gewechselt bin. (Wenn sich eine bessere Antwort ergibt, markiere ich meine gerne als akzeptiert und akzeptiere die neue.)
Die Idee ist, die folgende Zuordnung zu verwenden:
Dadurch wird die Datei wie gewohnt geöffnet und die Funktion aufgerufen, mit der der NERDTree-Puffer geschlossen wird, unabhängig davon, wo sich der Cursor befindet.
BEARBEITEN: Ich habe kürzlich wieder zu NERDTree gewechselt und meine Lösung überarbeitet: Das zuvor vorgeschlagene Mapping funktionierte, aber da es in jedem Puffer vorhanden war, musste ich djedes Mal zweimal drücken, wenn ich etwas löschen wollte, was ziemlich ärgerlich ist. (Vielleicht hätte ich die
timeout
Einstellungen ändern können, aber ich mag die Art und Weise, wie sie derzeit für mich eingestellt sind. Außerdem wollte ich sie nicht einer anderen Tastenkombination zuordnen.)Also habe ich meine erste Lösung durch die folgenden Zeilen ersetzt
.vimrc
:Auf diese Weise wird das Mapping nur in den
NERDTree
Puffern erstellt und beeinträchtigt meinen Workflow in den anderen Puffern nicht.quelle