ए, बी, सी, डी में vi (विम में नहीं) को प्रदर्शित करने वाली तीर कुंजियों को ठीक करें


16

मुझे पता है कि विम में मैं जोड़ सकता हूं

set nocompatible

में .vimrcसे बचने के तीर है कि कुंजी को ए, बी, सी, डालने मोड में डी प्रदर्शित करते हैं।

लेकिन मैं vi संस्करण 4.0 (ग्रिटर) 12/25/06 का उपयोग कर रहा हूं ।

मैं समान व्यवहार कैसे प्राप्त कर सकता हूं?

== EDIT == (1)

मैं आर्क लिनक्स से vi संस्करण का उपयोग कर रहा हूं जो इस CVS रिपॉजिटरी (अंतिम 24 फरवरी 2007 को) से निम्न कमांड के साथ बनाया गया है:

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

और तीन पैच के साथ: फिक्स-ट्यूबाइज-शॉर्ट- ओवरफ्लो.चैच , नेवीसेपचैच और प्रिजर्व-डिर.पच

== EDIT (2) ==

समस्याएं LXTerminal 0.2.0 , दीमक 10-1 , Tilda 1.2.4-1 , टर्मिनेटर 0.98-1 और xterm 320-2 में होती हैं, लेकिन urxvt v9.21 में नहीं और न ही लिनक्स वर्चुअल कंसोल में।

== EDIT (3) ==

के अनुसार एकल यूनिक्स विशिष्टता बाएँ तीर, नीचे-तीर, राइट-तीर, ऊपर तीर क्रमशः निम्नलिखित capname के अनुरूप: kcub1, kcud1, kcuf1और kcuu1। इन कैप्टम से xtermऔर उनके rxvt-unicode-256colorलिए टर्मो एंट्री की तुलना करना :

$ 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'.

Substituing द्वारा प्रविष्टि terminfo टर्म में संशोधन करना '\EOD', '\EOB', '\EOC', '\EOA' द्वारा '\E[D', '\E[B', '\E[C', '\E[A'समस्या का समाधान करना चाहिए, लेकिन यह एक अच्छा विचार है? शायद यह अन्य कार्यक्रमों को तोड़ देगा तीर कुंजी का उपयोग?


2
मुझे लगता है कि यह vi (m) <-> टर्मिनल इंटरैक्शन के कारण होता है, इसलिए आप कुछ टर्मिनल से संबंधित वर्कअराउंड / कॉन्फ़िगरेशन भी आज़मा सकते हैं।
वनलेसर

1
@VanLaser ने जो कहा, उसका अनुवाद: कीबोर्ड में उत्पन्न कोड के साथ या डेटाबेस TERMमें करंट के लिए आपकी एंट्री सिंक से बाहर है। समाधान को बदलना नहीं है , लेकिन यह पता लगाने के लिए कि क्या आपके खिलाफ जुड़ा हुआ है या , कीबोर्ड द्वारा उत्सर्जित कीकोड को ढूंढें, और तदनुसार डेटाबेस को ठीक करें। शिकायत करने के लिए sysadmin भी काम कर सकते हैं। termcapterminfoTERMvitermcapterminfo
सातो कैटसुरा

1
क्या मैंने वह सब कहा था? कभी-कभी मैं खुद को विस्मित कर देता हूं :) (बेशक, मुझे पता था कि यह टर्मिनल से संबंधित है)।
वैनलेसर

1
Vi का यह संस्करण ncurses के साथ बनाया गया है, इसे तब उपयोग करना चाहिए terminfo
ओरतमाला लोकनी

2
क्या आपने देखा ये टिप्स ? शायद उनमें से कुछ उपयोगी हो सकते हैं।
बोरिस सेरेब्रोव

जवाबों:


2

आप एक ऐसा उपनाम बना सकते हैं जो आपके $TERMचर को निर्धारित करता है

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

इसे अपने शेल की आरसी फ़ाइल में जोड़ें और इसे आपके द्वारा लॉन्च किए गए प्रत्येक टर्मिनल के लिए परिभाषित किया जाना चाहिए।


मेरे सिस्टम पर यह सिर्फ Vi लीव इन्सर्ट मोड बना देगा (जो कि शायद इसे प्रिंट करने वाले कचरे से बेहतर है, लेकिन फिर भी यह समस्या को ठीक नहीं करता है)।
मार्टिन टूरनोइज

1

कभी-कभी ऐसा व्यवहार आपके लिए असामान्य कुंजी मैपिंग सेटअप के परिणामस्वरूप हो सकता है .vimrc- इसलिए उदाहरण के लिए यदि आपके पास ऐसा कुछ है जो दो ESCप्रमुख प्रेसों को मैप करता है :

nmap <Esc><Esc> some_command_sequence

तो यह तीर कुंजियों के साथ खराबी को जन्म दे सकता है।


ओपी द्वारा वर्णित विन्यास काफी विशिष्ट है, और यह इस तरह के मानचित्रण के बिना व्यवहार को प्रदर्शित करता है। (मैंने इसका परीक्षण किया है।)
रिच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.