การทำแผนที่Escมักจะยุ่งยากเล็กน้อยและมักจะเชิญปัญหาประเภทนี้แม้ว่ามันจะไม่เกิดขึ้นก็ตาม
วิธี "canonical" สำหรับการแมปของคุณคือ:
nnoremap <silent> <C-l> :nohlsearch<CR><C-l>
ด้วยวิธีนี้Ctrl+L(ซึ่งโดยปกติจะวาดหน้าจอของคุณใหม่) จะหยุดการเน้นและวาดหน้าจออีกครั้ง
ฉันคิดว่าฉันพบว่าเกิดอะไรขึ้น แต่ฉันยังไม่มีวิธีแก้ปัญหา ฉันถือว่า Vim ได้รับสตริงที่มี<ESC>
และ "2c" ดังนั้นฉันจึงใช้การแมปต่อไปนี้เพื่อให้มองเห็นได้:
nnoremap <Esc> :"
มันทำให้เกิดพรอมต์ต่อไปนี้เมื่อเริ่มต้น:
:"[>0;261;0c
ซึ่งหมายความว่าสิ่งที่ส่ง<ESC>[>0;261;0c
เมื่อเริ่มต้น ตอนนี้ค้นหาxterm
ลำดับการควบคุมเริ่มต้นเราพบว่า:
ESC [ Control Sequence Introducer (CSI is 0x9b)
และ
CSI> P s c
ส่งคุณสมบัติของอุปกรณ์ (DA รอง)
P s = 0 หรือละเว้น→ร้องขอรหัสประจำตัวของเครื่อง การตอบสนองขึ้นอยู่กับการ
ตั้งค่าทรัพยากรdecTerminalID มันควรใช้กับ VT220 และสูงกว่าเท่านั้น แต่xtermขยายขอบเขตนี้เป็น VT100
→ CSI> P p ; P v ; หน้า
ที่P pหมายถึงประเภทอาคาร
P p = 0 → '' VT100 ''
P p = 1 → '' VT220 ''
และP vเป็นเวอร์ชั่นเฟิร์มแวร์ (สำหรับxtermนี่คือหมายเลขแพทช์ XFree86 เริ่มต้นด้วย 95) ในเทอร์มินัล DEC,
P cระบุหมายเลขการลงทะเบียนคาร์ทริดจ์ ROM และเป็นศูนย์เสมอ
ดังนั้นในกรณีของฉันสิ่งที่ส่งCSI >
ด้วยP p = 0 (→เทอร์มินัลชนิด VT100), P v = 261 (→ xterm
รุ่นของฉัน) และP c = 0
ถึงกระนั้นฉันก็ไม่รู้ว่ามันมาจากไหนหรือจะหยุดมันได้อย่างไร ฉันเดาได้ดีที่สุดว่าการแลกเปลี่ยนข้อมูลระหว่างเทอร์มินัลกับ Vim นั้นล้มเหลวและมีบางสิ่งที่ไม่เหมาะสม