ฉันจะเปิดและปิด NERDTree (สลับมุมมอง NERDTree) โดยใช้การกดแป้นเดียวได้อย่างไร


22

บางครั้งในช่วงเวิร์กโฟลว์ของฉันฉันอาจต้องการเปิด / ค้นหาไฟล์ในระหว่างการเดินทาง ฉันต้องการแมปคีย์เดียว (พูดว่า F6) เพื่อเปิดและปิด NERDTree (เช่นฉันต้องการสลับมุมมอง NERDTree) นอกจากนี้ฉันต้องการให้ NERDTree แสดงไฟล์และโฟลเดอร์ที่ซ่อนอยู่ในมุมมองแบบสลับและฉันยังต้องการให้ปิดโดยอัตโนมัติเมื่อฉันเปิดไฟล์เพื่อแก้ไขหากเป็นไปได้ ขอบคุณมาก!


1
สวัสดียินดีต้อนรับสู่เว็บไซต์! โปรดทราบว่าการถามคำถามหลาย ๆ คำถามแทนที่จะเป็นคำถามที่มีประเด็นแตกต่างกัน เช่นที่นี่คุณสามารถถามคำถามอื่นเกี่ยวกับไฟล์และโฟลเดอร์ที่ซ่อนอยู่ได้เนื่องจากคำถามหลักเกี่ยวกับการสลับ (ซึ่งคุณได้รับคำตอบแล้ว) นอกจากนี้อย่าลืมอ่านเอกสารประกอบปลั๊กอินและใช้เวลาหลายชั่วโมงใน:h);
nobe4

คำตอบ:


29

ในการvimrcเพิ่มของคุณ

nmap <F6> :NERDTreeToggle<CR>

ที่<F6>เป็นกุญแจสำคัญที่คุณต้องการ map


ใช้งานได้ดี แต่ฉันจะแสดงไฟล์และโฟลเดอร์ที่ซ่อนไว้พร้อมกันได้อย่างไร
evil_potato

3
@evil_potato shift + iจะสลับไฟล์ที่ซ่อนอยู่ หากคุณต้องการตั้งเป็นพฤติกรรมเริ่มต้นlet NERDTreeShowHidden=1ให้เพิ่มของคุณ.vimrc
Atropo

3
@evil_potato ยังปิดโดยอัตโนมัติเมื่อเปิดไฟล์สำหรับแก้ไขเพิ่มlet NERDTreeQuitOnOpen=1ในของคุณ.vimrc
dNitro

9

วิธีเปิด NerdTree:

:NERDTreeFocus

หากต้องการสลับระหว่าง nerdtree และหน้าต่างที่เปิดอยู่ให้เปิดไฟล์:

ctrl + ww (double w)

หรือ

ctrl + w + (h/j/k/l)

หากต้องการปิด NerdTree (ในหน้าต่าง nerdtree):

:q

3

สิ่งนี้จะทำในสิ่งที่คุณขอ:

nnoremap <silent> <expr> <F6> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"

1

หากคุณต้องการปิดหน้าต่าง NERDTree ตรวจสอบให้แน่ใจว่าคุณอยู่ในเมนู NERDTree คุณสามารถสลับหน้าต่างโดยใช้ctrl+wจากนั้นพิมพ์:qเพื่อปิดหน้าต่าง NERDTree เพื่อที่คุณจะถูกทิ้งไว้กับหน้าต่างเพื่อแก้ไขโค้ดของคุณ


นี่คือสิ่งที่ฉันกำลังมองหา แต่สิ่งที่เกี่ยวกับการเปิดอีกครั้งฉันจำเป็นต้องแมปกุญแจอื่นหรือมีทางลัดพื้นเมืองที่จะเปิด NERDTree อีกครั้ง?
Deesbek

0

ฟังก์ชั่นต่อไปนี้ติดตามบัฟเฟอร์ netrw ที่เปิดอยู่และการโทรLexploreตามลำดับ เพิ่มลงในของคุณ.vimrcและเลือกรหัสการแมปของคุณ

let g:NetrwIsOpen=0

function! ToggleNetrw()
    if g:NetrwIsOpen
        let i = bufnr("$")
        while (i >= 1)
            if (getbufvar(i, "&filetype") == "netrw")
                silent exe "bwipeout " . i 
            endif
            let i-=1
        endwhile
        let g:NetrwIsOpen=0
    else
        let g:NetrwIsOpen=1
        silent Lexplore
    endif
endfunction

noremap <silent> <F2> :call ToggleNetrw()<CR>

4
คุณช่วยอธิบายได้อย่างไรว่ามันดีกว่าคำสั่งNERDTreeToggleที่มากับ NerdTree หรือไม่?
statox

@statox - แนวคิดคือการเปิดด้วยคีย์ singe (หรืออาจรวมกันสองปุ่ม) - แทนที่จะพิมพ์ ":" + "N" + "E" + "R" + "D" + "T" + "r" + "E" + "E" Enterและตี สิ่งที่ฉันตามมาตอนนี้ :)
pesho hristov

1
@peshohristov หากเป้าหมายคือการลดจำนวนการกดแป้นพิมพ์ฉันคิดว่าการทำแผนที่ในสายของnnoremap <single-key> :NERDTreeToggle<CR>การหลอกลวงนั่นคือเหตุผลที่ฉันขอให้ OP ให้รายละเอียดเพิ่มเติมเกี่ยวกับประโยชน์ของคำตอบของพวกเขา
statox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.