ฉันจะใช้ทางลัด Readline ในบรรทัดคำสั่ง vim ได้อย่างไร


15

เมื่อฉันแก้ไขคำสั่ง Vim ฉันต้องการใช้ทางลัดเดียวกับใน Bash และ REPL อื่น ๆ : M-bเพื่อย้อนกลับคำM-Backspaceเพื่อลบคำก่อนหน้านี้M-uเพื่อแปลงคำเป็นตัวพิมพ์ใหญ่C-kเพื่อตัดจนกว่าจะสิ้นสุด บรรทัด ฯลฯ ฉันสามารถกำหนดค่าคำสั่งบางอย่างใช้:cmapแต่ไม่ใช่ทั้งหมด

มีปลั๊กอินหรือการตั้งค่าที่ให้สิ่งนี้หรือไม่?

ฉันรู้ceditแต่ฉันพบว่ามันยุ่งยากเมื่อทุกอย่างที่ฉันต้องการคือการป้อนคำสั่งด่วน


คุณกำลังบอกว่าคุณใช้ Bash ในโหมด Emacs แม้ว่าคุณจะใช้ Vim เป็นเครื่องมือแก้ไขของคุณ
Kyle Strand

3
@KyleStrand ฉันยังไม่เห็นใครที่ใช้ Bash ในโหมด vi ดูเหมือนว่าประโยชน์ส่วนใหญ่ของบรรณาธิการโมดอลจะหายไปเมื่อคุณ จำกัด เพียงหนึ่งบรรทัด
หมดเวลา

1
น่าสนใจ ฉันเคยใช้ Bash ในโหมด Vi แม้ว่ามันจะดูเหมือนว่าโหมด Emacs รองรับบางสิ่งที่โหมด Vi ไม่ได้ ฉันเพิ่งรู้จักปุ่มลัด Vi ในขณะที่ยังหลงเหลือการผูกมัดของ Emacs เกือบทั้งหมดและฉันไม่เคยคิดว่ามันจะเป็นปัญหาเร่งด่วนที่จะเรียนรู้ค่าเริ่มต้น
Kyle Strand

คำตอบ:


11

มีปลั๊กอินหรือการตั้งค่าที่ให้สิ่งนี้หรือไม่?

ใช่ปลั๊กอิน rsi.vim :

คุณสมบัติ

  • การแมป Readline มีให้ในโหมดแทรกและโหมดบรรทัดคำสั่ง โหมดปกติถูกละเว้นโดยเจตนา
  • การเชื่อมโยงคีย์ Vim สำคัญ (เช่นการเติม Cn และ Cp ของโหมดการแทรก) จะไม่ถูกแทนที่
  • การเชื่อมโยงคีย์ Meta ถูกจัดเตรียมในวิธีที่ทำงานในเทอร์มินัลโดยไม่มีอันตรายจากการแม็พใหม่
  • Cd, Ce และ Cf ถูกแมปเช่นนั้นพวกเขาดำเนินพฤติกรรม Readline ในช่วงกลางของบรรทัดและพฤติกรรมเป็นกลุ่มในตอนท้าย (ลองคิดดูสิ)

1

มีปลั๊กอินหรือการตั้งค่าที่ให้สิ่งนี้หรือไม่?

นอกจากนี้ยังมีreadline.vim

มันเป็นปลั๊กอินที่ใหม่กว่าซึ่งเน้นที่บรรทัดคำสั่งอย่างหมดจด นอกจากนี้ยังใช้ชุดย่อยขนาดใหญ่กว่าของทางลัด Readline และมีเป้าหมายในการใช้ทางลัดแต่ละอย่างเหมือนกับใน Readline

สิ่งที่ทำให้ปลั๊กอินนี้แตกต่างจากปลั๊กอินที่คล้ายกันคือมันใช้ชุดย่อยขนาดใหญ่กว่าของการจับคู่ Readline และมันจะทำงานได้ดีขึ้นในการเลียนแบบพฤติกรรม Readline สำหรับแต่ละคำสั่ง

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


1
ฉันประหลาดใจที่ไม่มีใครมองหาสิ่งนี้ มันง่ายมากที่จะใช้โหมด vim ของ readline ซึ่งฉันคิดว่าผู้ใช้ vim ทั่วไปทุกคนจะทำ (ฉันไม่พบคำสั่งพิเศษในโหมด emacs ทั้งหมดที่น่าสนใจ) แต่บางที "วิธี" ไม่เป็นที่รู้จักอย่างกว้างขวาง (... และบางทีฉันโชคดีที่ bashrc แรกที่ฉันเห็น / คัดลอก ... หลายปีที่ผ่านมากว่าที่ฉันยอมรับที่จะยอมรับ ... มีset -o vim:)
B Layer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.