2011-10-18 8 views
12

में ब्रांड्स के बाहर से ब्रांड्स के अंदर पाठ का चयन करना मुझे पता है कि मैं vi' या vi" जारी करके कोट्स/डबलक्वॉट्स के अंदर टेक्स्ट का चयन कर सकता हूं। उदाहरण के लिए, H पर कर्सर के साथ, मैं Worldvi"विम

Hello "World" 

जारी करके चयन कर सकते हैं लेकिन यह अगर मैं

Hello (World) 

था मेरी कर्सर H पर है, तो काम करने के लिए प्रतीत नहीं होता और मैं चयन करने के लिए कोशिश Worldvi) का उपयोग कर, यह काम नहीं करता है। ऐसा करने का एकमात्र तरीका यह है कि वास्तव में अपने कर्सर को कोष्ठक के अंदर ले जाएं और vi) जारी करें। क्यों अंदर पाठ का चयन करता है) और "इस तरह से भिन्न हैं?

+0

मुझे यकीन है कि इस प्रश्न का उत्तर पहले दिया गया है, लेकिन मुझे यह नहीं मिल रहा है! –

उत्तर

25

{a, i} {× (, ), b} पाठ वस्तु आदेशों और उनके ", ', ` समकक्षों मुख्य रूप से अलग से परिणाम के बीच अंतर की परिभाषा एक ब्लॉक और एक उद्धृत स्ट्रिंग (:help v_ab देखते हैं, :help v_aquote)।

यद्यपि द्वितीय पिछले बोली characte से पाठ है वर्तमान लाइन पर उसी पंक्ति पर अगली तक (एक तरफ से बच निकले) तक, पूर्व एनएच पिछले पिछले बेजोड़ उद्घाटन कोष्ठक और मिलान बंद करने के बीच का पाठ है। सीधे शब्दों में कहें, कमांड va( (बिना किसी गिनती के) [(v% है- अगर कर्सर से पहले कोई बेजोड़ ब्रांडेसिस नहीं है, तो दोनों कुछ भी चुनें। हालांकि, va" कमांड किसी भी तरह के उद्धरण जोड़ी को खोजने के लिए वर्तमान पंक्ति स्कैन करता है।

व्यवहार में इस अंतर के लिए मुख्य कारण है, मुझे लगता है कि उद्धृत तार, कोष्टक के विपरीत, गैर नेस्टेड माना जाता है (कम से कम में परिप्रेक्ष्य में निर्मित विम पाठ वस्तुओं) है।

वर्तमान लाइन पर अगले कोष्टक में पाठ का चयन करने के लिए, एक

%vi(

या

%va(

चयन में कोष्ठक शामिल करने के लिए उपयोग कर सकते हैं।

+0

+1, यह सुंदर है, धन्यवाद। – romainl

+0

दुर्भाग्य से यह समाधान केवल ब्रांड्स के लिए काम करता है और किसी अन्य प्रकार का ब्रैकेट नहीं। –

+3

@ डैनियल: क्रमशः वर्ग, घुंघराले, कोणीय ब्रेसिज़ इत्यादि के लिए '% vi [', '% vi {', '% vi <', आदि का उपयोग करें। –

1

This comment on Hacker News अंक को हल करने वाली एक स्क्रिप्ट को इंगित करता है।

अनचाहे लेकिन स्टीव लोश द्वारा यह अच्छा हो सकता है।