มีแพ็คเกจอะไรบ้างสำหรับการแก้ไข modal


13

มีแพ็คเกจใดบ้างสำหรับการแก้ไข modal ใน Emacs คุณใช้อะไรและทำไม

ลองโพสต์หนึ่งแพ็คเกจต่อคำตอบ ฉันเสนอข้อได้เปรียบที่กล่าวถึงและข้อบกพร่องของทุกแพ็คเกจ


นี่คือคำจำกัดความของฉันในการแก้ไขคำกริยา (ฉันไม่สามารถหาบทความ Wikipeadia เฉพาะ):

การแก้ไข Modal - สไตล์ของการแก้ไขข้อความเมื่อผู้ใช้สลับเป็นระยะระหว่าง "โหมดปกติ" เมื่อปุ่มไม่ทำให้เกิดการแทรกตัวอักษร แต่ดำเนินการต่าง ๆ กับข้อความและ "โหมดแทรก" เมื่อปุ่มแทรกอักขระที่สอดคล้องกัน อาจมีโหมดเพิ่มเติมแน่นอน บรรณาธิการสมัยใหม่ส่วนใหญ่ไม่ได้เป็นกิริยาช่วย ตัวอย่างของโปรแกรมแก้ไขข้อความ modal คือ Vi (Vim)


และ "การแก้ไขคำกริยา" คืออะไร?
Lindydancer

@Lindydancer ฉันเพิ่มความพยายามในการอธิบายแนวคิดของคำถาม
Mark Karpov

คำตอบ:


13

evilที่E xtensible VI L Ayer สำหรับ Emacs

ชื่อที่น่าสงสัยนอกเหนือจากevilนี้คือสถานะของศิลปะปัจจุบันเมื่อพูดถึงการvimเลียนแบบใน Emacs (และอาจเป็นที่ใดก็ได้ในเรื่องนั้น) รองรับฟีเจอร์มากมายที่แพ็คเกจการจำลอง Vim อื่น ๆ หลีกเลี่ยง ได้แก่ :

  • vim textobjects
  • vim ลงทะเบียน
  • vim มาโครคีย์บอร์ด
  • ex คำสั่ง

ข้อดี

  • ความเข้ากันได้กับคีย์vimหมายถึงว่าคุณจะไม่สูญเสียความจำกล้ามเนื้อเมื่อเปลี่ยนไปใช้ระบบที่ไม่มี Emacs
  • เป็นผู้ใหญ่และใช้กันอย่างแพร่หลาย (ตัวอย่างเช่นแพ็คเกจชุมชนจำนวนมาก)
    • แพคเกจมากสำหรับการได้รับการแจ้งความvimevil
  • vim ไวยากรณ์สไตล์เป็นแบบแยกส่วนและให้ยืมตัวเองเป็นอย่างดีกับส่วนขยายผู้ใช้
  • evil ตัวมันเองสามารถขยายได้มาก: สร้าง textobjects ของคุณเองโอเปอร์เรเตอร์และการเคลื่อนไหว!

ข้อเสีย

  • อาจจะต้องเล่นซอเพื่อให้เล่นได้ดีกับแพ็คเกจอื่น ๆ
    • โชคดีที่evilทำให้กรณีการใช้งานที่พบบ่อยที่สุดเป็นเรื่องง่ายขัน
  • evilเป็นระบบที่ซับซ้อนมาก การแฮ็คแกนกลางความชั่วร้ายอาจกลายเป็นเรื่องที่ค่อนข้างเกี่ยวข้อง
  • vimการโยงคีย์ไม่จำเป็นต้องถูกต้องตามหลักสรีรศาสตร์ บางครั้งพวกเขาสามารถรู้สึกว่าไม่มีข้อ จำกัด เล็กน้อยเมื่อทำการพอร์ตไปยังระบบอื่น
  • โฮสต์บน BitBucket (mercurial) ทำสิ่งนี้ตามที่คุณต้องการ

ฉันพบว่าตัวย่อชั่วร้ายสำหรับเลเยอร์ vi ที่ขยายได้สำหรับ Emacs มีรสชาติไม่ดีเล็กน้อย
ชื่อ

@ ชื่อไม่ใช่ความคิดของฉัน แต่เป็นอย่างไร
PythonNut

จากพจนานุกรม: evil = ผิดศีลธรรมและร้ายกาจอย่างลึกซึ้ง, รวบรวมหรือเกี่ยวข้องกับกองกำลังของปีศาจ, อันตราย, ไม่เป็นที่พอใจอย่างมาก ...
ชื่อ

5
@Name ในฐานะคนที่ให้ชื่อ "ชื่อ" แก่เขาฉันคิดว่าคุณจะต้องใช้อารมณ์ขันเมื่อตั้งชื่อสิ่งต่าง ๆ :-) ในกรณีของ Evil มันประชด (ดูen.wikipedia.org/wiki/Irony#Definitions ) ฉันคิดว่ามันเป็นหนึ่งในชื่อที่ดีที่สุดที่เคยได้รับมาจากแพ็คเกจ Emacs และจะระบุว่าเป็นข้อได้เปรียบ!
ทาร์ซิอุส

@PythonNut ฉันคิดว่าการใช้ Bitbucket นั้นมีปัญหาน้อยลง (จริงๆแล้วไม่มีปัญหาเลย) กว่าการใช้ Mercurial
ทาร์ซิอุส

11

มีgod-mode( https://github.com/chrisdone/god-mode ) ซึ่งใช้การเชื่อมโยงคีย์มาตรฐานของ Emacs แต่ไม่จำเป็นต้องระงับการปรับเปลี่ยน เมื่อ god-mode เปิดใช้งานC-...การโยงไม่จำเป็นต้องมีตัวดัดแปลงและM-...การโยงใช้คำนำหน้าแทนตัวดัดแปลง

เป็นตัวอย่างจากหน้า GitHub:

ก่อนหน้านี้: Cp Ck Cn M- ^) Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

หลังจาก: pkng ^) jygr . 2 กรัม


1
โปรดขยายคำตอบของคุณดังนั้นมันจึงไม่ใช่แค่ลิงค์
Mark Karpov

@tefan - ฉันใช้เสรีภาพในการขยายคำตอบของคุณเล็กน้อย อย่าลังเลที่จะเปลี่ยนแปลง แต่คุณต้องการ
ลูกัส

กลูกัส: ขอบคุณ! @ Mark: ไม่รู้มากขึ้นเกี่ยวกับโหมดพระเจ้าฉันไม่สามารถขยายคำตอบได้อย่างง่ายดาย ฉันโพสต์ไว้ด้วยความหวังว่าคนอย่างกลูกัสจะเติมลงในช่องว่าง
Stefan

6

Modalkaจะต้องเป็นเด็กรุ่นใหม่ล่าสุดบนบล็อกการแก้ไข modal โครงการ GitHub ดูเหมือนจะมีอายุครบ 10 วันแล้ว ฉันไม่มีเวลาใช้งานเพียงพอที่จะแสดงความคิดเห็นหรือประเมินผล แต่นี่คือวิธีอธิบาย:

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

เอกสารยังเปรียบเทียบและความขัดแย้ง Modalka ด้วยโซลูชั่นกิริยาอื่น ๆ ทั่วไปเช่นevil, god-mode, boonฯลฯ


6

การเพิ่มของฉันเองขอบคุณ @Mark สำหรับกำลังใจ

Xah Fly Keys

ออกแบบโดยเริ่มจาก emacs โดยมีเป้าหมายในการเป็นระบบที่มีประสิทธิภาพมากที่สุดจากประสบการณ์หลายปีในโหมด ergoemacs ตัวเลือกที่สำคัญคือวิทยาศาสตร์ขึ้นอยู่กับมากที่สุดตามสถิติของความถี่ที่สำคัญและคะแนนง่ายต่อการกด คำสั่งที่ใช้บ่อยที่สุดจะถูกแมปกับปุ่มที่กดง่ายที่สุด ปัญหาอื่น ๆ เช่นการจัดกลุ่มและการโยงปุ่มกดขนาดใหญ่นั้นได้รับการพิจารณาจากการทดลองรายสัปดาห์เป็นเวลา 3 ปี

จุดที่น่าสนใจ:

  • คำสั่ง Cx ทั้งหมดดำเนินการตามลำดับของปุ่มเดี่ยว 2 ถึง 3 ปุ่ม ใน xah-fly-keys Cx ไม่จำเป็น M- ไม่จำเป็นไม่เหมือนกัน
  • ไม่ขัดแย้งกับคีย์ของ GNU emacs ใด ๆ เพราะไม่ได้ผูก Ctrl หรือ Meta (ยกเว้น C-7, C-8 แต่ไม่จำเป็น) คุณสามารถเปิด xah-fly-keys ในโหมดแทรกและใช้ GNU Emacs ตามปกติ
  • พิจารณาว่าชุดคำสั่งใดส่งผลให้เกิดประสิทธิภาพในการแก้ไขสูงสุด ดังนั้นแพ็คเกจใช้คำสั่งการแก้ไขแบบกำหนดเอง ~ 80 (ตัวอย่างเช่นการคัดลอกจะคัดลอกบรรทัดปัจจุบันหากไม่มีการเลือกหนึ่งคำสั่งเดียวในการสลับกรณีตัวอักษรแทน GNU Emacs ~ 6 รูปแบบของบน / ล่าง / ภูมิภาค / ไม่มีภูมิภาค)
  • การใช้งานนั้นง่ายที่สุด ไม่มีมาโครไม่มีคำแนะนำไม่มีการแมปคีย์ที่ซับซ้อนมีการใช้ฮุคสองคู่เท่านั้น (ดีหรือไม่ดี!
  • รองรับรูปแบบแป้นพิมพ์มากกว่า 10 แบบรวมถึง: QWERTY, dvorak, colemak, colemak-mod-dh, qwerty-abnt, qwertz, azerty, programer-dvorak, คนงาน, norman

ข้อเสีย:

  • เช่นเดียวกับการเรียนรู้ vi เป็นครั้งแรกคุณจะต้องใช้เวลาหนึ่งเดือน
  • รู้จักกันดีกว่าโหมดความชั่วร้าย
  • สำหรับโหมดหลักคุณยังต้องใช้ Cc (ดังนั้นคุณอาจใช้แพ็คเกจอื่น ๆ เช่นโหมดเทพหรือไฮดราเพื่อแก้ปัญหานี้)

ฉันเป็นผู้เขียนดังนั้นโปรดเตือนว่าฉันอาจรู้สึกลำเอียงโดยไม่รู้ตัว รู้สึกอิสระที่จะแสดงความคิดเห็นหรือถูกต้อง


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

@PythonNut ใช่ลำดับความสำคัญสูงสุด ฉันหวังว่าในหนึ่งสัปดาห์ สิ่งสำคัญคือภาพว่าฉันต้องการใช้มันอย่างไร
Xah Lee

อา. เด็ดมาก ฉันจะให้มันหมุนวนเมื่อมันออกมา
PythonNut

4

ประโยชน์

Boon เป็นหนึ่งในแพ็คเกจที่ไม่ค่อยมีใครรู้จักสำหรับการแก้ไข modal มันไม่ได้เลียนแบบ Vi (หรือ Vim) แต่ให้รูปแบบดั้งเดิมที่ปรับให้เหมาะกับรูปแบบแป้นพิมพ์ Colemak

ข้อดีและหลักการออกแบบ

  • การจัดสรรพิเศษก่อนช่วยจำที่สอง: การจัดสรรคีย์ไปยังคำสั่งขึ้นอยู่กับลำดับความสำคัญตามตำแหน่งของคีย์บนคีย์บอร์ด สิ่งที่พิมพ์บนฝาครอบกุญแจเป็นเรื่องที่สอง

  • Easy finger roll: การผสมทั่วไปควรจะเป็นการสลับซ้าย / ขวาหรือการหมุนด้วยมือเดียวอย่างง่าย

  • การใช้แถวบ้านและนิ้วที่แข็งแรงสำหรับคำสั่งที่ใช้มากที่สุด

  • ใช้งานง่าย: คำสั่งจำนวนมากเชื่อมโยงกับการนำทาง สิ่งนี้อำนวยความสะดวกในการเคลื่อนย้ายไปรอบ ๆ เนื่องจากการเคลื่อนไหวเพิ่มขึ้นเป็นสองเท่าตามคำจำกัดความภูมิภาคจึงทำให้คำสั่งการควบคุม (ตัวดำเนินการ) มีประสิทธิภาพมากขึ้น

ข้อเสีย

  • คุณต้องเรียนรู้วิธีการโต้ตอบกับตัวแก้ไขอีกครั้งเนื่องจากชุดของการแก้ไขแบบดั้งเดิมและการวางตำแหน่งบนแป้นพิมพ์นั้นมีลักษณะเฉพาะ

1
ฟังดูแปลกไปเล็กน้อยที่ Boon ไม่สนใจสิ่งที่อยู่ในคีย์ แต่บังคับให้คีย์เป็น Colemak ดูเหมือนว่ามันควรจะเป็นผู้ไม่เชื่อเรื่องพระเจ้าเค้าโครง
PythonNut

@ PythonNut ฉันเดาว่าคนต้องอ้างถึงกุญแจอย่างใด :-) ฉันคิดว่ามันเป็นไปได้ทั้งหมดที่จะทำให้มันใช้งานได้กับเค้าโครงอื่น ๆ
Mark Karpov

บุญมี QWERTY และ QWERTZ สนับสนุนในขณะนี้ดูgithub.com/jyp/boon#installation ฉันปรับปรุงคำตอบเพื่อให้สะท้อนถึงสิ่งนั้น
raju-bitter

3

Ergoemacs ยังรองรับการแก้ไข modal มันไม่ได้เลียนแบบ vi แต่ใช้ปุ่ม Alt สำหรับคำสั่งที่ใช้บ่อยที่สุด ตัวอย่างเช่นการเลื่อนเคอร์เซอร์คือ Alt บวกด้วยมือขวาคว่ำ T (บน QWERTY คือAlt+ jสำหรับleft, Alt+ lสำหรับขวา, Alt+ iสำหรับupและAlt+ kสำหรับdown) การลบอักขระหรือคำคือการAltใช้ปุ่มโฮมแถวซ้ายมือ ตัวเลือกที่สำคัญขึ้นอยู่กับความถี่คำสั่งและตำแหน่งของปุ่มเพื่อความสะดวกในการกด

  • f6ในการเริ่มต้นการแก้ไขคำกริยาผู้ใช้สามารถกด
    • เมื่อf6กดแล้วคีย์ที่ใช้บ่อยที่สุดไม่จำเป็นต้องใช้คีย์ผสมอีกต่อไป
    • ดังนั้นในวันที่ QWERTY, jเป็นleft, jคือright, iเป็นupและkจะลดลง)
  • โหมดคำสั่งคำกริยาจะออกโดยการกดreturn, หรือf6escape

นอกเหนือจากกระบวนทัศน์โมดอลดั้งเดิมแล้วยังมีกระบวนทัศน์เสมือนจริงที่อนุญาตให้มีการรวมกันของคีย์C-xหรือC-cคีย์ใด ๆ โดยไม่ต้องใช้ตัวดัดแปลงใด ๆ (เช่นโหมดเทพ)

  • เสมือนคำกริยาจะเริ่มต้นกับแบบ QWERTY apps fสำหรับC-cกับปุ่มควบคุมกดลงและแบบ QWERTY สำหรับ apps dC-x
  • ในขณะที่ดำเนินการตามลำดับคีย์นี้คีย์appsจะเปลี่ยนชนิดของโมดิฟายเออร์ที่จะกดลง
  • เมื่อคำสั่งถูกเรียก ergoemacs จะกลับสู่โหมดแก้ไขต่อ
  • ระหว่างลำดับคีย์ใด ๆ คุณสามารถเปลี่ยนประเภทของคีย์ที่ค้างไว้ได้ นี่คือเพียงแค่กดปุ่มappsอีกครั้ง

นอกเหนือจากการเปลี่ยนปุ่มคำสั่งโหมด ergoemacs ช่วยให้คุณสามารถเปลี่ยนสิ่งต่าง ๆ เกี่ยวกับลำดับของคีย์ในขณะที่พิมพ์:

  • คุณสามารถแก้ไขอาร์กิวเมนต์คำนำหน้าระหว่างการกดปุ่มf2กลางได้
  • การกดbackspaceจะกลับปุ่มสุดท้ายที่กด
  • Apps ช่วยให้คุณเปลี่ยนคีย์ที่ค้างไว้ในระหว่างลำดับของคีย์ใด ๆ

โหมด ergoemacs ยังพยายามที่จะเคารพสิ่งที่โหมดทำกับปุ่มพื้นฐาน ตัวอย่างเช่นหากโหมดองค์กรกำหนดคีย์พิเศษสำหรับnext-lineergoemacs ใช้คำสั่งนี้สำหรับAlt+ kเมื่ออยู่ในโหมดองค์กร

ข้อดี:

  • ส่วนหนึ่งของ GNU Emacs ใน ELPA
  • รองรับคีย์“ สากล” ของ Windows / Linux เช่นเปิด ( C-o), ปิด ( C-w), เลือกทั้งหมด ( C-a), คัดลอก ( C-c), ตัด ( C-x), วาง ( C-v), ฯลฯ
  • ค่อนข้างเป็นที่นิยม
  • รองรับเลย์เอาต์มากมายเช่น Qwerty, dvorak, colemak, bepo และเลย์เอาต์ต่างประเทศอื่น ๆ อีกมากมายที่ปรับเปลี่ยนคีย์เพื่อให้แน่ใจว่าพวกเขาอยู่ในแถวบ้าน (Mi in QWERTY จะเป็น Mu in colemak)
  • แสดงรูปภาพของรูปแบบแป้นพิมพ์ของคุณใน emacs โดยการอธิบายชุดรูปแบบ
  • กุญแจสามารถปรับแต่งได้ผ่านระบบส่วนขยายโดยการสร้างชุดรูปแบบ
  • คุณสามารถตั้งค่าคีย์แมปโมดอลใด ๆ (ยังไม่ได้ทำเป็นเอกสาร)

ข้อเสีย:

  • เสถียรช้าเมื่อเริ่มต้น
    • ในต้นแบบที่ไม่เสถียรการเริ่มต้นครั้งแรกช้า (~ 5 วินาทีสำหรับการตั้งค่าขั้นต่ำ), (~ 20 วินาทีสำหรับการเริ่มต้นของฉัน)
    • การเริ่มต้นที่สองนั้นเร็วกว่ามาก (สำหรับการตั้งค่าที่ซับซ้อนของฉันคือ ~ 4 วินาที)
    • นี่เป็นเพราะโหมด ergoemacs กำลังเปลี่ยนแปลงและแคชทุก keymap ที่ใช้งานใน emacs ในการเริ่มต้นครั้งที่สองการตั้งค่าเหล่านี้จะถูกบันทึกไว้
  • รหัสที่ซับซ้อน

ดูhttps://github.com/ergoemacs/ergoemacs-mode


2

ตัวเลือกกึ่งโมดอลอีกตัวคือไฮดรา:

https://github.com/abo-abo/hydra

ตามเว็บไซต์

ลองนึกภาพว่าคุณผูก Cc j และ Cc k ไว้ใน config ของคุณ คุณต้องการโทรหา Cc j และ Cc k ในบางลำดับ (โดยพลการ) ไฮดราช่วยให้คุณ:

  • ผูกฟังก์ชั่นของคุณในลักษณะที่การกด Cc jjkk3j5k เทียบเท่ากับการกด Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k คีย์ใด ๆ ที่ไม่ใช่ j หรือ k ออกจากสถานะนี้

  • กำหนดคำใบ้ที่กำหนดเองให้กับกลุ่มของฟังก์ชั่นนี้เพื่อให้คุณรู้ทันทีหลังจากกด Cc ที่คุณสามารถติดตามด้วย j หรือ k

ฉันไม่ได้ใช้ แต่ดูเหมือนว่าน่าสนใจ

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