Cách thiết lập NERDTree thành CD vào thư mục hiện tại khi mở lần đầu tiên qua: NERDTreeFind


7

Được:

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

Tôi muốn thấy NERDTree mở bằng ~/Sites/projectthư mục gốc.

Thay vào đó tôi thấy ~/Sitesvới projectthư mục được chọn. Vì vậy, tôi phải vào cdthư mục làm việc mỗi lần.

Tôi chắc chắn nên có một thiết lập cho điều đó nhưng tôi không thể tìm thấy nó. Cứu giúp.

Câu trả lời:


3

Từ tài liệu có vẻ như nó nên được sử dụng ~/Sites/projectthư mục của bạn . (Xem :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.

Nếu :NERDTreeToggleđang tải thư mục không chính xác, bạn cần thử các cách sau:

  • Xác nhận thư mục làm việc hiện tại của shell. <c-z>đình chỉ Vim rồi làm pwd. Sử dụng fgđể mang Vim trở lại.
  • Đảm bảo thư mục làm việc hiện tại của bạn được đặt chính xác bên trong Vim. Kiểm tra thông qua :pwd.
  • Bạn có một số plugin / tùy chỉnh sẽ thay đổi thư mục làm việc hiện tại của bạn?
  • Lỗi vẫn xảy ra? Tạo một vé trong trình theo dõi của NERDTree . Hãy chắc chắn rằng bạn sử dụng một vimrc tối thiểu và không có plugin nào ngoài NerdTree để những người khác có thể tái tạo lỗi này.

Sau khi khởi động lại vim với mọi thứ được bình luận .vimrcngoại trừ nerdtree ... mọi thứ trở lại bình thường. Tôi không có bất kỳ lời giải thích nào cho việc này vào lúc này, nhưng nó đã tự sửa.
fireev

Xin lỗi nó không thực sự phù hợp. Tôi cần điều tra thêm.
fireev

2

Đây là những gì tôi đã làm cuối cùng. Cảm ơn 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

Từ các tài liệu NERDTree, bạn sẽ có thể thêm phần sau vào .vimrc của mình

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

Điều này sẽ mở thư mục làm việc hiện tại nếu bạn không chỉ định một tệp sẽ được mở khi bạn gọi vim

Tôi hy vọng điều đó sẽ giúp!


!exists("s:std_in")nghĩa là gì
dopatraman

Tôi sẽ tưởng tượng nó kết hợp với argc == 0 để kiểm tra xem một lệnh gọi đơn giản vimđã được gọi chưa. Sau đó, nó sẽ mở NERDTree
Avery

0

FWIW, tôi sử dụng cái này (trong .vimrc của tôi): autocmd vimenter * silent! lcd %:p:h

Nó đặt pwd là thư mục hiện tại (hoặc, thư mục / tệp được cung cấp khi khởi chạy vim).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.