แก้ไขปุ่มลูกศรที่แสดง A, B, C, D ใน vi (ไม่ใช่ในกลุ่ม)


16

ฉันรู้ว่าในกลุ่มฉันสามารถเพิ่มได้

set nocompatible

ใน.vimrcเพื่อหลีกเลี่ยงปุ่มลูกศรที่แสดง A, B, C, D ในโหมดแทรก

แต่ฉันใช้ vi เวอร์ชัน 4.0 (gritter) 12/25/06

ฉันจะได้รับพฤติกรรมเดียวกันได้อย่างไร

== แก้ไข == (1)

ฉันใช้รุ่น vi จาก Arch Linuxซึ่งสร้างจากที่เก็บ CVSนี้(ส่งมอบครั้งล่าสุด 24 กุมภาพันธ์ 2550) ด้วยคำสั่งต่อไปนี้:

make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8"

และวิทยานิพนธ์สามแพทช์: การแก้ไข tubesize-สั้น overflow.patch , navkeys.patchและรักษา-dir.patch

== แก้ไข (2) ==

ปัญหาเกิดขึ้นในLXTerminal 0.2.0 , ปลวก 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1และxterm 320-2แต่ไม่ใช่ในurxvt v9.21หรือในคอนโซลเสมือนของ Linux

== แก้ไข (3) ==

ตามที่สเปก Unix เดี่ยวลูกศรซ้ายลงลูกศรขวาลูกศรลูกศรขึ้นสอดคล้องกับลำดับ capname ต่อไปนี้: kcub1, kcud1, และkcuf1 kcuu1การเปรียบเทียบรายการ terminfo จากxtermและrxvt-unicode-256colorสำหรับ capterms เหล่านี้จะให้:

$ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1'

kcub1: '\EOD', '\E[D'.
kcud1: '\EOB', '\E[B'.
kcuf1: '\EOC', '\E[C'.
kcuu1: '\EOA', '\E[A'.

แก้ไข xterm terminfo รายการโดย substituing '\EOD', '\EOB', '\EOC', '\EOA' โดย'\E[D', '\E[B', '\E[C', '\E[A'ควรจะแก้ปัญหาที่เกิดขึ้น แต่มันเป็นความคิดที่ดีหรือไม่? อาจจะเป็นการแบ่งโปรแกรมอื่น ๆ ที่ใช้ปุ่มลูกศรใช่ไหม


2
ฉันคิดว่าสิ่งนี้เกิดจาก vi (m) <-> การโต้ตอบกับเทอร์มินัลดังนั้นคุณสามารถลองแก้ไขปัญหา / การกำหนดค่าเทอร์มินัลได้
VanLaser

1
การแปลสิ่งที่ @VanLaser กล่าวไว้ข้างต้น: รายการของคุณสำหรับปัจจุบันTERMในtermcapหรือterminfoฐานข้อมูลไม่สอดคล้องกับรหัสที่ผลิตโดยแป้นพิมพ์ วิธีการแก้ปัญหาคือไม่เปลี่ยนTERMแต่เพื่อดูว่าคุณviเชื่อมโยงกับtermcapหรือterminfoค้นหารหัสที่ปล่อยออกมาจากแป้นพิมพ์และแก้ไขฐานข้อมูลที่สอดคล้องกัน การร้องเรียนกับดูแลระบบอาจทำงานได้เช่นกัน
Sato Katsura

1
ฉันพูดทุกอย่างเหรอ? บางครั้งฉันแปลกใจตัวเอง :) (แน่นอนทั้งหมดที่ฉันรู้ก็คือมันเกี่ยวข้องกับเครื่องปลายทาง)
VanLaser

1
รุ่นของ vi นี้ถูกสร้างขึ้นด้วย ncurses terminfoก็ควรใช้แล้ว
Ortomala Lokni

2
คุณเห็นเคล็ดลับเหล่านี้หรือไม่ บางทีสิ่งที่พวกเขาอาจมีประโยชน์
Boris Serebrov

คำตอบ:


2

คุณสามารถสร้างนามแฝงที่ตั้งค่า$TERMตัวแปรของคุณ

alias vi='TERM=rxvt-unicode-256color vi'

เพิ่มเข้าไปในไฟล์ rc ของเชลล์และควรกำหนดให้กับทุกเทอร์มินัลที่คุณเปิดใช้


ในระบบของฉันนี่จะทำให้ Vi ออกจากโหมดแทรก (ซึ่งน่าจะดีกว่าการพิมพ์ขยะ แต่ก็ยังไม่ค่อยแก้ไขปัญหา)
Martin Tournoij

1

บางครั้งพฤติกรรมดังกล่าวอาจเกิดจากการตั้งค่าการจับคู่คีย์ที่ผิดปกติในของคุณ.vimrc- ตัวอย่างเช่นหากคุณมีบางอย่างที่แมปการESCกดปุ่มสองครั้ง:

nmap <Esc><Esc> some_command_sequence

จากนั้นสามารถนำไปสู่การทำงานผิดพลาดเป็นกลุ่มด้วยปุ่มลูกศร


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