เป็นไปได้ไหมที่จะใช้ฟังก์ชั่นไคลเอนต์เซิร์ฟเวอร์ของ vim เพื่อรักษาการตั้งค่าให้ตรงกัน


11

ฉันมักจะมีหลายกลุ่มของการเรียกใช้บนเครื่องเดียวกัน เมื่อฉันทำการเปลี่ยนแปลงกับ vimrc ของฉันฉันสามารถ:source ~/.vimrc(ด้วยการแมปง่าย ๆ หรือ autocmd) แต่เพื่อให้อินสแตนซ์ที่ทำงานอยู่ทั้งหมดแสดงถึงการเปลี่ยนแปลงฉันต้องเรียกใช้งานนั้นในแต่ละครั้งแยกกัน ฉันสามารถใช้clientserverคุณสมบัตินี้เพื่อบอกอินสแตนซ์ทั้งหมดให้โหลด vimrc ของฉันใหม่ได้หรือไม่

ฉันจะสนใจโซลูชันที่ไม่ได้ใช้clientserverด้วย

คำตอบ:


7

คุณสามารถบอกให้เซิร์ฟเวอร์ Vim ทำการโหลดไฟล์ vimrc ใหม่อีกครั้งเช่น:

$ vim --servername MARTIN --remote-send '<Esc>:source $MYVIMRC<CR>' 

และคุณสามารถรับรายชื่อเซิร์ฟเวอร์ทั้งหมดด้วย:

$ vim --serverlist
MARTIN
CARPETSMOKER

ซึ่งสามารถใช้ร่วมกับการforวนซ้ำได้:

$ for s in $(vim --serverlist); do vim --servername "$s" --remote-send '<Esc>:source $MYVIMRC<CR>'; done

นับได้ว่าเป็นจำนวนมากของการพิมพ์คุณสามารถวางไว้ในสคริปต์เชลล์ใน~/bin/reload-vimrc; แน่นอนคุณสามารถเรียกมันได้จากภายในเสียงเรียกเข้า:

:!reload-vimrc

หากคุณใช้งาน Linux และต้องการที่จะคลั่งไคล้จริงๆคุณสามารถใช้inotifywatchจากinotify-toolsเพื่อตรวจสอบการเปลี่ยนแปลงไฟล์ vimrc ของคุณและดำเนินการสิ่งนี้โดยอัตโนมัติในทุกการเปลี่ยนแปลง (ไม่ได้ทดสอบตัวอย่างที่ดัดแปลงจาก manpage)

$ inotifywatch -v -e modify -t 60 -r ~/.vimrc ~/.vim

ฉันจะไม่แนะนำสิ่งนี้แม้ว่า ... หากคุณบังเอิญบันทึกไฟล์ด้วยข้อผิดพลาดทางไวยากรณ์คุณสามารถทำให้เซสชัน vim ทั้งหมดของคุณ ...


-1

ฉันไม่รู้เกี่ยวกับไคลเอนต์เซิร์ฟเวอร์ แต่เนื่องจากคุณบอกว่าคุณสนใจโซลูชันอื่น ๆ ฉันขอแนะนำให้ดูที่การเขียนเกี่ยวกับ dotfiles จาก Github

https://dotfiles.github.io

เห็นได้ชัดว่าคุณไม่จำเป็นต้องใช้ Github แต่แนวความคิดนั้นฟังดูแล้วน่าจะใช้กันอย่างแพร่หลาย


ในขณะที่ฉันคิดว่าการมี dotfiles ของคุณภายใต้การควบคุมเวอร์ชันนั้นยอดเยี่ยมฉันได้ถามเฉพาะเกี่ยวกับอินสแตนซ์ของการเรียกใช้บนเครื่องเดียวกัน (ฉันได้อัปเดตคำถาม)
xthrd

1
-1; คำตอบนี้ไม่มีผลต่อคำถามที่ถาม คำถามคือเกี่ยวกับการโหลด vimrcไม่จัดการ vimrc
Martin Tournoij

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