ฉันสามารถใช้ปุ่ม "<cmd>" ใน terminal Vim ได้หรือไม่?


22

ต่อจากคำถามอื่น ๆ เมื่อไม่นานมานี้: ฉันจะแมป <cmd> - <shift> -f เพื่อเรียกใช้งานปลั๊กอิน Ack ในกลุ่มได้อย่างไร

เป็นไปได้หรือไม่ที่จะใช้<cmd>กุญแจในเสียงเรียกเข้าเลย?

หาก Vim ไม่รู้จักรหัสเป็นไปได้ไหมที่จะทำการแมปคีย์ภายนอก Vim (อย่างใด?) ไปยังสิ่งอื่นและแมปรหัสนั้นภายใน Vim?

ฉันใช้ iTerm 2 กับ Lion กับ Vim 7.3

ขอบคุณ!

คำตอบ:


12

<D-> ใช้งานได้เฉพาะใน MacVim

google ฉบับย่อจะคืนค่าแฮ็คจำนวนมากและโซลูชันของบุคคลที่สาม โซลูชันทั้งหมดที่ฉันรู้ว่าทำงานได้ทั้งระบบหรือเฉพาะแอปพลิเคชัน: หากคุณทำการแมปCmdใน iTerm2 เท่านั้นคุณจะเปิดหน้าต่างใหม่หรือแท็บใหม่ได้อย่างไร ด้วย…กับ… เมาส์?

ฉันนึกภาพไม่ออกว่ามีเหตุผลอะไรดีที่จะทำการแมปCmdกุญแจสู่สิ่งต่าง ๆ บน Mac นั่นคงบ้าไปแล้ว

Vim ไม่ใช่ TextMate หรือเครื่องมือแก้ไขอื่น ๆ ที่คุณเคยใช้มาก่อน ไม่มีวิธีที่จะถ่ายโอนนิสัยเก่าทั้งหมดของคุณได้อย่างราบรื่นชี้ว่างเปล่า

แทนที่จะเสียเวลากับการพยายามทำให้ Vim และเครื่องเทอร์มินัลของคุณกลายเป็นสิ่งที่ไม่เป็นและไม่สามารถเป็นได้คุณควรเรียนรู้วิธีใช้และปรับแต่ง Vim อย่างชาญฉลาด ทั้งหมดของคุณCmd+ Shift+ Ctrl+ Altคอมโบจะไม่นำคุณได้ทุกที่ โดยเฉพาะอย่างยิ่งในสถานีที่AltมักจะมีปัญหาและCmdใช้ไม่ได้

ลองใช้<leader>( :help leader):

  • มันพกพาได้ในทุกแพลตฟอร์ม
  • มีแนวโน้มน้อยที่จะขัดแย้งกับระบบปฏิบัติการหรือเทอร์มินัลอีมูเลเตอร์
  • มันเปิดโอกาสในการจดจำได้ง่ายมากมาย

ฮ่าฮ่าขอบใจมากตอนนี้มันสะอาดกว่าแล้ว
romainl

ขอบคุณสำหรับการตอบกลับ. ฉันเคยได้ยินเรื่องนี้มาก่อน<leader>แต่ฉันไม่แน่ใจว่าควรใช้งานอย่างไร ฉันเห็นด้วยกับประเด็นของคุณเกี่ยวกับการพกพานี่เป็นส่วนหนึ่งของเหตุผลที่ฉันย้ายไปเป็นกลุ่ม ขอบคุณ
jordelver

คุณสามารถแมปCmdไปControlใน iTerm2 และจากนั้นในหน้าต่างเดียวกันเพิ่มทางลัดเพื่อเปิดแท็บใหม่ที่มี^tเป็นต้นจากนั้นทำงานทุกอย่าง!
Sean Clark Hess

5

ฉันพบว่า iterm2 มีตัวเลือกในการตั้งค่าแป้นพิมพ์เพื่อทำสิ่งนี้ สำหรับอดีตด้านล่างฉันทำแผนที่ป้อนคำสั่งเป็น: wq

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณสำหรับการแก้ปัญหานี้ นี่คือสิ่งที่ฉันกำลังมองหา ฉันรู้เกี่ยวกับ <Leader> แต่ฉันคิดว่าบางสิ่งเช่นการบันทึกไฟล์ควรเป็นสากล
Dmitry Biletskyy

4

สำหรับคำสั่งง่ายๆมีวิธีแก้ปัญหาด้วยการส่งรหัสฐานสิบหกที่เหมาะสมไปยังสถานี cmd-sยกตัวอย่างเช่นผมต้องการที่จะบันทึกในกลุ่มโดยการกด ฉันแมปcmd-sใน iterm2 เพื่อส่งรหัสฐานสิบหก0x13ซึ่งเป็นรหัสสำหรับctrl-sจากนั้นฉันctrl-sจะจับคู่กับ:wqในกลุ่ม


คุณทำสิ่งนั้นอย่างไร? ขอบคุณ
nunos

ไม่ทำงานสำหรับฉันรหัสฐานสิบหก 0x13: / imgur.com/RjxOoLY
michalzuber

สำหรับวิธีการทำสิ่งนี้ให้ดูรูปด้านล่าง - ขอบคุณ @jhickner สำหรับแนวคิดที่จะดู iTerm2
Neil McGill

3

โซลูชันปี 2559 คือการใช้โปรแกรมโอเพ่นซอร์สKarabinerซึ่งอนุญาตให้คุณทำการแมปตัวดัดแปลงและปุ่มอื่น ๆ ที่มีความละเอียดมากเช่น

  • ทำการแมปเฉพาะทางซ้าย ⌘ CmdหรือOptionคีย์
  • ทำการแมปกุญแจสำหรับแอปพลิเคชั่นเฉพาะเช่นภายในเทอร์มินัล Emac หรือเครื่องเสมือนเท่านั้น

ตัวอย่างเช่นต่อไปนี้เป็นวิธีการทำการแมป⌘ Cmdปุ่มซ้ายเพื่อทำหน้าที่เหมือนCtrl ภายในเทอร์มินัลเท่านั้น (และปล่อยปุ่มอันที่ไม่ได้รับผลกระทบเพื่อให้คุณยังคงสามารถใช้งานได้เช่น⌘ Cmd + Tabเพื่อสลับระหว่างแอป):

Karabiner-ภาพหน้าจอ


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