2011-03-17 19 views
8

द्वारा कर्सर शब्द को ले जाएं मैंने Is there any way in the OS X Terminal to move the cursor word by word? में मार्गदर्शन का पालन किया है और अब टर्मिनल में मैं कर्सर शब्द को शब्द से ले जा सकता हूं।मैक ओएस एक्स टर्मिनल में विम:

हालांकि, विम में, मैं केवल शब्द से पिछड़े शब्द को स्थानांतरित करने में सक्षम हूं। मैं शब्द से आगे नहीं बढ़ सकता, कोई फर्क नहीं पड़ता कि मैं \ 033f से option+cursor-right या shift+cursor-right सेट करता हूं। मुझे लगता है कि एकमात्र कामकाज सामान्य मोड में जाना है और अगले शब्द पर जाने के लिए <w> पर क्लिक करें। इसे ठीक करने के बारे में कोई विचार? धन्यवाद।

+9

सामान्य मोड में 'w' शब्द द्वारा शब्द को स्थानांतरित करने का सबसे अच्छा तरीका है। – alternative

+1

आप एक सामान्य मोड कमांड चलाने के लिए सम्मिलित मोड में^ओ का उपयोग कर सकते हैं और^ओउ जैसे डालने मोड में रह सकते हैं। –

उत्तर

9

w कोई कामकाज नहीं है। शब्द से शब्द को स्थानांतरित करने का यह प्राथमिक तरीका है (यह भी देखें: W, b, B, e, E)। आप जो चाहते हैं वह एक कामकाज है जो आपको विम सीखने में मदद नहीं करेगा।

1

कुछ लोग तर्क दे सकते हैं कि VIM native keyboard shortcuts के साथ घूमना एक कामकाज नहीं है, लेकिन मेरे लिए यह सुनिश्चित है कि यह बहुत ही असुविधाजनक और बहुत अक्षम है। विशेष रूप से वह हिस्सा जहां आपको अगले शब्द पर जाने के लिए insert मोड और normal मोड के बीच स्विच करने की आवश्यकता है।

यही कारण है कि मैं SuperUser पर this answer पर आधारित समाधान के साथ आया था। विचार Terminal.app द्वारा सीधे वीआईएम में प्रदान किए गए इनपुट को मैप करना है। एसयू पर उत्तर दिखाता है कि होम/एंड कुंजियों के लिए अपेक्षित काम करने के लिए अपनी vimrc फ़ाइल में क्या डालना है।

नीचे दिए गए मेरे tweaked संस्करण में Option+arrow (या Alt+arrow) शब्दों पर नेविगेशन शामिल है। मैंने टर्मिनल के आस-पास घूमने के व्यवहार की नकल करने की कोशिश की है जितनी मुझे मिल सकती है। तो Option+Right दबाकर (Alt+Right) शब्द के बाद देखभाल के अगले चरित्र पर ले जाएगा (शब्द के अंतिम चरित्र के विपरीत, जो वीआईएम w देशी व्यवहारकर्ता है)।

let tp=$TERM_PROGRAM 
if tp == 'Apple_Terminal' 
    :" map Mac OS X Terminal.app 

    " map Home/End: 
    :map <ESC>[H <Home> 
    :map <ESC>[F <End> 
    " small 'o' letter in <C-o> means no exit from the insert mode 
    :imap <ESC>[H <C-o><Home> 
    :imap <ESC>[F <C-o><End> 
    :cmap <ESC>[H <Home> 
    :cmap <ESC>[F <End> 

    " map Option+Left/Option+Right: 
    " for this to work you must have the bindings in Settings > Keyboard set 
    " as follows: 
    " 'option cursor left' to '\033b' 
    " 'option cursor right' to '\033f' 
    :map <ESC>f el 
    :imap <ESC>b <C-o>b 
    :imap <ESC>f <C-o>el 
    :cmap <ESC>f el 
endif 

एक छोटी सी के रूप में, लेकिन महत्वपूर्ण बोनस आप insert मोड से बाहर निकले बिना घर/नेविगेशन समाप्त करें मिलता है। 10.8.5 पर परीक्षण किया गया।

+0

यह शानदार है, लेकिन मैंने डालने मोड में देखा है मुझे इस कदम में अतिरिक्त "एल" मिल जाएगा। पूर्व अगर '[x]' कर्सर .. '[x] foo bar' तो ⌥ -> मूर्ख [x] बार' -> ⌥ 'folo balr [x]' –

+0

^^ उपरोक्त को अपडेट करें। .. बस बनाओ ': imap f ई' ... 'l' अनावश्यक –

1

मुझे आपके लिए कुछ चीजों को साफ़ करने दें। बैश (टर्मिनल के अंदर चल रहे खोल कार्यक्रम) में आपके द्वारा उपयोग किए जाने वाले व्यवहार का उपयोग किया जाता है। (शब्द द्वारा आगे बढ़ने के लिए Alt + f का उपयोग करके, और Alt + b शब्द से पिछड़े स्थानांतरित करने के लिए।) यह मूल रूप से Emacs की तरह किया गया था। आप

set -o vi 

विम व्यवहार पर स्विच करने के लिए कमांड का उपयोग कर सकते हैं। इस मोड में, आप सामान्य मोड पर स्विच करने के लिए Esc का उपयोग कर सकते हैं, और vim में चारों ओर स्थानांतरित कर सकते हैं; फिर मुझे सम्मिलित मोड में वापस जाने के लिए दबाएं।

तो आश्चर्यचकित न हों कि विम Emacs की तरह कार्य करने की कोशिश नहीं कर रहा है। विम के पीछे पूरी शक्ति इन सरल गतियों के पीछे है।

+0

' -bash: bindkey: आदेश नहीं मिला'। मुझे नहीं लगता कि यह एक मानक कमांड है। क्षेत्रीय अक्षरों में उच्चारण वर्णों के लिए अक्सर 'Alt + character' का उपयोग किया जाता है। –

+0

मेरा बुरा। किसी भी तरह भूल गया कि मैं zsh चला रहा था। –

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