Ctrl + ปัญหาปุ่มลูกศรซ้าย / ขวา


25

หลังจากอัปเดตระบบล่าสุดคำสั่งctrl + left / right arrowบนzsh terminal จะไม่ทำอะไรเลย ctrl + u ยังมีบางอย่างผิดปกติเพราะคำสั่งนั้นลบจากเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดขณะนี้ลบทั้งบรรทัด .. บางคนรู้วิธีแก้ปัญหาเหล่านี้หรือไม่ ขอบคุณทุกคน.


คุณพบคำตอบที่ยอมรับได้หรือไม่? ฉันคิดว่าคำตอบของ Goncalo นั้นยอดเยี่ยม
LéoLéopold Hertz 준영

คำตอบ:


44

FWIW นี่คือสิ่งที่ทำงานกับสภาพแวดล้อมของฉัน (rhel5.x) โดยใช้ค่าเริ่มต้นของ zsh

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[Dและ^[^[[Cตามลำดับสำหรับ OSX
Jon z

1
ยืนยันข้อเสนอของ Goncalo ยังใช้ได้ใน Debian 8.5 ฉันแค่สงสัยว่าทำไมรหัสนี้ไม่ได้มีมาให้ใน.zshrcตัว
LéoLéopold Hertz 준영

ใช้งานได้อย่างมีเสน่ห์ใน Ubuntu Artful ขอบคุณ!
Konrad Garus

ในกรณีที่ทุกคนต้องการใช้$terminfoแทนลำดับการหลบหนี: ปุ่ม$terminfo[kLFT5]และ$terminfo[kRIT5]ทำงานให้ฉัน
Griddo

14

Ctrl + U เป็นไปได้มากที่สุดเพราะคุณมีเคอร์เซอร์ที่ท้ายบรรทัด ประการที่สอง Gentoo รุ่นใดที่คุณอ้างถึงว่าเป็น "การอัปเดตระบบล่าสุด"

และคุณต้องการให้ ctrl + ซ้าย / ขวาเพื่อทำอะไร

  • เพิ่มลงใน zsh config:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • และจากเศษซากเก่าที่ฉันพบ (อาจช่วยได้):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • หรือดูที่ลิงค์นี้ซึ่งจะช่วยให้คุณออก?

หมายเหตุ: หากการกำหนดค่าใช้งานได้ แต่คีย์ที่ควรจะไม่ทำในสิ่งที่คุณต้องการอาจเป็นเพราะความละเอียดของคีย์แตกต่างจากของคุณและของฉันให้ทำ: cat > /dev/null และกดปุ่มที่คุณต้องการรับเอาท์พุทและปรับตาม


1
"Ctrl + U น่าจะเป็นเพราะคุณมีเคอร์เซอร์ที่ท้ายบรรทัด" แน่นอนว่าฉันหมายถึงเมื่อเคอร์เซอร์อยู่ตรงกลาง "และคุณต้องการให้ ctrl + ซ้าย / ขวาทำอะไร" โดยปกติ ctrl + ลูกศรซ้าย: ข้ามคำไปทางซ้าย ฯลฯ ...
Riskio

และคุณใช้เชลล์ / เทอร์มินัลใด Makre แน่ใจว่าคุณใช้ Emac หรือเทอร์มินัลอะไรก็ตามที่คุณใช้และ / bin / bash? คุณกำลังวิ่งผ่านหน้าจอ?
Torxed

1
โปรดอ่านคำถามจะมี ..
เสี่ยง

1
@Masi ไม่แน่ใจฉันตอบสองปีก่อนเขาและคำตอบของเราเกือบจะเหมือนกันฉันเพิ่งแสดงสองวิธีที่ต่างกันในการทำ .. และคุณสามารถรวมพวกเขาทั้งสองเข้าด้วยกันเพื่อรวมสิ่งที่เขาเขียน
Torxed

1
@Masi ทั้งหมดที่ฉันรู้ก็คือย้อนกลับไป (จำไว้ว่า 2010-2012 .. มันเป็นเวลานานแล้ว) ทั้งสอง (และการรวมกัน) ทำงานให้ฉันในหลาย ๆ ระบบ ฉันอยู่ทั้ง Unix และ Linux (และเขาอยู่ใน Gentoo ซึ่งเป็นระบบปฏิบัติการที่วางจำหน่ายแล้ว) และยังคงมีร่องรอยของเรื่องนี้ในหลายตัวอย่าง .. เช่นนี้พื้นที่เก็บข้อมูล ตอนนี้อีกครั้งฉันไม่แน่ใจว่าทำไม แต่มันทำงานบนเครื่องอย่างน้อยสองเครื่องดังนั้นฉันคิดว่าฉันจะแบ่งปัน และแน่ใจว่าวันนี้เขาชัดเจนกว่าและฉันไม่คิดว่าเขาจะได้รับคะแนนโหวตทั้งหมด นี่คือโพสต์ดั้งเดิม
Torxed

5

สิ่งที่ใช้งานไม่ได้โดยตรงขึ้นอยู่กับ distro (Gentoo, Debian, RHEL ฯลฯ ) หรือ shell (ZSH, KSH, BASH) - ขึ้นอยู่กับการterminal emulatorใช้งานและการตั้งค่า: konsole, terminator, urxvt, lx-terminal เป็นต้น distro อาจมีความสำคัญหากใช้เชลล์มาตรฐานที่แตกต่างกัน (fx. .zshrc) และหากใช้เชลล์อื่นที่เชลล์กำหนดคอนฟิกบน distro นั้นอาจจัดการกับมันแล้ว

ต่อไปนี้เป็นโซลูชันเฉพาะตัวจำลองเทอร์มินัลสองสามตัว:

urxvt / rxvt-unicode (และอาจอื่น ๆ ):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

เทอร์มิเนเตอร์, konsole และ xterm (และอื่น ๆ ):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

สำหรับวิธีการทั่วไปที่มากขึ้นคุณจะเริ่มต้นเทอร์มินัลของคุณกด CTRL-V แล้วตามด้วยชุดคีย์ที่คุณต้องการรหัสหลบหนี (ชื่อ) ของ - ในกรณีนี้คือคีย์ผสม CTRL-leftarrow และ CTRL-rightarrow - และใส่ผลลัพธ์สำหรับแต่ละ การผสมคีย์ระหว่างเครื่องหมายคำพูดทั้งสอง


1
คุณลองใช้คำแนะนำ CTRL-V หรือไม่ บางทีเทอร์มินัลของคุณตีความการกดแป้นแตกต่างกันดังนั้นคีย์จำเป็นต้องเชื่อมโยงกับ "สัญลักษณ์" ที่แตกต่างกันหรือไม่
miyalys

1
ฉันปรับปรุงคำตอบของฉัน มีหลายวิธีแก้ไขขึ้นอยู่กับการterminal emulatorใช้งาน distro หรือ shell ไม่สำคัญ นั่นอาจเป็นเหตุผลว่าทำไมมันไม่อยู่ใน. zshrc เพราะสิ่งที่ใช้ได้ผลกับเทอร์มินัลอีมูเลเตอร์หนึ่งไม่ทำงานอีกอัน แต่นั่นอาจแก้ไขได้ถ้า zshrc fx อ่านตัวแปรสภาพแวดล้อม $ TERM และใช้การตั้งค่า bindkey ที่แตกต่างกันตามผลลัพธ์
miyalys

2

แก้ไข

เทอร์มิใช้Konsole

วิธีแก้: คลิกขวาที่เทอร์มินัล (หรือการตั้งค่าในแถบเมนู) -> เปลี่ยนโปรไฟล์ปัจจุบัน -> การจับคู่คีย์บอร์ด -> เปลี่ยนเป็นค่าเริ่มต้น (xfree4)


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