บล็อกการแก้ไข * สด * ใน Emacs หรือ Vim


9

jEdit รองรับการแก้ไขบล็อค แต่ Emacs และ Vim ดูเหมือนจะมีปัญหาการใช้งานที่ร้ายแรงในเรื่องเดียวกัน หากใครบางคนสามารถกรอกสิ่งที่ไม่รู้จักที่นี่ก็จะเป็นประโยชน์มากกว่าที่จะใช้โปรแกรมแก้ไขทั้งสอง

  • การเลือกสี่เหลี่ยมจริง : ในกรณีที่การเลือกบนหน้าจอเป็นสี่เหลี่ยมผืนผ้าไม่ใช่การเลือกเชิงเส้นซึ่งจะใช้ในการคำนวณภูมิภาคเนื่องจาก Emacs ดูเหมือนจะถูก จำกัด
    • jEdit: กดค้างไว้Ctrlและเลือก
    • เป็นกลุ่ม: คลิกCtrl-vและเลือก
    • Emacs: ไม่ทราบ ; ดูเหมือนว่าจำเป็นต้องมีปลั๊กอิน 400+ บรรทัด
  • การแก้ไขรูปสี่เหลี่ยมผืนผ้าแบบสด : ดูว่าผลลัพธ์จะเป็นอย่างไรในทุกบรรทัดขณะที่คุณแก้ไขหลังจากการเลือกบล็อก
    • jEdit: เพียงแค่เริ่มพิมพ์และคุณจะเห็นผลลัพธ์สุดท้ายตามที่คุณไป
    • เป็นกลุ่ม: คลิกShift-iและพิมพ์ จะแสดงผลลัพธ์สุดท้ายในบรรทัดแรกเท่านั้นจนกว่าคุณEscจะกดเพื่อออกจากโหมดแทรก ไม่ทราบว่ามีวิธีการดูผลลัพธ์ในทุกบรรทัดทันทีหรือไม่
    • Emacs: ไม่ทราบ ; ดูเหมือนว่าวิธีเดียวที่จะและการตั้งค่าข้อความที่จะเติมในหลังจากที่กดC-x r tRet
  • การเลือกเริ่มต้นและสิ้นสุดในตำแหน่งที่อยู่ด้านนอกข้อความ : ตัวอย่างเช่นฉันต้องการลบอักขระตัวแรกของ N แต่ละบรรทัด แต่บรรทัดแรกและบรรทัดสุดท้ายมีอักขระน้อยกว่า N ตัว
    • jEdit: ไม่มีปัญหาการเลือกบล็อคสามารถเริ่มต้นนอกข้อความได้
    • เป็นกลุ่ม: :set virtualedit=block.
    • Emacs: อาจจะเป็นไปได้ด้วยและartist-mode / หรือpicture-mode
  • วางบล็อกอินไลน์ : วางบล็อกที่คัดลอกราวกับว่าคุณกำลังวางหลายบรรทัดเช่นเดียวกับในผลักข้อความที่มีอยู่แล้วลงไม่ถูกต้อง
    • jEdit: ค่าเริ่มต้น หากต้องการวางบล็อกเป็นบล็อกคุณต้องเลือกบล็อกอื่นก่อน
    • เป็นกลุ่ม: OEscVp.
    • Emacs: ไม่ระบุ

ฟังก์ชั่นการเลือกบล็อกทั่วไป Emacs สามารถพบได้ในปลั๊กอินcua-mode


เห็นได้ชัดว่าโหมดการแก้ไขคอลัมน์ของ Emacs สามารถทำการแก้ไขแบบสี่เหลี่ยมผืนผ้าได้จริง: youtube.com/watch?v=k-6BVjlBSVo
ทอม

แค่การสังเกตุเกี่ยวกับ emacs 400+ บรรทัด "plugin" .. addon ที่คล้ายกันสำหรับ gedit ที่เรียกว่าการแก้ไขแบบหลายบรรทัดมีโค้ดไพ ธ อนมากกว่า 1,000 บรรทัด สำหรับฉัน pugin นั้นมีประโยชน์มาก (ฉันจะอยู่รอดได้อย่างไรถ้าไม่มี) ขนาดนั้นเป็นเชิงวิชาการ ... และถ้า emacs ตัวใดตัวหนึ่งทำงานได้ตามที่โฆษณาฉันจะมีความสุขมากกว่าที่จะใช้ แต่ฉันได้รับข้อผิดพลาดในการโหลด เมื่อฉันวิ่ง"บรรทัดคำสั่งปกติชื่อไฟล์: หาเรื่องออกจากช่วง: '', 1" :( ... มันเป็นเพียงสิ่งที่ฉันได้รับการมองหามากเกินไป ..
Peter.O

4
สำหรับผู้ที่ไม่ได้ใช้ jEdit โปรดอธิบายคำศัพท์ของคุณ ฉันไม่เข้าใจความหมายของคำว่า "สด" ที่นี่หมายถึงอะไร "การแก้ไขแบบสี่เหลี่ยมสด" หรือ "การวางบล็อกแบบอินไลน์" หมายถึงอะไร
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


7

ฉันสามารถตอบ Vim ได้ แต่ไม่ใช่ Emacs

เริ่มต้นและสิ้นสุดการเลือกในตำแหน่งภายนอกข้อความ:

:set virtualedit=blockจะเปิดใช้งานพฤติกรรมที่คุณต้องการ คุณสามารถวางโคลอนเริ่มต้นและเพิ่มลงใน. vimrc ของคุณได้หากต้องการ สำหรับข้อมูลเพิ่มเติม:help 'virtualedit'จากภายในเป็นกลุ่ม

วางบล็อกอินไลน์:

หากคุณเพิ่งกดpในโหมดคำสั่ง Vim จะแทรกบล็อกกดอักขระไปทางขวาในแต่ละบรรทัด หากคุณเลือกบล็อกอื่นและการเข้าชมpเป็นกลุ่มจะแทนที่บล็อกนั้นด้วยบล็อกที่วาง

คุณสามารถวางบล็อก "linewise" OEscVpด้วยคีย์ลำดับคำสั่งโหมด สิ่งนี้จะแทรกบรรทัดด้านบนบรรทัดปัจจุบัน ( O Esc) เลือก linewise ( V) จากนั้นวางเหนือ ( p) คุณสามารถย่อให้สั้นลงเป็น (ตัวอย่าง) ypด้วยการแมปเช่น:nmap yp O<Esc>Vp- พิมพ์ที่แท้จริง ใช้การกดแป้นห้าครั้ง<Esc>แทนการกดปุ่ม Escape


เคล็ดลับที่ดีเกี่ยวกับvirtualedit; ต้องลองดู เกี่ยวกับการวางแบบอินไลน์โปรดดูคำถามที่ปรับปรุงแล้วสำหรับคำอธิบายเกี่ยวกับการทำงานที่คาดหวัง
l0b0

ฉันได้อัปเดตคำตอบของฉันด้วยวิธีการวางบล็อก linewise
Jander

5

ตัวอย่างเช่นฉันต้องการลบอักขระแรกของ N แต่ละบรรทัด แต่บรรทัดแรกและบรรทัดสุดท้ายมีอักขระน้อยกว่า N ตัว

Emacs: เริ่มการเลือกที่บรรทัดแรกและเพิ่มจำนวนอักขระที่หายไป (เช่นช่องว่าง) ไปยังบรรทัดสุดท้ายแล้วใช้ kill-rectangle

อีกทางหนึ่งดูartist-modeหรือpicture-modeอนุญาตให้คุณย้ายในหน้าต่างได้อย่างอิสระโดยไม่คำนึงถึงความยาวบรรทัด

วางบล็อกอินไลน์

Emacs: บันทึกบล็อกเป็นครั้งแรกโดยการฆ่าสี่เหลี่ยมหรือบันทึกลงในการลงทะเบียนจากนั้นไปที่จุดแทรกใช้สี่เหลี่ยมลบแล้วใส่สี่เหลี่ยมที่บันทึกไว้

ดูเหมือนว่าจำเป็นต้องมีปลั๊กอิน 400+ บรรทัด

ทำไม Emacs ถึงมีปัญหา? ปลั๊กอินสามารถรวบรวมและปรัชญา emacs คือคุณไม่ได้ใส่ทุกอย่างไว้ในแกน แต่ใช้ปลั๊กอินเพื่อขยายบรรณาธิการ


4

มี'โหมด cua'ซึ่งมาพร้อมกับ Emacsen 22.1 ขึ้นไปหรือตามลิงค์เพื่อดาวน์โหลด Emacs เวอร์ชั่นก่อนหน้า มีวิดีโอสั้น ๆที่แนะนำการใช้งาน

สำหรับคำสั่งสี่เหลี่ยมผืนผ้าทั่วไปลองอ่านคู่มือซึ่งให้คำแนะนำอย่างง่าย


emacs cua-modeดูดี! +1 .. ฉันหาวิดีโอที่คุณพูดถึงไม่พบโปรดดูลิงก์ของ Tomในความคิดเห็นใต้คำถามเพื่อหาลิงก์ไปยังวิดีโอข้อมูล (ต่างกัน) ...
Peter.O

@fered Ooops, ข้อผิดพลาดการตัด / วางได้รับการแก้ไข
Trey Jackson

0

ในกลุ่มวิธีทั่วไปเพื่อลบตัวอักษร n :%s/.\{0,6\}//แรกคือการทำสิ่งที่ชอบ

%จะทำเอกสารทั้งหมด; คุณสามารถแทนที่ด้วยการเลือกหรือด้วยบรรทัดที่แท้จริงที่คุณสนใจ sคำสั่งสำหรับ "แทน" มันจะแทนที่นิพจน์ทั่วไปด้วยทุกอย่างที่คุณให้และจะจับคู่เพียงครั้งเดียวในแต่ละบรรทัดยกเว้นว่าคุณจะเพิ่มตัวเลือกเฉพาะ /เป็นตัวคั่น - นี้สามารถตัวอักษรใด ๆ แต่/มักจะใช้เว้นแต่จะเป็นข้อได้เปรียบที่จะใช้อย่างอื่น (ดังนั้นคุณจึงไม่ต้องหลบหนี/ในส่วนที่เหลือของคำสั่ง) อาร์กิวเมนต์หลังตัวคั่นแรกเป็นนิพจน์ทั่วไปที่จะใช้ในการค้นหาสตริงที่ตรงกันในการเลือกของคุณ อาร์กิวเมนต์หลังจากตัวคั่นที่สองคือสิ่งที่ตรงกันจะถูกแทนที่ด้วย

ดังนั้นคำสั่งนี้บอกว่าพบ 0 ถึง 6 อินสแตนซ์ของตัวละครใด ๆ และแทนที่ด้วยอะไร


ไม่ใช่สิ่งที่ฉันขอ
l0b0

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