Ketika saya membuka tab baru dengan jalur berbeda dari file sebelumnya di VIM, NERDTree masih akan tetap menjadi hierarki direktori yang sama dengan file sebelumnya.
Apakah ada pintasan sinkronisasi untuk mengubah direktori root saat ini ke direktori file yang baru dibuka?
vim
gvim
nerdtree
vim-plugins
Jichao
sumber
sumber
<Leader>f
<leader>
?melemparkan tanda% pada akhirnya seperti bos
:NERDTree %
saya punya ini di .vimrc saya, ini memetakan Ctrl+ ountuk beralih nerdtree di dir buffer saat ini:
map <C-o> :NERDTreeToggle %<CR>
sumber
Saya menemukan kedua jawaban yang ada mendidik, dan berhasil menggabungkan keduanya sehingga perilakunya lebih seperti yang diharapkan banyak orang dari IDE: Klik pada jendela / buffer terbuka, dan minta file itu disorot di NERDTree. Saya meletakkan ini di ~ / .vimrc saya:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Apa yang dilakukan:
autocmd BufEnter
- berjalan setiap kali Anda fokus pada buffer (termasuk jendela NERDTree)if &modifiable
- ketika Anda mengklik jendela NERDTree, jangan lakukan yang lain (jendela NERDTree tidak dapat dimodifikasi)wincmd p
- NERDTreeFind membiarkan kursor terfokus pada NERDTree; ini beralih kembali ke jendela yang semula Anda fokuskanCatatan bahwa ini tidak akan bekerja pada setiap penyangga lain yang tidak dimodifikasi - tapi itu merupakan hal baik; jika tidak (misalnya) setiap kali Anda masuk
:help
vim, NERDTree akan menemukan dan memfokuskan direktori tempat file bantuan disimpan - mungkin bukan sesuatu yang Anda inginkan.Solusi satu baris itu bekerja sangat baik untuk saya pada awalnya, tetapi saya segera menemukan bahwa itu menyebabkan NERDTree untuk aktif kapan saja saya membuka file - dan sebagai hasilnya, itu mencegah NERDTree dari pernah ditutup! Jika Anda tidak ingin menggunakan NERDTree secara penuh, letakkan ini di .vimrc Anda:
sumber
isNTFocused()
? Bukankah&modifiable
cek mencakup kasing itu?Function name must start with a capital or "s:": rc:isNTOpen()
Apakah Anda menggunakan plugin yang memperluas cakupan?.vimrc
di mana saya telah menulis kode itu. Saya tidak ingat mengapa saya menggunakan iturc:
, tapi saya pikir itu adalah namespacing hal untuk menghindari konflik nama dengan fungsi lainnya. Saya tidak menggunakan plugin apa pun yang secara khusus terkait dengan itu, sejauh yang saya ingat. Anda harus mempelajari dokumen, atau hanya mencoba meninggalkannya dan melihat apakah ada yang rusak. Tapi saya pikir salah satu nama fungsi bertentangan dengan sesuatu di NerdTree atau di tempat lain. Tidak ada orang lain yang bertanya dalam hampir 5 tahun, jadi saya merasa itu adalah sesuatu yang sederhana. :)Saya menemukan pertanyaan ini kemarin, setelah beberapa jam menggali, saya mengajukan Permintaan Tarik ke repro nerdtree scrooloose yang memperkenalkan
NERDTreeCWD
perintah yang mengubah akar pohon NERD ke direktori kerja saat ini (Pembaruan pada 2012-11-12: PR telah digabungkan ke dalam master hulu, harus dapat digunakan pada versi yang diperbarui). Dengan perubahan ini, pertanyaan ini dapat dengan mudah dipecahkan dengan kode berikut.Bandingkan dengan pendekatan @ shinzui dan @ Lambart
NERDTreeFind
, ini sesuai dengan pertanyaan. MenggunakanNERDTreeFind
akan mengubah posisi gulir nerdtree dan hasilnya tidak selalu sama (Jika CWD berada di root pohon NERD, itu hanya cukup memperluas node alih-alih mengubahnya menjadi).Bandingkan dengan jawaban @Yaser Sulaiman, solusi ini selalu membuka jendela NERD tree dan dapat dengan mudah dikodekan. Jika jendela pohon NERD telah dibuka, menggunakan
NERDTreeToggle
perlu dipecat dua kali (pertama tutup yang sudah ada, kemudian buka lagi), sayangnya, pembukaan kedua akan melewati seluruh pemrosesan cwd.sumber
Ini berperilaku seperti
:NERDTreeToggle
tetapi akan menampilkan file yang sedang dibuka di NERDTree. Jika Anda belum membuka file (yaitu, Anda baru saja memasukkanvim
di commandline Anda) NERDTree menunjukkan/home
.Letakkan ini di .vimrc Anda:
sumber
Saya menerapkan kedua solusi dari Ubah direktori saat ini menggunakan NERDTree : gunakan
cd
untuk mengatur direktori kerja NERDTree ke direktori saat ini danC
untuk mengatur simpul root NERDTree ke direktori saat inisumber
Saya pikir plugin ini adalah apa yang Anda inginkan https://github.com/jistr/vim-nerdtree-tabs
sumber
Saya menemukan jawaban yang diposting Matthias menjadi jawaban yang bagus dengan satu masalah, itu tidak berfungsi dengan baik dalam beberapa kasus tepi. Ini bekerja sedikit lebih baik dengan perubahan di bawah ini:
sumber