ความแตกต่างระหว่างการใช้ vim ที่แตกต่างกันคืออะไร?


25

ฉันตระหนักถึงการใช้ vim ที่แตกต่างกันใน Emacs มีโหมดชั่วร้าย, มรณะ, vimpulse และ vim-mode มีคนอื่นไหม? พวกเขาเปรียบเทียบอย่างไร

ฉันทราบว่ามีevil-*แพคเกจจำนวนมากใน MELPA แนะนำว่าไม่มีแพ็คเกจใดที่สมบูรณ์แบบ 100% พวกเขามีคุณสมบัติเป็นกลุ่มใดและคุณสมบัติกลุ่มที่ขาดหายไปคืออะไร

(ฉันไม่สนใจในสิ่งที่ตรงกันข้าม " ชุด vi แมโครที่ [เป็น] การใช้งาน Emacs ที่ค่อนข้างสมบูรณ์ "!)


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

คำตอบ:


35

vi, vipและviper(สั่งตามวันที่สร้าง) มาในตัวด้วย Emacs ทั้งหมดของผู้ที่เลียนแบบ VI vim-modeเป็นความพยายามที่ใหม่กว่าแบบสแตนด์อะโลนที่เลียนแบบ Vim vimpulseเป็นชุดของส่วนเสริมที่viperให้คุณสมบัติ Vim ที่มีประโยชน์ที่สุดอย่างหนึ่ง ถูกสร้างขึ้นเป็นแทนevilvim-mode

evilเป็นโครงการล่าสุดและเป็นโครงการเดียวที่พัฒนาขึ้นอย่างแข็งขัน เป้าหมายของมันคือการเลียนแบบโมเดลการแก้ไขของ Vim อย่างซื่อสัตย์โดยใช้ประโยชน์จากฟังก์ชั่น Emacs ที่มีอยู่ทุกที่ที่ทำได้ โดยส่วนตัวแล้วฉันบอกว่ามันเสร็จสมบูรณ์ประมาณ 90% เนื่องจากคำสั่ง newish (เช่นgn) หายไปบางส่วนฟังก์ชันที่เกี่ยวข้องกับการแสดงผลบางอย่างนั้นค่อนข้างยากที่จะสร้างขึ้นมาใหม่ (เช่นการแสดงตัวหนอนหลังจากสิ้นสุดไฟล์) Vimscript interpreter หรืออะไรก็ตามที่นอกเหนือจากพื้นฐานของโหมด Ex อย่างไรก็ตามมันง่ายกว่าที่จะขยายและวิปัสสนากว่าเดิมevil-*ส่วนขยายเป็น Emacs เทียบเท่ากับ Vim plugins ในเกือบทุกกรณี ( evil-leaderตัวอย่างเช่นจะเป็นข้อยกเว้นเพราะไม่จำเป็นต้องเสนอการพิจารณาการสนับสนุน keymap ของ Emacs)

เมื่อพิจารณาevilถึง Vim ที่เหนือกว่าจุด (ดู:sและแสดงตัวอย่างด้วยภาพหรือความพยายามเพียงเล็กน้อยในการสร้างโหมดใหม่ที่เป็นประโยชน์ ) เราขอแนะนำให้ทุกคนที่สนใจในการแก้ไข modal สำหรับ Emac


คุณพูดถึงg/การเป็นคำสั่ง newish ในกลุ่ม ฉันไม่เคยเห็นมันมาก่อนและไม่พบเอกสารใด ๆ Vim ทำอะไรได้บ้าง?
ivan

gnฉันขอโทษฉันหมายถึง มันเปลี่ยนผลการค้นหาให้เป็นวัตถุข้อความ นอกจากนี้ยังมีการใช้งานในขณะนี้
wasamasa

อ่าฉันเข้าใจแล้ว ฉันดีใจที่ได้ยินว่ามันได้รับการใช้งานเมื่อฉันใช้ Vim นั้นสักหน่อย
ivan

9

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

  1. ไม่มีนักแปล vimscript และสำหรับความรู้ของฉันไม่มีแผนที่จะใช้
  2. การเพิ่มและลดจำนวน ( C-aและC-x) จะไม่ถูกเพิ่มเพราะC-xสำคัญเกินไปสำหรับการผูกกุญแจ Emacs
  3. ไม่มีแนวคิดในตัวของคีย์ผู้นำ แต่\จะผูกพันกับevil-execute-in-emacs-stateค่าเริ่มต้นแทน
  4. C-uไม่ได้ถูกผูกไว้กับการเลื่อนขึ้นตามค่าเริ่มต้นเพราะมันสำคัญเกินกว่าที่จะเป็นปุ่มลัด Emacs (แม้ว่าคุณจะสามารถเขียนทับสิ่งนี้ด้วยevil-want-C-u-scroll)

เพื่อหารายชื่อของลักษณะเป็นกลุ่มที่ไม่ได้ดำเนินการเลย ( ณ เวลาที่เขียนคำตอบนี้), สถานที่ที่ดีที่สุดที่จะดูเป็นติดตามปัญหา ตัวอย่างแบบสุ่มของสิ่งต่าง ๆ ที่อยู่ในรายการ:

  1. ผนวกไฟล์ที่มีexไม่ได้ดำเนินการ
  2. คำสั่งการเคลื่อนไหวบางคนไม่ทำตัวเหมือนเป็นกลุ่ม
  3. :makeM-x compileไม่ได้แมปไป
  4. C-oในinsertโหมดไม่ประพฤติค่อนข้างชอบที่มันไม่อยู่ในกลุ่ม
  5. บัฟเฟอร์หน้าต่าง Swap ไม่ได้ดำเนินการ

มีอีกมากมายรวมถึงคำสั่งที่ไม่ได้อยู่ในรายการปัญหาแบบเปิด (โดยเฉพาะexคำสั่งที่ซับซ้อน) แต่อย่างที่คุณเห็นจากรายการพวกเขามีแนวโน้มที่จะเป็นรองหรือค่อนข้างคลุมเครือคุณสมบัติกลุ่ม (กลุ่มคือเป้าหมายที่ค่อนข้างใหญ่ บรรลุคุณลักษณะที่เท่าเทียมกัน 100%)


เนื่องจาก emacs ใช้เสียงกระเพื่อม ไม่มีอะไรเป็นไปไม่ได้. ตัวอย่างเช่นแม้ว่าคีย์ผู้นำไม่ได้ถูกสร้างขึ้น แต่คุณสามารถติดตั้งปลั๊กอิน Evil-leader
เฉินบิน

@ เฉินบินแน่นอนฉันแค่พูดถึงสิ่งต่าง ๆ ที่มีมาในตัวและเปิดใช้งานโดยค่าเริ่มต้นด้วยความชั่วร้าย
shosti

3

เป้าหมายของความชั่วร้ายคือการเลียนแบบ Vim ในขณะที่เป้าหมายของ Viper นั้นคือการเลียนแบบ Vi Vim-mode และ Vimpulse เป็นเวอร์ชั่นก่อนของ Evil และความรู้ของฉันไม่พัฒนาขึ้นอีก โครงการ The Evil เริ่มต้นเพื่อแก้ไขข้อบกพร่องของโครงการเหล่านี้

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