วิธีเพิ่ม NERDTree ใน. vimrc


118

ฉันจะเพิ่ม NERDTree ใน. vimrc ได้อย่างไร?


ฉันอัปเดตคำตอบของฉัน ฉันไม่แน่ใจว่าคุณสามารถเพิ่มลงใน. vimrc เพื่อทำสิ่งที่คุณต้องการได้ แต่ฉันรู้ว่าคุณสามารถเรียกใช้ vim จากบรรทัดคำสั่งในลักษณะที่เปิด NERDTree โดยอัตโนมัติ ลองดู :)
Steven Kryskalla

คำตอบ:


199

โอเคเวอร์ชันก่อนหน้านี้ค่อนข้างสั้น แต่คำตอบที่คุณต้องการคือเพิ่มบรรทัดด้านล่างลงใน~/.vimrcไฟล์ของคุณ มันบอก Vim ว่าคุณต้องการตั้งค่าคำสั่งให้ทำงานเมื่อ Vim เริ่มทำงาน แต่เนื่องจากมันขึ้นอยู่กับปลั๊กอินต่างๆที่จะโหลดคุณจึงไม่ต้องการเรียกใช้จนกว่าการเริ่มต้นทั้งหมดจะเสร็จสิ้น:

autocmd VimEnter * NERDTree

อย่างไรก็ตามหากคุณรู้สึกรำคาญกับข้อเท็จจริงที่ว่าเคอร์เซอร์เริ่มต้นในหน้าต่าง NERDTree เสมอคุณสามารถเพิ่มคำสั่งอัตโนมัติที่สองซึ่งจะย้ายเคอร์เซอร์ไปที่หน้าต่างหลัก:

autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p

ฉันไม่รู้ว่าทำไม แต่มันไม่ได้ผลสำหรับฉัน ฉันต้องโทร: NERDTreeToggle ภายในกลุ่มเพื่อแสดง nerdtree ต่อไป
hgf

หากคุณใช้สคริปต์เช่น vimpager คุณควรย้ายบรรทัดเหล่านี้ไปยัง/.vim/after/plugin/NERD_tree.vimสคริปต์ของคุณเพื่อที่จะไม่พยายามดำเนินการโดยปิดปลั๊กอิน
Joshua Olson

9
คุณไม่จำเป็นต้องใช้ autocmd สองตัวแยกกัน:autocmd VimEnter * NERDTree | wincmd p
Dave James Miller

ฉันสามารถระบุเส้นทางจริงที่ต้องการเริ่มต้นได้หรือไม่ - Yup ทำงานร่วมกับโฟลเดอร์ (ไม่มีเครื่องหมายทับในตอนท้าย)
AturSams

1
ฉันชอบที่จะทำต่อไปนี้: แล้วautocmd VimEnter * NERDTree autocmd VimEnter * if argc() | wincmd p | endifด้วยวิธีนี้เคอร์เซอร์จะอยู่บน NERDTree หากฉันไม่ได้เปิดไฟล์ใดไฟล์หนึ่ง แต่ถ้าฉันเลือกไฟล์มันจะเริ่มในหน้าต่างหลัก
user2275806

20

ฉันชอบดู NERDTree เฉพาะเมื่อฉันเริ่มเป็นกลุ่มโดยไม่มีข้อโต้แย้งของไฟล์ดังนั้นฉันจึงเพิ่มสิ่งนี้ใน. vimrc ของฉัน:

autocmd VimEnter * if !argc() | NERDTree | endif

19

คุณใช้ระบบ Windows หรือ unix-y?

หากคุณอยู่ในระบบ Unix-Y ~/.vim/pluginที่คุณใส่ในปลั๊กอิน นี่คือลักษณะของไดเร็กทอรีปลั๊กอินของฉัน:

$ ls ~/.vim/plugin
NERD_tree.vim  scratch.vim  scratchfind.vim

หลังจากนั้นจะเริ่มทำงานทันที ลองใช้ vim ดังนี้:

$ vim .

ควรเปิดไดเร็กทอรีปัจจุบันในมุมมองแผนผัง NERD

หากคุณใช้ Windows คุณใส่ปลั๊กอินที่นี่: C:\Program Files\Vim\vim70\plugin


หากต้องการให้ NERDTree โหลดโดยอัตโนมัติเมื่อคุณเริ่มต้นเป็นกลุ่มให้เรียกใช้สิ่งนี้จากบรรทัดคำสั่ง:

$ vim -c "NERDTree" some_file.txt

คุณสามารถตั้งนามแฝงสำหรับสิ่งนี้ได้ใน.bashrc:

alias vimt='vim -c "NERDTree" $1'

ตอนนี้เมื่อใดก็ตามที่คุณเรียกใช้vimt(แทนvim) คุณจะเปิด NERDTree ทางด้านซ้ายของหน้าต่างด้วย

คุณยังสามารถเพิ่มคีย์ลัดเพื่อเริ่ม NERDTree ได้.vimrcด้วยวิธีนี้:

function OpenNERDTree()
  execute ":NERDTree"
endfunction
command -nargs=0 OpenNERDTree :call OpenNERDTree()

nmap <ESC>t :OpenNERDTree<CR>

ตอนนี้เมื่อคุณกดEscแล้วtมันจะเปิด NERDTree


ฉันใช้เครื่อง Unix-y ฉันติดตั้ง NERDTree แล้วสิ่งที่ฉันต้องการคือต้องมี NERDTree เพื่อเริ่มต้นเมื่อฉันพิมพ์เป็นกลุ่มในบรรทัดคำสั่ง เพื่อให้ไฟล์เบราว์เซอร์เปิดไปทางซ้ายเสมอเหมือนใน Textmate ฉันไม่รู้ว่าจะใส่อะไรลงใน vimrc เพื่อทำสิ่งนี้ฉันลอง: NERDTree แต่ดูเหมือนจะไม่รู้จักคำสั่ง ...
chutsu

2
ฉันคิดว่าฉันจะเพิ่มว่ามี: NERDTreeToggle ที่สร้างขึ้นในการทำแผนที่คุณสามารถแมปซึ่งทำให้ฟังก์ชันที่กำหนดเองของคุณค่อนข้างซ้ำซ้อน
Gavin Gilmour

1
เคล็ดลับที่ยอดเยี่ยมalias vimt='vim -c "NERDTree" $1'
pedrosaurio

8

ตามคำแนะนำ NERDTreeคุณก็สามารถใช้pathogen.vim ติดตั้งด้วย:

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
        https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

เพิ่มสิ่งนี้ใน. vimrc ของคุณ:

execute pathogen#infect()

จากนั้นติดตั้ง NERDTree:

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

และถ้าคุณต้องการเปิด NERDTree โดยอัตโนมัติเมื่อ Vim เริ่มทำงานให้เพิ่มสิ่งต่อไปนี้ใน. vimrc ของคุณ:

autocmd vimenter * NERDTree

7

คำตอบที่นี่มีปัญหาเล็กน้อย

หากคุณเรียกvim --nopluginหรือใช้สคริปต์ที่ใช้--nopluginโหมดเช่นvimpagerจะทำให้เกิดข้อผิดพลาดนี้:

Error detected while processing VimEnter Auto commands for "*":
E492: Not an editor command: NERDTree

เพื่อหลีกเลี่ยงปัญหานี้ให้ใส่คำสั่ง~/.vim/after/plugin/NERD_tree.vimแทน:

autocmd VimEnter * NERDTree

และอาจเป็นความคิดที่ดีที่จะทดสอบที่NERDtreeพร้อมใช้งานเช่น:

if exists("loaded_nerd_tree")
    autocmd VimEnter * NERDTree
endif

1
Good One ... ฉันยังใช้ Vim เป็นเพจเจอร์และเพิ่มอาร์กิวเมนต์เพื่อปิดใช้งานคำสั่งอัตโนมัติ ... export MANPAGER='col -bx | mvim -c ":set ft=man nonu nolist" -c ":autocmd!" -M -R - > /dev/null 2>&1'
Eddie B

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.