ฉันจะโหลด vimrc ของฉันใหม่ได้อย่างไรโดยไม่ต้องออกจาก Vim


49

เมื่อฉันทำการเปลี่ยนแปลง.vimrcฉันมักจะออกเป็นกลุ่มและเปิดมันอีกครั้ง มีวิธีที่ง่ายกว่าในการโหลดการ.vimrcเปลี่ยนแปลงใหม่หรือไม่

คำตอบ:


46

วิ่ง:

:source $MYVIMRC

ด้านในเป็นกลุ่มเพื่อโหลดvimrcไฟล์ซ้ำ หรือรุ่นที่สั้นกว่า:

:so $MYVIMRC

ตามที่กล่าวไว้ในความคิดเห็นโดยkenorb

คุณอาจพบว่ามีประโยชน์ในการแมปแบบฟอร์มใดรูปแบบหนึ่งกับคีย์ ตัวอย่างเช่น:

nnoremap <Leader>r :source $MYVIMRC<CR>

2
:so $MYVIMRCทางลัด:
kenorb

@kenorb: ฉันได้เพิ่มความเป็นไปได้นี้ ขอบคุณที่พูดถึงมัน!
พอล Gessler

:so $m<Tab> ←การตัดสั้นพิเศษ
Aaron Thoma

3
:so %บันทึกการกดแป้นพิมพ์สองมากขึ้นด้วย %ถูกตั้งค่าเป็นชื่อไฟล์ปัจจุบันของบัฟเฟอร์ที่คุณแก้ไขในกรณีนี้$MYVIMRC
cbaumhardt

1
วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการโหลด vimrc อีกครั้งโดยอัตโนมัติเมื่อบันทึก - ตรวจสอบคำตอบอื่น ๆ
Tom Hale

20

หากคุณต้องการโหลดไฟล์ใหม่อีกครั้ง

:source $MYVIMRC

อย่างที่เปาโลเขียนนั้นถูกต้อง หากคุณเปลี่ยน vimrc บ่อยครั้งคุณสามารถเพิ่มสิ่งนี้ในไฟล์ vimrc ของคุณ:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

นี้จะโหลดไฟล์เมื่อคุณเขียน (จากภายในเซสชันเป็นกลุ่ม


1
โจฮัน: เราจำเป็นต้องแก้ไข. vimrc ผ่าน vim สำหรับคำสั่งนี้เพื่อให้แหล่งไฟล์โดยอัตโนมัติหรือไม่?
Sai Manoj Kumar Yadlapati

5
หมายเหตุไฟล์ vimrc ยังสามารถเรียกสิ่งอื่น ๆ ได้เช่น vimrc (หากอยู่ใน ~ / .vim)
user50136

1
@SaiManojKumarYadlapati ใช่อย่างที่บอกไปแล้วว่านี่จะต้องเป็นช่วงที่อาเจียนเหมือนกัน Bufwritepost เกิดขึ้นเมื่ออาเจียนเขียน
johannes

ปัญหานี้: (1) ไม่ทำงาน.vim/vimrc, (2) จะสร้างซ้ำกันautocmdดังนั้นการบันทึกแต่ละครั้งจะช้าลงเนื่องจากไฟล์จะถูกโหลดซ้ำหลายครั้ง (3) ไม่ทำงานกับ vim-tiny ซึ่งไม่ได้ทำงาน มี autocmd และยังคงเป็นค่าเริ่มต้นในการแจกแจงลินุกซ์บางอย่าง ดูคำตอบของฉันเพื่อแก้ไขปัญหาเหล่านี้
Tom Hale

2
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

หากต้องการโหลดซ้ำโดยอัตโนมัติเมื่อบันทึกเพิ่มสิ่งต่อไปนี้ใน$MYVIMRC:

if has ('autocmd') " Remain compatible with earlier versions
 augroup vimrc     " Source vim configuration upon save
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw
  augroup END
endif " has autocmd

จากนั้นเป็นครั้งสุดท้ายให้พิมพ์:

:so %

ครั้งต่อไปที่คุณบันทึกvimrcจะถูกโหลดซ้ำโดยอัตโนมัติ

คุณสมบัติ:

  • บอกผู้ใช้ว่าเกิดอะไรขึ้น (เช่นการล็อกอินด้วย:messages)
  • จัดการชื่อต่าง ๆ สำหรับไฟล์การกำหนดค่า
  • ตรวจสอบให้แน่ใจว่ามันจะตรงกับไฟล์การกำหนดค่าจริงเท่านั้น (ไม่สนใจการคัดลอกในไดเรกทอรีอื่นหรือfugitive://ต่างกัน)
  • จะไม่สร้างข้อผิดพลาดหากใช้ vim-tiny

แน่นอนว่าการโหลดอัตโนมัติจะเกิดขึ้นเฉพาะเมื่อคุณแก้ไขvimrcเป็นกลุ่ม

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