2012-03-26 6 views
16

विम में, कोई पूंजी जे टाइप करके दो लाइनों में शामिल हो सकता है, हालांकि, ये आमतौर पर एक स्थान से जुड़े होते हैं।मैं विम में शामिल चरित्र को कैसे बदलूं?

मुझे याद है कि कुछ चर सेट करके जुड़ने के लिए इस्तेमाल किए गए चरित्र को बदलने का एक तरीका था, लेकिन मुझे इसे फिर से नहीं मिल रहा है।

अगर कोई मुझे याद दिलाता है तो मैं इसकी सराहना करता हूं, या पुष्टि करता हूं कि यह नहीं किया जा सकता है।

+3

में शामिल होने के दो पास वोट के जवाब में, फैक कहा गया है कि सवाल यह है कि कवर "सॉफ्टवेयर उपकरण आमतौर पर प्रोग्रामर द्वारा इस्तेमाल किया" विषय पर कर रहे हैं। इसलिए इस सवाल को विषय के रूप में बंद नहीं किया जाना चाहिए। – DrAl

उत्तर

10

जब मैं बस कुछ ही लाइनों में शामिल करना चाहते मैं एक 3 चाबियाँ कॉम्बो (सामान्य मोड) का उपयोग करें।

यदि मैं अधिक लाइनों में शामिल होना चाहता हूं या समूहों में लाइनों में शामिल होना चाहता हूं, तो मैं मैक्रो के साथ पिछले कॉम्बो का उपयोग करता हूं।

उदाहरण के लिए, एक 3 कॉलम सीएसवी तालिका में 3 लाइनों को बदलने के लिए, मैं इस मैक्रो रिकॉर्ड (बेशक पत्र j को सौंपना):

qjJr,Jr,jq 

तो, @j, का उपयोग कर 3 लाइनों जुड़ जाता है और करने के लिए चला जाता है का उपयोग कर अगली पंक्ति।

[email protected] 10 लाइनों को परिवर्तित करता है।

-1

यह मैपिंग है। आप विम विकिया में ट्यूटोरियल पढ़ सकते हैं: Mapping keys in vim

कमांड मोड में नीचे दिए गए आदेश को आज़माएं, और प्रेस करने का प्रयास करें। यह काम करना चाहिए :)

:map <space> J 
+0

मुझे लगता है कि उससे कुछ कम सामान्य होना चाहिए। – merlin2011

+0

आपने प्रश्न को गलत समझा है। यह लाइन-जॉइनिंग कमांड को आमंत्रित करने के लिए दबाए जाने के लिए कौन सी कुंजी को बदलने के लिए नहीं कह रहा है। यह नियंत्रित करने के लिए कह रहा है कि जुड़ा हुआ लाइनों के बीच कौन सा चरित्र डाला गया है। –

5

वहाँ एक सेटिंग है कि आप इस सीधे करने की अनुमति देता नहीं है, देखें:

:help J 
विशेष रूप से

, कमांड की सूची के नीचे पाठ।

आप ऐसा कर सकता है तरीकों में से एक जोड़े:

:nnoremap J gJi.<ESC> 
" or 
let joinchar = ';' 
nnoremap J :s/\n/\=joinchar/<CR> 

दूसरा विकल्प आप joinchar विकल्प बदलकर मक्खी पर इसे बदलने के लिए अनुमति देता है। अपने .vimrc में इस तरह

1

कोशिश कुछ:

nnoremap Y Jxi*<Esc>

यह एक * साथ लाइनों में शामिल होने के वाई पुन: मैप करेंगे।

Jr, 

जा रहा है , में शामिल होने के चरित्र:

0

http://vim.wikia.com/wiki/Remap_join_to_merge_comment_lines से

पुट यह आपके .vimrc में:

function! JoinWithLeader(count, leaderText) 
    let l:linecount = a:count 
    " default number of lines to join is 2 
    if l:linecount < 2 
    let l:linecount = 2 
    endif 
    echo l:linecount . " lines joined" 
    " clear errmsg so we can determine if the search fails 
    let v:errmsg = '' 

    " save off the search register to restore it later because we will clobber 
    " it with a substitute command 
    let l:savsearch = @/ 

    while l:linecount > 1 
    " do a J for each line (no mappings) 
    normal! J 
    " remove the comment leader from the current cursor position 
    silent! execute 'substitute/\%#\s*\%('.a:leaderText.'\)\s*/ /' 
    " check v:errmsg for status of the substitute command 
    if v:errmsg=~'Pattern not found' 
     " just means the line wasn't a comment - do nothing 
    elseif v:errmsg!='' 
     echo "Problem with leader pattern for JoinWithLeader()!" 
    else 
     " a successful substitute will move the cursor to line beginning, 
     " so move it back 
     normal! `` 
    endif 
    let l:linecount = l:linecount - 1 
    endwhile 
    " restore the @/ register 
    let @/ = l:savsearch 
endfunction 

nnoremap <space> :<C-U>call JoinWithLeader(v:count, '"')<CR> 

यह भी आप कुछ और करने के लिए जम्मू पुन: मैप करने के लिए अनुमति देता है।

0

यह होगा तेज करता है, तो आप एक अल्पविराम से पंक्ति के अंत

:%s/$/, 

और फिर या तो एक सीमा प्रदान करके कई पंक्तियों में शामिल होने, या दृश्य मोड में लाइनों का चयन करके और का उपयोग करके की जगह (या चरित्र में शामिल होने) आदेश

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