โหมดไคลเอนต์ - เซิร์ฟเวอร์ใช้ประโยชน์อะไรได้บ้าง?


23

ฉันรู้ว่าเป็นกลุ่มช่วยให้โหมดเซิร์ฟเวอร์ไคลเอนต์ ( :h clientserver): มันเป็นไปได้ที่จะเปลี่ยนเป็นเซิร์ฟเวอร์ซึ่งจะได้รับคำสั่งบางอย่างและรันพวกเขาและในฐานะลูกค้าที่จะส่งคำสั่งไปยังเซิร์ฟเวอร์

ฉันทำงานได้ แต่ฉันไม่สามารถจินตนาการถึงการใช้คุณสมบัตินี้อย่างเป็นประโยชน์: ในกรณีใดบ้างที่มีประโยชน์และเวิร์กโฟลว์ใดที่สามารถสร้างได้โดยใช้คุณสมบัตินี้

ดังนั้นคำถามของฉันง่าย: การใช้โหมดไคลเอนต์เซิร์ฟเวอร์ของ Vim คืออะไร?

(ฉันชี้ให้เห็นอีกครั้งว่าคำถามของฉันไม่ได้เกี่ยวกับวิธีการทำงานหรือวิธีการทำงาน แต่ทำไมต้องใช้)



2
ฉันอยากจะปิดเรื่องนี้ให้กว้างเกินไป
muru

3
ฉันจะเข้าใจการปิดที่กว้างเกินไป SE อาจไม่ใช่แพลตฟอร์มที่ปรับให้เข้ากับคำถามนี้มากที่สุด แต่ฉันรู้สึกว่าฉันขาดอะไรบางอย่างเกี่ยวกับคุณลักษณะนี้ดังนั้นฉันคิดว่าคนอื่น ๆ จะได้ประโยชน์จากคำตอบเหล่านี้
statox

คำตอบ:


21
  • ก่อนที่ฟีเจอร์ล่าสุดของช่องทาง / งานของ Vim 7.4 คุณลักษณะไคลเอนต์เซิร์ฟเวอร์เป็นวิธีเดียวที่จะทำการคอมไพล์แบ็คกราวน์ที่เหมาะสม - โดยไม่ต้องพึ่งพา Python เราเริ่มต้นการคอมไพล์เป็นงานพื้นหลังและเมื่อเสร็จแล้วจะแจ้งกลับไปเป็นกลุ่มด้วยช่องไคลเอนต์ - เซิร์ฟเวอร์ว่าเสร็จแล้ว

  • นอกจากนี้ยังใช้ "ปลั๊กอิน" ทางอ้อมเช่น pyclewn เพื่อรวมดีบักเกอร์เข้าเป็นกลุ่ม ที่จริงแล้ว pyclewn ใช้คุณสมบัติ + netbeans (ที่สร้างขึ้นจาก + clientserver) โครงการเด่นอื่น ๆ ใช้ NetBeans นี้ติดต่อเพื่อบูรณาการที่เป็นกลุ่มที่มี IDE - :h netbeans-introดู

  • นอกจากนี้ยังใช้โดยปลั๊กอินทดสอบบางประเภทเช่น vimrunner เพื่อเรียกใช้การทดสอบใน Vim จากบรรทัดคำสั่ง ฉันใช้มันเพื่อทดสอบปลั๊กอินของฉันกับเทรวิส

  • ฉันยังจำการซิงโครไนซ์คลิกของฉันในอินเทอร์เฟซ xdvi กับซอร์สโค้ด LaTeX ของฉันด้วย + clientserver


1
ดังนั้นจึงเป็นประโยชน์ที่จะไม่ถูกใช้โดยผู้ใช้โดยตรง ขอบคุณสำหรับคำตอบที่น่าสนใจ
statox

4
@statox ใช่ นั่นคือกรณีการใช้งานหลักที่ฉันเห็น: การรวมอย่างง่ายกับเครื่องมือภายนอก ง่าย ๆ เพราะเราสามารถป้อนคำสั่ง vim และฟังก์ชั่นผ่านบรรทัดคำสั่ง
Luc Hermitte

1
Eclim เป็นอีกตัวอย่างหนึ่งของสิ่งนี้
goldilocks

13

การใช้งานของฉันนี้ง่ายกว่าเล็กน้อย (และอาจเป็นเรื่องธรรมดา) กว่าของ Luc Hermitte

หากคุณเริ่มต้นอินสแตนซ์ของgvimด้วยการคอมไพล์ใน (และเป็นและเป็นเวลานานเช่น on, linux distros หลักเช่น Fedora และ Debian) มันเริ่มต้นในโหมดเซิร์ฟเวอร์ ฉันเน้น "gvim" เพราะสิ่งที่ฉันกำลังจะอธิบายดูเหมือนจะไม่นำไปใช้กับvimอินสแตนซ์เอกพจน์ในเทอร์มินัล GUI (แม้ว่าฉันคิดว่ามันอาจเป็นได้ถ้าคุณใช้พารามิเตอร์ที่เหมาะสม)

อย่างไรก็ตามคุณสามารถเปิดไฟล์ใดก็ได้จากทุกที่ในอินสแตนซ์ gvim นั้นด้วยgvim --remote [file path](โดยไม่--servernameระบุ) ฉันเป็นแฟนของเรื่องนี้เพราะฉันไม่ได้นำทางระบบไฟล์โดยตรงกับกลุ่ม; แทนฉันใช้เบราว์เซอร์ไฟล์ดั้งเดิม (ผู้บัญชาการเที่ยงคืน) - หรือมากกว่านั้นกองของพวกเขาเปิดไปยังสถานที่ต่าง ๆ เนื่องจากmcมีน้ำหนักเบาและอนุญาตให้สกินชุดรูปแบบสีต่างๆทำให้การแยกแยะความแตกต่างระหว่างพวกเขาง่ายขึ้น แท็บอย่างน้อยหนึ่งเทอร์มินัล GUI) อย่างไรก็ตามฉันคิดว่าหลักการเดียวกันนี้จะใช้กับไฟล์เบราว์เซอร์ใด ๆ ที่ช่วยให้คุณสามารถปรับแต่งฮอตคีย์ที่คุณสามารถเชื่อมโยงgvim --remote %fได้ ในmcฉันมีมันในเมนูผู้ใช้ดังนั้น F2 + e และไฟล์ที่ไฮไลต์ / ที่เลือกจะถูกส่งไปยังอินสแตนซ์ gvim

นี้ได้รับการเล็ก ๆ น้อย ๆ ที่ดีกว่า: ถ้าคุณเปิดที่สองเช่น gvim พูดบนจอ # 2 ของเดสก์ท็เดียวกันหรือสก์ท็อปที่แยกต่างหากและบางทีอาจจะเป็นสกีมสีที่แตกต่างกันในที่หนึ่งและครั้งนี้ให้มันชัดเจน--servername fooคุณสามารถส่ง ไฟล์ไปยังอินสแตนซ์นั้นแทนด้วย:

 gvim --servername foo --remote [file path]

สิ่งที่อาจมีหรือไม่มีประโยชน์ขึ้นอยู่กับขอบเขตของสิ่งที่คุณกำลังทำ ฯลฯ


นั่นเป็นกรณีการใช้งานที่ฉันไม่ได้นึกภาพ แต่ถ้าคุณไม่ต้องการดูไฟล์ของคุณจาก Vim ที่สามารถแก้ปัญหาได้ดี
statox

ดีฉันจะไม่คิดว่ามันเป็น "การทำงาน" เนื่องจากสิ่งอื่น ๆ ที่ฉันทำอย่างน้อยที่สุดกับเบราว์เซอร์ไฟล์ในเวลาเดียวกันคือการจ้องมองที่ไฟล์ในตำแหน่งเดียวกัน (สำหรับข้อความผ่านlessซึ่งเป็นทันทีและหนึ่ง คีย์เพื่อออก) และอาจส่งไปยังแอปพลิเคชันอื่นนอกเหนือจากเสียงเรียกเข้าที่มีโหมดระยะไกลเช่นนี้ (หลายสิ่งที่ทำในขณะนี้รวมถึง "บรรณาธิการ" อื่น ๆ ซึ่งบางครั้งฉันใช้เพื่อปล่อยแท็บส่วนหัวของสแต็คเพื่อดู . วางวิธีอื่นผมว่าการนำ FS กับกลุ่มดูเหมือนว่าการทำงานรอบไม่ได้ใช้mcและ--remote;)
Goldilocks

1
Yup ที่เป็นขั้นตอนการทำงานในตัวเองและไม่ได้เป็นวิธีแก้ปัญหา, การใช้ถ้อยคำของฉันคือไม่เหมาะ แต่ผมเข้าใจความคิดของคำตอบของคุณ ;-)
statox

1
เมื่อทำงานกับ Visual Studio ฉันจะทำการแก้ไขเป็นส่วนใหญ่ ฉันใช้คุณสมบัตินี้เพื่อเปิดไฟล์ปัจจุบัน (พร้อมเคอร์เซอร์ในตำแหน่งเดียวกัน) ที่การกดแป้น ดูส่วนVim เป็นเครื่องมือภายนอกในหน้ารวม gvim กับ Visual Studio Vim Tips สำหรับวิธีการตั้งค่านี้
รวย

5

การพัฒนาแบบฝัง หลายครั้งในการพัฒนาแบบฝังคุณมีซ็อกเก็ต IP แต่มีพื้นที่ฮาร์ดไดรฟ์ในพื้นที่ จำกัด หรือไม่มีหน่วยความจำที่ไม่ลบเลือนหรือจำนวนอื่น ๆ คุณสามารถเริ่มเซิร์ฟเวอร์บนบอร์ดฝังตัวจากนั้นไคลเอนต์ลงในคอมพิวเตอร์การพัฒนาของคุณและตั้งค่าการกำหนดค่าและแท็กทั้งหมดไว้ในเครื่อง


1

ฉันเขียนวิทยานิพนธ์ระดับปริญญาโทโดยใช้ Vim, LaTeX และ BibTeX ในการจัดการการอ้างอิง BibTeX ของฉันฉันใช้โปรแกรมที่เรียกว่าJabRef JabRef มีคุณสมบัติเล็ก ๆ น้อย ๆ ที่เป็นระเบียบซึ่งคุณสามารถเชื่อมต่อกับอินสแตนซ์ของเซิร์ฟเวอร์ Vim และจากนั้นคุณสามารถ "ผลักดัน" การอ้างอิง BibTeX จาก JabRef ไปยังเอกสาร LaTeX ที่คุณกำลังแก้ไขใน Vim


1

ขั้นตอนการทำงานของฉันคล้ายกับสิ่งที่goldilocksพูดในคำตอบ ฉันใช้:terminalคุณสมบัติของ vim8 ร่วมกับ--remoteตัวเลือก ฉันรักษาเค้าโครงหน้าต่าง 2 ในกลุ่ม รหัสในหน้าต่างด้านซ้ายและเทอร์มินัลทางด้านขวา ฉันใช้หน้าต่างด้านขวา (เทอร์มินัล) เพื่อเรียกใช้การคอมไพล์นำทางระบบไฟล์และเปิดไฟล์ในอินสแตนซ์กลุ่มปัจจุบัน (จากเทอร์มินัล) โฟลว์นี้ช่วยให้ฉันทำงานโดยใช้เมาส์น้อยลง

ฉันใช้ gvim และ icewm (ตัวจัดการหน้าต่างควรทำ)

เริ่มต้นอินสแตนซ์ gvim

gvim somefile

ภายใน gvim เทอร์มินัลเปิดในการแบ่งตามแนวตั้ง

:botright vertical terminal
(or) short form
:bo vert term 
"botright" splits the window to right

ในหน้าต่างเทอร์มินัลแยก

gvim --remote-send '<C-w><C-w>' --remote anotherfile

"--remote-send" will send Ctrl-W Ctrl-W to remote gvim instance(in our case, current instance) 
to put the cursor in the left window. Otherwise, the terminal split would be replaced by
'anotherfile' buffer.
"--remote" will open 'anotherfile' in left window.

คุณสามารถสร้างนามแฝงสำหรับคำสั่งแบบยาวเหล่านี้ใน. zshrc / .bashrc ของคุณและย่อให้สั้นลงตามที่คุณต้องการ

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

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