2011-11-09 14 views
38

के साथ कोष्ठक में संलग्न करना क्या विम में कोष्ठक (या घुंघराले ब्रैकेट) में कुछ पाठ संलग्न करने का कोई तरीका है?विम

दूसरे शब्दों में, आप यह कैसे करेंगे?

प्रारंभिक स्ट्रिंग:

It is sunny outside. 

अंतिम स्ट्रिंग:

It is (sunny) outside. 

एक अजीब टिप्पणी पर, मैं सिर्फ :w मारा इस सवाल प्रस्तुत करने के लिए।

मुबारक vim-ing, SOCommunity!

+0

ऐसा लगता है कि एक मैक्रो आसानी से काम पूरा कर सकता है, लेकिन मुझे विशेष रूप से एक निर्धारित करने की हिम्मत नहीं है - मैं अभी भी वीआईएम में बहुत हरा हूं। लेकिन 'शब्द की शुरुआत करने के लिए कदम, बाएं माता-पिता डालें, शब्द के अंत में आगे बढ़ें, सही माता-पिता को एक मैक्रो की तरह लगता है जो ज्यादातर मामलों में काम करेगा ... – Triptych

+0

@Triptych - जिस तरह से आपने सुझाव दिया है, ठीक है एक मैक्रो के बजाय मैपिंग। मेरा जवाब देखें – Rook

उत्तर

27

Surround.vim चाल करना चाहिए। यदि आप इसे '।' से दोहराना चाहते हैं, तो here देखें।

3

:s// (search and replace) का उपयोग क्यों नहीं करें?

उदाहरण के लिए:

:s/sunny/\(sunny\)/ 

आप शायद मन में कुछ और ही है, लेकिन मैं अपने प्रश्न यह है कि क्या से नहीं बता सकता।

+2

क्योंकि आप पहले से लिखे गए शब्द को दो बार टाइप करना समाप्त करते हैं, जब आप जो चाहते हैं उसे चुनना और चारों ओर कोष्ठक रखना है। – Titou

6

आपको लगता है कि sort'a बात के लिए एक सरल मानचित्रण परिभाषित कर सकते हैं। यह करना चाहिए। जबकि सामान्य मोड में जेड कोष्ठक में एक शब्द को घेरने के लिए टाइप करें। एक 5 पत्र शब्द फिर एक रिक्ति, समूहों मैच के लिए

:%s~\v(\w{5}) ~(\1) ~g 

ऊपर खोजों का उपयोग:

:nnoremap <leader>z viw<esc>a)<esc>hbi(<esc>lel 
+0

बहुत बढ़िया। सरल प्रेस 2 बटन "नेता + जेड"। यह मेरा पसंदीदा उत्तर –

+0

दृश्य मोड में क्यों गुजर रहा है? सरल चाल यह बनाने के लिए 'लगते हैं: nnoremap (द्वि ( एली) ' या मैं कुछ याद आती है Btw बहुत अच्छा जवाब – Titou

0

कुछ इस तरह के लिए यह शायद की तुलना में बाहरी प्लगइन्स रोजगार की सीमाओं तथा समूहों के साथ खेलने के लिए बेहतर है(), और समूहीकृत समूह के आस-पास के आसपास के कोष्ठक के साथ इसे प्रतिस्थापित करता है।

42

एक शब्द के लिए, मैं उपयोग कर रहे हैं:

bcw()<Esc>P 

है, शब्द के आरंभ में जाना, शब्द में कटौती करने और डालने मोड में जाने, कोष्ठक और फिर बाहर निकल डालने मोड टाइप करें और शब्द को वापस पेस्ट करें।

ध्यान रखें कि यह आपके यंक रजिस्टर को ओवरराइट करेगा।

आप, ज़ाहिर है, जो कुछ भी आंदोलन और चयन प्रकार आप की जरूरत के साथ bcw जगह ले सकता है की तरह

5cc{<Enter>}<Esc>P 
+12

मुझे इससे नफरत है जब मेरे yanks अधिलेखित हो – d1str0

+0

कोई प्लगइन की जरूरत महान था?।।।। ईमानदारी से, surround.vim के साथ आपको कुंजियों की एक ही संख्या के बारे में प्रेस करना होगा, इसलिए प्लगइन का उपयोग क्यों करें? – hamid

+0

विम की ताकत इसकी कर्सर-नियंत्रण भाषा है! धन्यवाद! इसे एक स्क्रिप्ट में रिकॉर्ड करना और इसे मैक्रो बनाना आसान है। qbcw() Pq' फिर '@ q' शब्दों को तेज़ी से दोबारा करने के लिए। –

0

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

मान लीजिए कि आपके पास वीम की नौसिखिया स्तर की समझ है, मान लें कि मेरे पास एक रेखा है (सादगी के लिए) कि मैं स्क्वायर ब्रैकेट से घिरा होना चाहता हूं। जैसे

hello world

सामान्य मोड में जाएं। रिकॉर्डिंग शुरू करने के लिए q1। अब निम्नलिखित

ESC ^i[ ESC $a] ESC

यह वर्तमान लाइन parenthesized छोड़ देंगे है। अब आप इसे दोहराने के लिए किसी भी लाइन का चयन कर सकते हैं और @1 दबा सकते हैं।

उदाहरण के लिए यदि आप चाहते हैं, तो वर्तमान शब्द तो बस रिकॉर्ड और निम्नलिखित नुस्खा प्लेबैक paranthesised जा करने के लिए:

ESC bi[ ESC ea] ESC

आप बिल्कुल कीस्ट्रोक्स के लिए अनुकूलन करने के लिए कोशिश कर सकते हैं, लेकिन यह अब के लिए मेरे लिए कार्य करता है।

16

यहां उदाहरण हैं surround.vim का उपयोग कर उदाहरण। vim सामान्य मोड पर, इच्छित शब्द (इस मामले में धूप) और प्रकार पर अपना कर्सर रखें:

प्रारंभिक स्ट्रिंग:

It is sunny outside. 

ysiw 

फिर )

तो टाइप करें

अंतिम स्ट्रिंग:

It is (sunny) outside. 

अतिरिक्त अंतरिक्ष: ysiw( की तरह उपयोग उद्घाटन कोष्ठक, या कोष्ठक, कोष्ठक और कोष्ठक के बीच एक स्थान के साथ चारों ओर हैं और शब्द के + अंत) दृश्य मोड में

आसान शुरू दबाकर दृश्य मोड में प्रवेश करने v। अब यदि आप S( टाइप करते हैं, तो शब्द रिक्त स्थान से घिरा होगा। हालांकि यदि आप को S) के बजाय बंद करने का उपयोग करते हैं तो यह रिक्त स्थान से घिरा नहीं होगा।

यह सभी ब्रैकेट जोड़ी परिवेश, <> [] {}() पर लागू होता है, न केवल () पर। S< का व्यवहार ऐसा है कि यह एक टैग संलग्नक की अपेक्षा करता है, इसलिए केवल S><> के आसपास घूमने में सक्षम है।

अधिक:

प्रकार ysiw} के बाद curlies

रूप में अच्छी तरह यहाँ कुछ और उदाहरण जोड़ने सकता है के लिए भी ऐसा ही करने के लिए:

  • प्रकार के cs(' [सी] परिवर्तित करें [ओं] के आसपास से (

  • cs'( करने के लिए 'परिवेश से बदलने के लिए()

  • [घ] हटाएं ( [एस] urroundings पूरी तरह

इससे भी अधिक करने के लिए ds(.:

और क्यों Tpope के के बाकी बोली नहीं हमें लिंक पर क्लिक करने से बचाने के लिए पेज?

// बोली शुरू:

यह उदाहरण के साथ व्याख्या करने के लिए सबसे आसान है।

प्रेस cs"' अंदर

"नमस्ते दुनिया!" इसे

'हैलो वर्ल्ड!' में बदलने के लिए

-

अब प्रेस cs'<q> दुनिया नमस्ते

लिए इसे बदलने के लिए!

-

चक्र पूरा जाने के लिए, प्रेस cst"

"नमस्ते दुनिया!" पाने के लिए

-

सीमांकक पूरी तरह ds".

हैलो वर्ल्ड निकालने के लिए, प्रेस!

-

अब पर कर्सर के साथ "हैलो", प्रेस ysiw] (iw एक पाठ वस्तु है)।

[हैलो] दुनिया!आइए उन ब्रेसिज़ बनाएं और {स्पेस के लिए {का उपयोग करें) cs]{

{हैलो} दुनिया!

-

अब yssb या yss) साथ कोष्ठक में पूरी लाइन लपेट दें।

({} नमस्ते दुनिया!)

-

रिवर्ट मूल पाठ करने के लिए: ds{ds)

नमस्ते दुनिया!

-

हैलो पर बल देना चाहिए: ysiw<em>

हैलो दुनिया!

-

अंत में, का दृश्य मोड बाहर की कोशिश करते हैं। एक राजधानी V (लाइनवायर दृश्य मोड के लिए) के बाद S<p class="important"> दबाएं।

<p class="important"> 
    <em>Hello</em> world! 
</p> 

इस प्लगइन HTML और XML संपादन, एक आला जो वर्तमान में विम देश में underfilled लगता है के लिए बहुत शक्तिशाली है। (एचटीएमएल/एक्सएमएल डालने के विरोध में, जिसके लिए कई प्लगइन उपलब्ध हैं)। एक साथ टैग के जोड़े जोड़ना, बदलना और निकालना एक हवा है।

. आदेश अगर आप repeat.vim स्थापित ds, cs, और yss साथ काम करेंगे।