วิธีแก้ไขบรรทัดคำสั่งในเครื่องมือแก้ไขแบบเต็มหน้าจอใน ZSH


52

ใน bash โดยใช้โหมด vi หากฉันกดEsc, vบรรทัดคำสั่งปัจจุบันของฉันจะเปิดขึ้นในตัวแก้ไขที่ระบุโดย$EDITORและฉันสามารถแก้ไขได้แบบเต็มหน้าจอก่อนที่จะ 'บันทึก' คำสั่งเพื่อกลับสู่เชลล์และดำเนินการ

ฉันจะบรรลุพฤติกรรมที่คล้ายกันใน zsh ได้อย่างไร การกดปุ่มvในโหมดคำสั่งส่งผลให้สัญญาณกระดิ่งและไม่มีผลกระทบที่ชัดเจนแม้จะมีEDITORการตั้งค่าตัวแปรสภาพแวดล้อม

คำตอบ:


36

ดูในedit-command-linezshcontrib

bindkey -M vicmd v edit-command-line

13
(เพื่อชี้แจงเท่านั้น): ในการเปิดใช้งานedit-command-line"วิดเจ็ต" คุณจะต้องมีสิ่งใดสิ่งautoload edit-command-line; zle -N edit-command-lineหนึ่งในไฟล์zsh init ของคุณ(ดูในส่วนฟังก์ชั่น ZLEของzshcontribเอกสารประกอบ )
Chris Johnsen

คุณจะเปิดใช้งานสิ่งนี้ได้อย่างไรเมื่ออยู่ในที่? bindkey ในคำตอบของสไตล์ emacs เหมาะสมกับฉัน แต่ฉันไม่สามารถหาข้อมูลอ้างอิงเกี่ยวกับสิ่งที่bindkey -M vicmd vตั้งขึ้น
Mat Schaffer

@MatSchaffer เช่นเดียวกับ Bash: หากคุณอยู่ในโหมด vi ให้กด<ESC>เพื่อเข้าสู่โหมดคำสั่งจากโหมดแทรกและจากนั้นvไปยังโหมดภาพ ( Meta-vเหมือนกัน) หรือvหากคุณอยู่ในโหมดคำสั่งแล้ว หากคุณกำลังใช้โหมด Emacs C-x C-eโดยทั่วไปที่มีผลผูกพันเป็น
ephemient

1
การแมปปุ่ม v หมายความว่าคุณไม่สามารถใช้โหมดภาพได้อีกต่อไปดังนั้นฉันชอบที่จะทำการแมปอีกครั้งกับสเปซบาร์ (ซึ่งไม่ได้ทำอะไรที่มีประโยชน์ในโหมดปกติ) ด้วยbindkey -M vicmd ' ' edit-command-line
gib

37

ในกรณีที่คุณชอบ Emacs keybindings:

autoload -z edit-command-line
zle -N edit-command-line
bindkey "^X^E" edit-command-line

9
^x^eผูกพันดูเหมือนว่าจะเริ่มต้นกับปัจจุบัน .oh-My-zshซึ่งเป็นสิ่งที่ดีมาก
quodlibetor

^ x ^ e เป็นสิ่งที่ฉันกำลังมองหา
jmreicha

1
การตั้งค่าที่คล้ายกันสำหรับ Prezto ตราบเท่าที่editorโมดูลถูกโหลด
อัล X

23

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


14

นี่คือการกำหนดค่าที่สมบูรณ์ที่ฉันเพิ่มไปยังของฉัน~/.zshrcเพื่อรับพฤติกรรมเดียวกันจากทุบตี:

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

ต่อความคิดเห็นก่อนหน้านี้มีการกำหนดค่าตามค่าเริ่มต้นหากคุณกำลังใช้โอ้ ZSH ของฉันหรือPrezto หลังจำเป็นต้องeditorโหลดโมดูลและviหรือvimเลือกสำหรับโหมดคำสั่ง
อัล X

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