NERDTree So öffnen Sie eine Datei und schließen automatisch den Explorer-Puffer


10

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=1den 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 , NERDTreeQuitOnOpenum 1die Datei zu öffnen und legen Sie dann wieder NERDTreeQuitOnOpenauf 0.

  • 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?



@Peter: Danke für deinen Kommentar, der Artikel ist ziemlich interessant und ich werde wahrscheinlich versuchen, netrw und das Konzept des Split Explorers zu testen. Ich glaube, ich verstehe den Vorteil dessen, was in dem Artikel erklärt wird, aber das Problem ist, dass es mein Problem nicht wirklich löst. Es wird nur empfohlen, das von mir verwendete Tool zu ändern. Ich bin nicht dagegen, meine Gewohnheiten zu ändern, aber ich möchte zuerst mein Problem lösen und dann ein neues Tool ausprobieren :)
statox

Verwandte, unbeantwortete Frage zu SU: superuser.com/q/821720/334516 . Vielleicht map d<cr> <cr>:NERDTreeClose<cr>für das Mapping?
Muru

@muru: Danke, dein Mapping funktioniert gut und es scheint weniger hässlich als meins :) Über die Frage zu SU bin ich mir nicht sicher, ob sie vollständig verwandt ist, da er die Datei im Puffer von NERDTree öffnen möchte, während ich möchte Öffne es in einem neuen Puffer und schließe dann den NERDTree-Puffer: Er hat ein geteiltes Fenster, während ich zwei Puffer haben möchte, die nicht in einem geteilten Fenster sind.
Statox

Antworten:


5

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:

map d<cr> <cr>:NERDTreeClose<cr>

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 timeoutEinstellungen ä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:

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

Auf diese Weise wird das Mapping nur in den NERDTreePuffern erstellt und beeinträchtigt meinen Workflow in den anderen Puffern nicht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.