2008-11-14 7 views
11

मैं एक उग्र vim उपयोगकर्ता हूँ और हाल ही में कुछ एसक्यूएल कोड लिखना शुरू कर दिया है। मैं सीएपीएस में अपने एसक्यूएल कथन लिखना पसंद करता हूं और कभी-कभी कैप्सलॉक 'ऑफ' स्विच करना भूल जाता हूं और इससे पहले कि मुझे पता चल जाए कि क्या हो रहा है, इससे पहले मैं अपने कोड पर कहर बरकरार रखता हूं।सीएपीएस लॉक चालू है या नहीं, इस पर निर्भर करता है कि मैं अपने पृष्ठभूमि रंग को स्वचालित रूप से बदलने के लिए vim कैसे सेट करूं?

मैं अब तक नहीं किसी भी तरह से बताने के लिए है कि क्या CapsLock कुंजी अपने कीबोर्ड पर देख रहे हैं (जो मुझे आवश्यकता है स्क्रीन जो मैं एक बड़ी देरी पर विचार से दूर देखने के लिए) के अलावा अन्य पर है मिल गया है।

आदर्श रूप में मैं vim तरह स्वचालित रूप से मेरी पृष्ठभूमि रंग बदलने के लिए जब भी CapsLock 'चालू' है, लेकिन मैं एक समझौता के रूप में CapsLock स्थिति के कुछ अन्य परदे पर सूचक के लिए समझौता करने के लिए तैयार होगी।

उत्तर

1

सबसे अच्छा मैं आपको दे सकता हूं कि जब भी कैप्सल कुंजी विम में हिट हो तो पृष्ठभूमि रंग टॉगल करें।

विम अकेले कैप्स्लॉक कुंजी का पता नहीं लगा सकता है। जो मैं आपको दे सकता हूं वह एक मैपिंग है ताकि आप डालने मोड के लिए कैप्सलॉक कुंजी की तरह कार्य करने के लिए कुछ अन्य कुंजी (इस उदाहरण में, F3) का उपयोग कर सकें और सभी कैप्स चालू होने पर पृष्ठभूमि रंग बदल सकें। उम्मीद है कि यह आपको आवश्यक कार्यक्षमता देगा।

" let the case be toggled in normal mode 
    map <expr> <F3> ToggleInsertCase() 
    " let the case be toggled in insert mode 
    imap <expr> <F3> ToggleInsertCase() 

    let toUpper = 0 
    func! ToggleInsertCase() 
     let g:toUpper = 1 - g:toUpper 
     if (g:toUpper == 1) 
      highlight Normal ctermbg=Blue " the background color you want when uppercased 
      " convert all the letters to uppercase in insert mode 
      let i = char2nr('a') 
      while i <= char2nr('z') 
       let c = nr2char(i) 
       exe 'inoremap' c toupper(c) 
       let i = i + 1 
      endwhile 
     else 
      highlight Normal ctermbg=Black " the background color you want normally 
      " let letters be as normal in insert mode 
      let i = char2nr('a') 
      while i <= char2nr('z') 
       let c = nr2char(i) 
       exe 'iunmap' c 
       let i = i + 1 
      endwhile 
     endif 
     " don't insert anything when this function is called in normal mode 
     return "" 
    endfunc 

यह Tim Pope's capslock.vim से कुछ उधार लेता है:

में अपने ~/.vimrc या उपयुक्त में निम्नलिखित ~/.vim/ftplugin/<filetype> .vim रखो।

यदि आप वास्तव में इसके प्लेटफ़ॉर्म के आधार पर कैप्स्लॉक कुंजी का उपयोग करना चाहते हैं, तो वहां मुफ्त ऐप्स का एक समूह है जो आपको को अपनी कैप्स्लॉक कुंजी को किसी अन्य चीज़ को रीमेप करने देता है, ताकि आप इसे सेट कर सकें ताकि जब आप हिट करें कैप्लॉक, विम (और बाकी सब कुछ) F3 मिला। जो कुछ भी। यह कैप्स्लॉक कुंजी प्राप्त करने वाले अन्य ऐप्स में हस्तक्षेप करेगा हालांकि (जब तक कि कुंजी-रीमेपर ऐप चालाक न हो), ताकि परेशानी हो सके।

+0

यह दृष्टिकोण बिल्कुल सही होगा क्योंकि मुझे यह सुनिश्चित करने की ज़रूरत है कि जब मैं दूसरी विंडो से विम दर्ज करता हूं तो मेरे पास कैप्स लॉक नहीं होता है। क्या आप शायद इसे और अधिक मांस दे सकते हैं? मैंने आपके द्वारा दिए गए आदेशों के साथ पहले और खेलना पहले विस्क्रिप्ट नहीं लिखा है, जो मैंने अपेक्षित नहीं किया था। धन्यवाद। – snth

3

मैंने जो किया वह "कॉम्पोज़" कुंजी पर मेरी कैप्स लॉक कुंजी को बाध्य कर दिया गया है, इसलिए मेरी कैप्सलॉक कुंजी प्रभावी ढंग से गायब है और मैं इसके बजाय स्वयं SHIFT का उपयोग करने के लिए मजबूर हूं। :)

आप शायद इसे आजमा सकते हैं, यह मस्तिष्कवादी लग सकता है, लेकिन यह लंबे समय तक बेहतर है। कुछ लोग तर्क देते हैं कि कैप्स लॉक अनावश्यक है।

+0

यह एक विकल्प है लेकिन मैं इस मार्ग से नीचे नहीं जाना पसंद करता हूं। मुझे लगता है कि कैप्स लॉक कुंजी मदद करता है और इसका उपयोग करना जारी रखेगा। – snth

+0

यदि आप सभी सीएपीएस में बहुत सी चीजें टाइप कर रहे हैं, तो सीएपीएस लॉक को फेंकना * वास्तव में * आपकी टाइपिंग गति को धीमा कर देगा। – iconoclast

+0

मैं सभी सीएपीएस में बोनस = पी के रूप में धीमा होने पर चीजों को बांध रहा हूं। इसके अलावा, मैं वास्तव में वैसे भी बदलाव के अलावा किसी भी चीज़ के लिए अपने पिंकी का उपयोग नहीं करता हूं। टाइपिंग शैली के लिए शायद यह "खराब" है ... लेकिन प्लस पर, होल्डिंग शिफ्ट ने मुझे कभी धीमा नहीं किया है। –

4

निकटतम आप केंट का जवाब प्राप्त कर सकते हैं। विम CapsLock (या NumLock, या ScrollLock, या अपने आप में किसी अन्य संशोधक कुंजी) नहीं देख सकते हैं क्योंकि इन कुंजियों की स्थिति एक टर्मिनल भर में नहीं भेजा जाता है।

ध्यान दें कि, सिद्धांत रूप में, जीवीआईएम इन संशोधकों को देख सकता है, लेकिन व्यवहार में यह नहीं है। जीवीआईएम का कीबोर्ड हैंडलिंग कई अन्य तरीकों से हालांकि विम से बेहतर है।

0

क्यों .sql फ़ाइलों के लिए फ़ाइल टाइप प्लगइन नहीं है जिसमें आपके सभी कीस्ट्रोक को कैप्स में बदलने के लिए imap आदेश शामिल हैं। इस तरह, आपको कीबोर्ड पर वास्तविक कैप्सलॉक कुंजी को कभी भी टॉगल नहीं करना पड़ता है और जब आप कोड पर वापस जाते हैं तो चीजें ठीक होंगी।

फ़ाइल $ विम में निम्न जोड़ें/vimfiles/ftplugin/sql_too.vim:

imap a A 
imap b B 
imap c C 
imap d D 
imap e E 
imap f F 
imap g G 
imap h H 
imap i I 
imap j J 
imap k K 
imap l L 
imap m M 
imap n N 
imap o O 
imap p P 
imap q Q 
imap r R 
imap s S 
imap t T 
imap u U 
imap v V 
imap w W 
imap x X 
imap y Y 
imap z Z 
+0

यह एक विचार है लेकिन ऐसे कई अवसर भी हैं जहां मैं कैप्स लिखना पसंद करता हूं, जैसे शैल स्क्रिप्ट्स जो पर्यावरण चर का उपयोग करते हैं। साथ ही, एसक्यूएल कोड में मुझे अभी भी कैमेलकेस और मिश्रित मामले में टेबल नाम और कॉलम नाम लिखने में सक्षम होना चाहिए और मैं इसे यहां कैसे करूँगा? संक्षेप फ़ाइल बनाने के लिए – snth

0

मैं केंट से सहमत हैं, और पुन: मैप कैप्स लॉक नियंत्रण कुंजी की कुंजी। मैंने विंडोज बक्से पर ऐसा करने के लिए ऑटोहॉटकी का उपयोग किया, लेकिन here और कई अन्य स्थानों के वर्णन के रूप में एक रजिस्ट्री सेटिंग है। यदि आप विंडोज का उपयोग नहीं कर रहे हैं, तो आप MacOS और यूनिक्स एक्स विंडो प्लेटफॉर्म पर कैप्स लॉक कुंजी को आसानी से रीमेप भी कर सकते हैं।

की सुविधा गलती से कैप्स लॉक होने पर, साल में कुछ बार दूर होने से मैं वास्तव में इसे चाहता हूं!

5

वह व्यक्ति जिसने ऊपरी मामले में लोअरकेस अक्षरों को मैपिंग करने का सुझाव दिया है, सही रास्ते पर है लेकिन हमें कुछ और विवरण जोड़ने की जरूरत है। चाल एसक्यूएल कीवर्ड को ऊपरी मामले में मैप करना है। फिर आप उन्हें लोअरकेस में टाइप कर सकते हैं और vim उन्हें आपके लिए अपरकेस में बदल देगा। यह संक्षेप में प्रयोग किया जाता है, मैपिंग नहीं। उदाहरण के लिए, आप संक्षिप्त नाम

:iab ATT American Telephone and Telegraph 

तो हर बार जब आप अपने कोड में 'ATT' टाइप बनाते हैं, विम स्वचालित रूप से यह अमेरिकी टेलीफोन और टेलीग्राफ 'के लिए जैसे ही आप स्पेस बार हिट अनुवाद कर देगा। (इसे आज़माएं! यह मजेदार है!)

तो, एक नई फ़ाइल बनाएं और सभी SQL कीवर्ड के लिए संक्षेप में प्रवेश करना प्रारंभ करें।

iab select SELECT 
iab like LIKE 
iab where WHERE 
... 

जब से तुम सिर्फ तुम संपादित कर रहे हैं जब एसक्यूएल स्रोत लागू करने के लिए इन संक्षिप्त रूपों चाहते हैं, करने के लिए ~/.vim/इस फ़ाइल को सहेजने/ftplugin/sql.vim इस फ़ाइल में कमांड निष्पादित किया जाएगा जब विम पहचान लेता है के बाद उसने एक एसक्यूएल फाइल खोली है।

फ़ाइल प्रकार का पता लगाने तभी काम करता है आप इसे चालू तो सुनिश्चित करें कि आपके .vimrc तरह लाइनों हो:

set nocompat 
filet detect plugin on 

आप समय सहेजना चाहिए और पकड़े से कम कार्पल टनेल है एक बार जब आप इस काम करना आरंभ शिफ्ट कुंजी नीचे हर समय!

+1

, मैं सभी (लोअर-केस) एसक्यूएल कीवर्ड दर्ज करता हूं, प्रत्येक अपनी लाइन पर, और ':% s,^\ w \ + $, iab & \ U & 'कमांड का उपयोग करता हूं। – Tobias

संबंधित मुद्दे