วิธีการขยาย / ยุบส่วนต่างใน Vimdiff?


295

ฉันเริ่มใช้ vimdiff วันนี้และต้องการทำบางสิ่งที่ฉันได้รับอนุญาตจากบรรณาธิการต่าง ๆ ที่ใช้ Windows (เช่นขยาย / ยุบส่วนต่างมีการขยายไฟล์แบบเต็ม / แตกต่างเพียง 3 บริบทด้านบนหรือ ด้านล่าง ฯลฯ ) ขณะนี้ฉันรู้เพียงคำสั่งต่อไปนี้:

แป้นพิมพ์ลัด:

  • do - รับการเปลี่ยนแปลงจากหน้าต่างอื่นไปที่หน้าต่างปัจจุบัน

  • dp - นำการเปลี่ยนแปลงจากหน้าต่างปัจจุบันไปไว้ในหน้าต่างอื่น

  • ]c - ข้ามไปยังการเปลี่ยนแปลงต่อไป

  • [c - ข้ามไปยังการเปลี่ยนแปลงก่อนหน้า

  • CTRL+ W, w- สลับไปที่หน้าต่างอื่น ๆ ที่แยก ( CTRL+ W, CTRL+ Wทำสิ่งเดียวกันในกรณีที่คุณปล่อยCTRLกุญแจไปทีหลัง)

ใครบางคนสามารถชี้ให้ฉันไปในทิศทางที่ถูกต้องเพื่อให้ฉันสามารถทำซ้ำคุณสมบัติที่คล้ายกันได้หรือไม่?

มันจะดีถ้าฉันสามารถขยาย / ยุบเส้นรอบส่วนต่างได้


2
สำหรับทางลัดในการเพิ่ม / ย้อนกลับรายการการเปลี่ยนแปลงที่ยาวนานดูstackoverflow.com/q/6093746/212942
TCSGrad


1
มันสนุกมากที่ได้เห็นคำถามที่ถูกปิดหลังจากผ่านไปกว่า 4 ปีโดยเป็นโพสต์ 3 อันดับแรกเมื่อ 'vimdiff' เป็น googled!
TCSGrad

คำตอบ:


241

นอกเหนือจากที่คุณพูดถึงฉันใช้บ่อย ๆ เมื่อทำสิ่งต่อไปนี้:

  • :diffupdate :diffu-> คำนวณค่าดิฟเฟอเรนเชียลซึ่งมีประโยชน์เมื่อทำการเปลี่ยนแปลงหลาย ๆ ครั้งกลุ่มของ VIM จะไม่แสดงการเปลี่ยนแปลงเล็กน้อยอีกต่อไป โปรดทราบว่าจะใช้งานได้หากไฟล์ได้รับการแก้ไขภายใน vimdiff มิฉะนั้นให้ใช้:
    • :e เพื่อโหลดไฟล์ใหม่หากมีการแก้ไขนอก vimdiff
  • :set noscrollbind-> ปิดการใช้งานการเลื่อนพร้อมกันชั่วคราวบนบัฟเฟอร์ทั้งสองเปิดใช้งานโดย:set scrollbindและเลื่อนอีกครั้ง

ที่สุดของสิ่งที่คุณขอเป็นพับ: บทคู่มือผู้ใช้ที่เป็นกลุ่มบนพับ นอก diffs ฉันบางครั้งใช้:

  • zo -> เปิดฝาพับ
  • zc -> ปิดฝาพับ

แต่คุณอาจได้รับการบริการที่ดีขึ้นโดย:

  • zr -> ลดระดับการพับ
  • zm -> อีกหนึ่งระดับการพับโปรด

หรือแม้กระทั่ง:

  • zR -> ลดการพับลงอย่างสมบูรณ์ฉันพูด!
  • zM -> พับมากที่สุด!

สิ่งอื่น ๆ ที่คุณถามใช้การพับเส้น n สามารถพบได้ในส่วนคู่มือการอ้างอิงเสียงเรียกเข้าบนตัวเลือกผ่านทางส่วนต่าง ๆ :

  • set diffopt=<TAB>context:nแล้วปรับปรุงหรือเพิ่ม

คุณควรดูที่ส่วนคู่มือผู้ใช้ที่แตกต่างกัน


ครอบคลุมมากแน่นอน !! ฉันจะตรวจสอบลิงก์ที่คุณพูด แต่ยังคงเปิดคำถามไว้สองสามวันเพื่อดูว่าฉันได้รับคำตอบเพิ่มหรือไม่ (ฉันโพสต์ในวันหยุดสุดสัปดาห์
TCSGrad

คุณรู้หรือไม่ว่า vimdiff สามารถใช้สำหรับการรวม / การแก้ไข 3 ทาง ฯลฯ ได้หรือไม่ มันจะยอดเยี่ยมจริงๆ !!
TCSGrad

1
@ shan23 สำหรับ 3 วิธีการควบรวมกิจการ (สำหรับคอมไพล์) ตรวจสอบนี้ออก มีความคิดเห็นเกี่ยวกับ svn ด้วย ยังคงพยายามคิดคำสั่งเมื่อคุณมี 4 บัฟเฟอร์ (do / dp ไม่ทำงาน)
quornian

เพื่อ:set noscrollbindให้มีผลบังคับใช้จะต้อง:set nocursorbindใช้ซึ่งไม่ใช่ค่าเริ่มต้น ดังนั้นต้องปรับตัวเลือกทั้งสอง
เลือด

4

ตั้งค่า vimdiff เพื่อข้ามขนาดตัวพิมพ์

ต้องเริ่มเป็นกลุ่มแตกต่างกับ

 gvim -d main.sql backup.sql &

ฉันพบว่าไฟล์หนึ่งไฟล์ที่น่ารำคาญมีคีย์เวิร์ดของ MySQL เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่อื่น ๆ ที่แสดงความแตกต่างในแต่ละบรรทัด

:set diffopt+=icase

การอัปเดตหน้าจอแบบไดนามิกและคุณสามารถปิดได้อย่างง่ายดายอีกครั้ง


ในขณะที่นี่เป็นเคล็ดลับที่ดีฉันไม่เห็นว่ามันเกี่ยวข้องกับคำถามในมือ (วิธีการขยายและยุบส่วนต่างใน vimdiff)
Paul Stelian

3

ที่จริงแล้วถ้าคุณทำCtrl+W Wคุณจะไม่ต้องเพิ่มส่วนเสริมCtrlนั้น ทำสิ่งเดียวกัน


14
ฉันพบว่า ^ W ^ W เร็วกว่ามากในการพิมพ์เร็วกว่า ^ W w
ฮอบส์

คิดว่านี่น่าจะคุ้มค่าที่จะกล่าวถึงgithub.com/ankr/dotfiles/blob/master/files/vimrc#L103
ankr

0

ctrl + w, w ตามที่กล่าวไว้สามารถใช้สำหรับการนำทางจากบานหน้าต่างหนึ่งไปยังอีกบานหนึ่ง

ตอนนี้คุณสามารถเลือกการเปลี่ยนแปลงเฉพาะอย่างเดียวและวางลงในบานหน้าต่างอื่นดังต่อไปนี้ที่นี่ฉันจะให้เช่นถ้าฉันต้องการที่จะเปลี่ยนชิ้นส่วนของรหัสจากบานหน้าต่าง 1 ถึงบานหน้าต่าง 2 และปัจจุบันเคอร์เซอร์ของฉันอยู่ในบานหน้าต่าง 1

  • ใช้ Shift-v เพื่อเน้นบรรทัดและใช้ปุ่มขึ้นหรือลงเพื่อเลือกส่วนของรหัสที่คุณต้องการและดำเนินการต่อจากขั้นตอนที่ 3 เขียนด้านล่างเพื่อวางการเปลี่ยนแปลงในบานหน้าต่างอื่น

  • ใช้โหมดภาพแล้วเปลี่ยนมัน

    1 คลิก 'v' สิ่งนี้จะนำคุณไปสู่โหมดภาพ 2 ใช้ปุ่มขึ้นหรือลงเพื่อเลือกรหัสที่คุณต้องการ 3 คลิกที่ปุ่ม Esc 'Escape 4 ตอนนี้ใช้' yy 'เพื่อคัดลอกหรือ' dd 'เพื่อตัดการเปลี่ยนแปลง 5 สิ่ง' ctrl + w, w 'เพื่อไปยังบานหน้าต่าง 2 6 คลิก' p 'เพื่อวางการเปลี่ยนแปลงตามที่คุณต้องการ


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