So richten Sie NERDTree auf CD in den aktuellen Ordner ein, wenn Sie es zum ersten Mal öffnen über: NERDTreeFind

7

Gegeben:

$ cd ~/Sites/project
project $ vim
:NERDTreeFind

Ich möchte, dass NERDTree ~/Sites/projectals Stammordner geöffnet wird .

Stattdessen sehe ich ~/Sitesmit projectausgewähltem Ordner. Also muss ich cdjedes Mal in den Arbeitsordner.

Ich bin mir sicher, dass es dafür eine Einstellung geben sollte, aber ich kann sie nicht finden. Hilfe.

Firedev
quelle

Antworten:

3

Aus der Dokumentation geht hervor, dass Ihr ~/Sites/projectVerzeichnis verwendet werden sollte. (Siehe :h :NERDTree)

:NERDTree [<start-directory> | <bookmark>]                         *:NERDTree*
    Opens a fresh NERD tree. The root of the tree depends on the argument
    given. There are 3 cases: If no argument is given, the current directory
    will be used.  If a directory is given, that will be used. If a bookmark
    name is given, the corresponding directory will be used.  For example: >
        :NERDTree /home/marty/vim7/src
        :NERDTree foo   (foo is the name of a bookmark)

:NERDTreeToggle [<start-directory> | <bookmark>]             *:NERDTreeToggle*
    If a NERD tree already exists for this tab, it is reopened and rendered
    again.  If no NERD tree exists for this tab then this command acts the
    same as the |:NERDTree| command.

Wenn :NERDTreeToggledas falsche Verzeichnis geladen wird, müssen Sie Folgendes versuchen:

  • Überprüfen Sie das aktuelle Arbeitsverzeichnis der Shell. <c-z>Vim suspendieren und dann tun pwd. Verwenden Sie fg, um Vim zurückzubringen.
  • Stellen Sie sicher, dass Ihr aktuelles Arbeitsverzeichnis in Vim korrekt eingestellt ist. Überprüfen Sie über :pwd.
  • Haben Sie ein Plugin / eine Anpassung, die Ihr aktuelles Arbeitsverzeichnis ändern würde?
  • Fehler immer noch? Erstellen Sie ein Ticket im NERDTree-Tracker . Stellen Sie sicher, dass Sie ein minimales vimrc und keine anderen Plugins als NerdTree verwenden, damit andere diesen Fehler reproduzieren können.
Peter Rincker
quelle
Nach dem Neustart von vim mit allem, was in .vimrcaußer nerdtree auskommentiert ist, ist alles wieder normal. Ich habe im Moment keine Erklärung dafür, aber es hat sich selbst behoben.
Firedev
Entschuldigung, es ist eigentlich nicht konsistent. Ich muss es weiter untersuchen.
Firedev
2

Folgendes habe ich am Ende getan. Danke an GitHub

function! NERDTreeToggleInCurDir()
  " If NERDTree is open in the current buffer
  if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
    exe ":NERDTreeClose"
  else
    if (expand("%:t") != '')
      exe ":NERDTreeFind"
    else
      exe ":NERDTreeToggle"
    endif
  endif
endfunction

" nnoremap <leader>nf :NERDTreeFind<cr>
nnoremap <leader>nf :call NERDTreeToggleInCurDir()<cr>
Firedev
quelle
1

In den NERDTree-Dokumenten sollten Sie in der Lage sein, Folgendes zu Ihrer .vimrc hinzuzufügen

"Open NERDTree if no files specified
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

Dadurch wird das aktuelle Arbeitsverzeichnis geöffnet, wenn Sie keine Datei angeben, die beim Aufruf geöffnet werden soll vim

Ich hoffe das hilft!

Avery
quelle
was tut !exists("s:std_in")bedeuten?
Dopatraman
Ich würde mir vorstellen, dass es mit argc == 0 gepaart wird, um zu überprüfen, ob ein einfacher Aufruf von vimaufgerufen wurde. Dann öffnet es NERDTree
Avery
0

FWIW, ich benutze dies (in meiner .vimrc): autocmd vimenter * silent! lcd %:p:h

Das pwd wird als aktueller Ordner festgelegt (oder als Ordner / Datei, die beim Starten von vim angegeben wird).

RichS
quelle