Wenn ich in VIM eine neue Registerkarte mit einem anderen Pfad als die vorherige Datei öffne, bleibt NERDTree in der Verzeichnishierarchie der vorherigen Datei erhalten.
Gibt es eine Synchronisierungsverknüpfung, um das aktuelle Stammverzeichnis in das Verzeichnis der neu geöffneten Datei zu ändern?
vim
gvim
nerdtree
vim-plugins
Jichao
quelle
quelle
<Leader>f
<leader>
?Wirf wie ein Boss ein% -Schild auf das Ende
:NERDTree %
Ich habe dies in meinem .vimrc, es ordnet Ctrl+ oum Nerdtree in das Verzeichnis des aktuellen Puffers umzuschalten:
map <C-o> :NERDTreeToggle %<CR>
quelle
Ich fand beide vorhandenen Antworten lehrreich und kombinierte sie erfolgreich, so dass das Verhalten eher so ist, wie es viele Leute von einer IDE erwarten würden: Klicken Sie auf ein geöffnetes Fenster / einen offenen Puffer und lassen Sie diese Datei im NERDTree hervorheben. Ich füge dies in meine ~ / .vimrc ein:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Was dies bewirkt:
autocmd BufEnter
- wird jedes Mal ausgeführt, wenn Sie sich auf einen Puffer konzentrieren (einschließlich des NERDTree-Fensters)if &modifiable
- Wenn Sie auf das NERDTree-Fenster klicken, tun Sie nichts anderes (das NERDTree-Fenster kann nicht geändert werden).wincmd p
- NERDTreeFind lässt den Cursor auf dem NERDTree stehen. Dadurch kehren Sie zu dem Fenster zurück, auf das Sie sich ursprünglich konzentriert hattenBeachten Sie, dass dies bei keinem anderen Puffer funktioniert , der nicht geändert werden kann. Dies ist jedoch im Allgemeinen eine gute Sache. Andernfalls (zum Beispiel)
:help
würde NERDTree jedes Mal , wenn Sie sich in vim befinden, das Verzeichnis finden und fokussieren, in dem die Hilfedateien gespeichert sind - wahrscheinlich nicht, was Sie möchten.Diese einzeilige Lösung hat anfangs sehr gut funktioniert, aber bald stellte sich heraus, dass NERDTree jedes Mal aktiviert wird, wenn ich eine Datei öffne. Dadurch wird verhindert, dass NERDTree jemals geschlossen wird! Wenn Sie NERDTree nicht in Vollzeit verwenden möchten, fügen Sie dies stattdessen in Ihre .vimrc-Datei ein:
quelle
isNTFocused()
? Deckt der&modifiable
Scheck diesen Fall nicht ab?Function name must start with a capital or "s:": rc:isNTOpen()
Verwenden Sie ein Plugin, das die Gültigkeitsbereiche erweitert?.vimrc
Code, in den ich ihn geschrieben habe, verlegt. Ich erinnere mich nicht, warum ich die verwendet haberc:
, aber ich denke, es war ein Namensraum, um Namenskonflikte mit anderen Funktionen zu vermeiden. Soweit ich mich erinnere, habe ich kein spezielles Plugin dafür verwendet. Sie müssen die Dokumente lesen oder einfach weglassen, um zu sehen, ob etwas kaputt geht. Aber ich denke, einer der Funktionsnamen widerspricht etwas in NerdTree oder anderswo. Niemand anders hat in fast 5 Jahren danach gefragt, also habe ich das Gefühl, dass es etwas Einfaches ist. :)Ich bin gestern auf diese Frage gestoßen, als ich nach ein paar Stunden des Grabens einen Pull Request an scrooloose's Nerdtree Repo gesendet habe, mit dem ein
NERDTreeCWD
Befehl eingeführt wurde, mit dem das NERD-Baumstammverzeichnis in das aktuelle Arbeitsverzeichnis geändert wird (Aktualisierung am 2012-11-12: Der PR wurde zusammengeführt dem Upstream-Master sollte es auf einer aktualisierten Version verwendbar sein). Mit dieser Änderung kann diese Frage einfach durch den folgenden Code gelöst werden.Im Vergleich zu @ shinzuis und @ Lambarts
NERDTreeFind
Ansatz macht dies genau das, was die Frage gestellt hat. DurchNERDTreeFind
die Verwendung von wird die Bildlaufposition des Nerd-Baums geändert, und das Ergebnis ist nicht immer dasselbe.Im Vergleich zu der Antwort von @Yaser Sulaiman hat diese Lösung immer ein NERD-Baumfenster geöffnet und kann leicht codiert werden. Wenn bereits ein NERD-Baumfenster geöffnet wurde, muss using
NERDTreeToggle
zweimal ausgelöst werden (zuerst das vorhandene schließen, dann es erneut öffnen). Leider wird beim zweiten Öffnen die gesamte CWD-Verarbeitung übersprungen.quelle
Dies verhält sich wie
:NERDTreeToggle
, zeigt aber die aktuell geöffnete Datei in NERDTree an. Wenn Sie noch keine Datei geöffnet haben (dh Sie haben sie geradevim
in Ihre Befehlszeile eingegeben ), wird NERDTree angezeigt/home
.Fügen Sie dies in Ihre .vimrc ein:
quelle
Ich wende beide Lösungen aus " Aktuelles Verzeichnis mit NERDTree ändern" an : Verwenden Sie diese Option
cd
, um das NERDTree-Arbeitsverzeichnis auf das aktuelle Verzeichnis undC
den NERDTree-Stammknoten auf das aktuelle Verzeichnis festzulegenquelle
Ich denke, dieses Plugin ist das, was Sie wollen https://github.com/jistr/vim-nerdtree-tabs
quelle
Ich fand die Antwort, die Matthias gepostet hat, eine großartige Antwort mit einem Problem, das in einigen Randfällen nicht gut funktioniert. Mit der folgenden Änderung funktioniert es ein bisschen besser:
quelle