:NERDTreeFindで初めて開いたときにNERDTreeを現在のフォルダーにCDに設定する方法


7

与えられた:

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

~/Sites/projectルートフォルダーとしてNERDTreeを開いてほしいです。

代わりに~/Sitesprojectフォルダが選択された状態で表示されます。だから私はcd毎回workフォルダに行かなければなりません。

そのための設定があるはずですが、見つかりません。助けて。

回答:


3

ドキュメンテーションから、それはあなたの~/Sites/projectディレクトリを使用する必要があるようです。(を参照: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.

:NERDTreeToggleが正しくないディレクトリを読み込んでいる場合は、以下を試す必要があります。

  • シェルの現在の作業ディレクトリを確認します。<c-z>Vimを一時停止してから実行しますpwdfgVimを元に戻すために使用します。
  • 現在の作業ディレクトリがVim内で正しく設定されていることを確認してください。経由で確認し:pwdます。
  • 現在の作業ディレクトリを変更するプラグイン/カスタマイズはありますか?
  • エラーがまだ発生していますか?NERDTreeのトラッカーでチケットを作成します。他の人がこのバグを再現できるように、最小限のvimrcを使用し、NerdTree以外のプラグインは使用しないでください。

.vimrcnerdtree を除くすべてをコメントアウトしてvimを再起動した後...すべてが正常に戻りました。現時点ではこれについての説明はありませんが、修正されました。
firedev 2015

申し訳ありませんが、実際には一貫性がありません。さらに調査する必要があります。
firedev 2015

2

これが最後にやったことです。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>

1

NERDTreeドキュメントから、.vimrcに以下を追加できるはずです

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

これは、呼び出すときに開くファイルを指定しない場合、現在の作業ディレクトリを開きます vim

お役に立てば幸いです。


どういう!exists("s:std_in")意味?
dopatraman 2015

argc == 0とペアにして、の単純な呼び出しが呼び出されたことを確認すると思いますvim。次にNERDTreeを開きます
エイブリィ

0

FWIW、私はこれを使用します(.vimrcで): autocmd vimenter * silent! lcd %:p:h

pwdを現在のフォルダー(またはvimの起動時に指定されたフォルダー/ファイル)に設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.