Linux पर sqlite खोल का उपयोग करते समय अजीब कीबोर्ड


9

मैं गर्तिका से जुड़े एक बॉक्स का उपयोग करता हूं। बैश के साथ इसका उपयोग करने से, मेरा कीबोर्ड अच्छा प्रदर्शन करता है, लेकिन जब मैं साइक्लाइट शेल (sqlite3 प्रोग्राम) का उपयोग कर रहा हूं, तो मेरी चाबियाँ पागल हो जाती हैं:

del=^[[3~
up=^[[A
left=^[[D
right=^[[C
down=^[[B

यहाँ मेरा env (प्रासंगिक भाग) है:

TERM=linux
SHELL=/bin/bash
SHLVL=1
INPUTRC=/etc/inputrc

मैं अपनी चाबियों का उपयोग सामान्य रूप से साइक्लाइट पर करना चाहता हूं, जैसा कि मैं खिड़कियों पर करता हूं।

मेरा इनपुट आर्क:

# do not bell on tab-completion
#set bell-style none

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on

# Completed names which are symbolic links to
# directories have a slash appended.
set mark-symlinked-directories on

$if mode=emacs

# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word

# for rxvt
"\e[8~": end-of-line

# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif

जवाबों:


9

(FYI करें: वे सामान्य सीक्वेंस हैं जो अधिकांश टर्मिनलों पर उन कुंजियों से उत्पन्न होते हैं, यह उनकी व्याख्या करने के लिए एक टर्मिनल या प्रोग्राम / प्रोग्राम तक है। आप इसे एक वर्किंग टर्मिनल पर Ctrl+ vदबाकर Endया अन्य गैर-कैरेक्टर कुंजी दबाकर दिखा सकते हैं , जहाँ ctrl-V का शाब्दिक रूप से इलाज किया जाने वाला अगला कीप सेट है।)

ऐसा लगता है जैसे आपका sqlite3बाइनरी उपयोग नहीं कर रहा है readline, या रीडलाइन कॉन्फ़िगरेशन ( inputrc) टूट गया है (कम संभावना है अगर bashठीक काम कर रहा है)।

यदि आप निम्नलिखित के साथ रीडलाइन का उपयोग कर रहे हैं, तो इसकी पुष्टि / खंडन करने में सक्षम हो सकते हैं, which sqlite3यदि यह आपके रास्ते में नहीं है, तो इसे पूर्ण पथ से बदल दें PATH

ldd `which sqlite3` 

यदि आप देखते हैं libreadline.soया समान हैं, तो यह काम करना चाहिए , इसलिए अपने INPUTRCपर्यावरण चर की जांच करें , ~/.inputrcऔर /etc/inputrc। कोशिश को जांचने के लिए एक पतला मौका है जो इसे सांख्यिकीय रूप से जुड़ा हुआ है ( libreadline.a):

strings -a `which sqlite3`| grep -i inputrc

यदि तार INPUTRC, ~/.inputrcया /etc/inputrcमौजूद है, तो ऐसा लगता है कि रीडलाइन सांख्यिकीय रूप से जुड़ी हुई थी, और काम करना चाहिए।

(सबसे अच्छा आप केवल कुछ मूल संस्करण प्राप्त कर सकते हैं और ( pragma compile_optionsयदि समर्थित है, तो) से जानकारी संकलित कर सकते हैं sqlite3, लेकिन सुविधाओं का पूरा सेट नहीं है, यही कारण है कि हमें बाइनरी में जाने की आवश्यकता है।)

तो न तो lddहै और न ही stringsReadLine से संकेत मिलता है, तो यह लगभग निश्चित है कि द्विआधारी समर्थन नहीं है है।

अन्यथा इस उत्तर को जांचें: उबंटू पर रीडलाइन समर्थन के साथ SQLite

यदि आपके पास sqlite3बाइनरी में रीडलाइन सपोर्ट नहीं है, तो आप इनमें से किसी एक का उपयोग करके इसे लपेट सकते हैं:

rlwrap sqlite3
socat READLINE EXEC:"sqlite3"

दोनों आपको कमांड लाइन पर एक इतिहास फ़ाइल निर्दिष्ट करते हैं।

आप अपनी bashरीडलाइन बाइंडिंग की भी जांच कर सकते हैं , बस यह सुनिश्चित करने के लिए कि रीडलाइन काम कर रही है और अपेक्षित रूप से कॉन्फ़िगर की गई है:

bind -p | egrep '\[[ABCD3].?":'

मेरे सिस्टम पर (मेरे bash-3.xभीतर चल rxvtरहा है):

"\M-[3~": delete-char
"\M-[D": backward-char
"\M-[C": forward-char
"\M-[B": next-history
"\M-[A": previous-history

\M"मेटा" है, जो भागने के बराबर है , इसलिए जहां आप देखते हैं " \M-" a \e"को भी काम करना चाहिए। जब मुद्रित किया जाता है, तो एस्केप को ^[(नियंत्रण- [) के रूप में दर्शाया जाता है ।


मैंने अपना इनपुट आर्क जोड़ा, यदि आप इस संभावना को बाहर करने के लिए एक नज़र डाल सकते हैं
14

और sqlite की मेरी ldd libreadline नहीं दिखाती है
kurast

1
यह शायद फिर से पुराना समर्थन नहीं है, या तो अपने पैकेज को अपग्रेड करें (यदि आप संस्करण को अपग्रेड करना है तो संगतता समस्याओं की जांच करें), या rlwrapवर्कअराउंड के रूप में उपयोग करें । उत्तर अपडेट किया गया।
mr.spuratic

मेरा बाइनरी सांख्यिकीय रूप से जुड़ा नहीं है, और मेरा बाइंड आउटपुट भी आपके जैसा है। हालाँकि, मेरे पास या तो मेरे इंस्टाल में rlwrap या socat नहीं है, और मेरे पास उन तक पहुंचने के लिए रूट एक्सेस नहीं है।
१ast:५३ पर कुर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.