विम में कोष्ठक (या उद्धरण या…) के बीच चयन कैसे करें?


220

मुझे यकीन है कि इस थोड़े सामान के लिए एक प्लगइन हुआ करता था, लेकिन अब जब मुझे इसकी आवश्यकता है, तो मैं इसे (स्वाभाविक रूप से) नहीं ढूंढ सकता हूं, इसलिए मैं सिर्फ अच्छा और सरल पूछूंगा।

कोष्ठक, या उद्धरण, या आम तौर पर मिलान पात्रों की सूची के बीच चयन करने का सबसे आसान तरीका क्या है?

   write ( *, '(a)' ) 'Computed solution coefficients:'

उदाहरण के लिए, यहां मैं चयन करना चाहूंगा (a), या Computed solution coefficients:

मुझे मल्टीलाइन में दिलचस्पी नहीं है, सिर्फ एक लाइन पर होने वाले मामले।

जवाबों:


277

कोष्ठक के अंदर आप जो भी नेविगेशन कुंजी प्राप्त करना चाहते हैं उसका उपयोग करें, फिर आप मिलान पार्न के भीतर yi(या तो yi)सब कुछ कॉपी करने के लिए उपयोग कर सकते हैं । यह वर्ग कोष्ठक (जैसे yi]) और घुंघराले ब्रेस के साथ भी काम करता है । इसके अलावा y, आप टेक्स्ट (जैसे ci), di]) को हटा या बदल भी सकते हैं ।

मैंने दोहरे और एकल-उद्धरणों के साथ यह कोशिश की और यह वहां भी काम करता है। आपके डेटा के लिए, मैं करता हूं:

write (*, '(a)') 'Computed solution coefficients:'

कर्सर को इस पर ले जाएं C, फिर टाइप करें yi'। कर्सर को एक रिक्त रेखा पर ले जाएं, हिट करें p, और प्राप्त करें

Computed solution coefficients:

के रूप में सीएमएस का उल्लेख किया है, साथ ही दृश्य मोड चयन के लिए इस काम करता है - बस उपयोग vi), vi}, vi', आदि


1
मैं आमतौर पर पूर्वनिर्धारित मिलान वर्णों (सामान्य रूप से केवल एकल और दोहरे उद्धरण और सभी प्रकार के ब्रैकेट) के बीच सब कुछ का चयन करने का एक तरीका ढूंढ रहा हूं।
रूक

2
अलग शब्दों से आपका क्या मतलब है? मैंने इसे "[x, y, z]" पर आज़माया और इसने "x, y, z" को बाहर निकाल दिया
टिम व्हिटकोम्ब

4
अंतिम टिप्पणी की उपेक्षा - क्या समस्या थी पाया। एक आकर्षण की तरह काम करता है :-)
रूक

यह उद्धरण के साथ काम करने लगता है और साथ ही yi"सभी उद्धरणों का चयन करें
stefanB

ci(या ci)यह मैं क्या देख रहा था के लिए करता है। धन्यवाद। मुझे अभी भी iउस मामले में पूरी तरह से समझ नहीं है , लेकिन जब तक यह काम करता है, तब तक कौन परवाह करता है? :)
जस्टनरिस

279

एकल उद्धरणों के बीच चयन करने के लिए मैं आमतौर पर एक vi' ("आंतरिक एकल उद्धरण चुनें") करता हूं ।

कोष्ठक ब्लॉक के अंदर, मैं उपयोग करता हूं vib ("इनर ब्लॉक चुनें")

एक घुंघराले ब्रेसिज़ ब्लॉक के अंदर आप उपयोग कर सकते हैं viB("कैपिटल बी")

चयन "समावेशी" बनाने के लिए आप उपयोग कर सकते हैं (यह भी उद्धरण, कोष्ठक या ब्रेसिज़ चुनें) aके बजाय i

आप मैन्युअल पर या विम के भीतर पाठ ऑब्जेक्ट चयन के बारे में अधिक पढ़ सकते हैं :help text-objects


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

यह टिप मेरे मस्तिष्क और मांसपेशियों की स्मृति के अंदर करने के लिए बहुत सरल और आसान है। धन्यवाद।
ग़ज़ल

यह एक अत्यधिक उपयोगी टिप है। अतिरिक्त कीस्ट्रोक्स के साथ और अधिक फंबलिंग नहीं। लिंक के लिए आपको धन्यवाद।
राय

27

चयन की यह विधि अंतर्निहित है और अच्छी तरह से विम मदद में शामिल है। इसमें XML टैग और बहुत कुछ शामिल है।

देख लो :help text-objects


1
: टेक्स्ट-ऑब्जेक्ट उपयोगी सामान के करीब पहुंच जाते हैं ... आप कम से कम कुछ का उल्लेख कर सकते हैं, जैसे "और ए (जब दृश्य मोड में।
स्टोबोर

2
(इसके अलावा, +1 क्योंकि लंबे समय तक vim उपयोगकर्ता होने के बावजूद, मुझे इनके बारे में पता नहीं था!)
Stobor

@ स्टोबोर। चीयर्स ने वह संदर्भ तय किया
माइकल

21

एकल उद्धरण के भीतर चयन के लिए उपयोग करें vi'

कोष्ठक उपयोग के भीतर चयन के लिए vi(


3
नोट: ci'या ci(नेत्रहीन चयन के बजाय बदलने के लिए। लेकिन यह वही करता है जो मैं चाहता था। धन्यवाद :)
justnorris

दूसरा केवल तभी काम करता है जब वह () ब्लॉक करता है, इसलिए आमतौर पर मैं करता हूं %vi(या%vib
816-8055

7

तीर का उपयोग करें या hjklब्रैकेटिंग अभिव्यक्तियों में से एक को प्राप्त करने के लिए, फिर vदृश्य (यानी चयन) मोड का चयन %करने के लिए , फिर दूसरे ब्रैकेट में जाने के लिए।


5
(उद्धरण नहीं, दुर्भाग्य से, हालांकि ...)
स्टोबोर

3

searchpairअंतर्निहित फ़ंक्शन का उपयोग करके .vimrc में एक विम फ़ंक्शन लिखें :

searchpair({start}, {middle}, {end} [, {flags} [, {skip}
            [, {stopline} [, {timeout}]]]])
    Search for the match of a nested start-end pair.  This can be
    used to find the "endif" that matches an "if", while other
    if/endif pairs in between are ignored.
    [...]

( http://vimdoc.sourceforge.net/htmldoc/eval.html )


2

मैं सबसे अधिक मतदान वाले उत्तर में एक विवरण जोड़ूंगा:

यदि आप gvim का उपयोग कर रहे हैं और क्लिपबोर्ड पर कॉपी करना चाहते हैं, तो उपयोग करें

"+<command>

कोष्ठक (या परेंस या घुंघराले कोष्ठक) के बीच की सभी सामग्री को कॉपी करने के लिए

उदाहरण के लिए: "+yi}क्‍लिपबोर्ड के बीच की सारी सामग्री को कॉपी करेंगे, जो आपके कर्सर के घुंघराले कोष्ठक के बीच की सभी सामग्री है।


2
यह समस्या के लिए पूरी तरह से रूढ़िवादी है और इसका जवाब नहीं होना चाहिए। आप इसे हर उस सवाल पर लिख सकते हैं जिसके बारे में पूछता है y
पाइप

यह उत्तर के अतिरिक्त है, स्वयं उत्तर नहीं है।
युरिप्लोक

फिर यह उस उत्तर के लिए एक संपादन होना चाहिए, जैसे कि यह पोस्ट प्रश्न का उत्तर नहीं देता है।
पाइप

यह gvim का उपयोग नहीं करने के लिए एक विज्ञापन है :) जिनके जीवन में अतिरिक्त दो शिफ्ट + कीज़ की आवश्यकता है?
पॉल पार्कर

1

मैंने एक प्लगइन बनाया है vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

यह किसी भी प्रकार के उद्धरणों के निकटतम जोड़े के लिए पाठ ऑब्जेक्ट प्रदान करता है। केवल iqया aqइसका उपयोग करने से आप एकल ('), डबल ("), या बैक (`) उद्धरणों को संचालित कर सकते हैं, जो वर्तमान में कर्सर को घेरे हुए हैं, कर्सर के सामने हैं, या पीछे (वरीयता क्रम में) । दूसरे शब्दों में, यह उद्धरणों तक पहुंचने के लिए आवश्यक होने पर आगे या पीछे कूदता है।

उदाहरणों को देखकर समझना आसान है (कर्सर को साथ दिखाया गया है |):

  1. पहले: foo '1, |2, 3' bar; दबाने के बादdiq:foo '|' bar
  2. पहले: foo| '1, 2, 3' bar; दबाने के बाद diq:foo '|' bar
  3. पहले: foo '1, 2, 3' |bar; दबाने के बाद diq:foo '|' bar
  4. पहले: foo '1, |2, 3' bar; दबाने के बाद daq:foo | bar
  5. पहले: foo| '1, 2, 3' bar; दबाने के बाद daq:foo | bar
  6. पहले: foo '1, 2, 3' |bar; दबाने के बाद daq:foo | bar

ऊपर दिए गए उदाहरण एकल उद्धरणों के लिए दिए गए हैं, प्लगइन बिल्कुल डबल (") और पीछे (`) उद्धरणों के लिए उसी तरह काम करता है।

: आप किसी भी अन्य ऑपरेटरों का उपयोग कर सकते ciq, diq, yiq, viq, आदि

कृपया अधिक जानकारी के लिए ऊपर दिए गए github पृष्ठ पर एक नज़र डालें।


-6

विम में एक साधारण कीमैप इस मुद्दे को हल करेगा। नक्शा viq F "lvf" hh यह उपरोक्त कमांड उद्धरणों के बीच खोज करने के लिए कुंजियों के लिए viq को मैप करता है। "किसी भी चरित्र के साथ बदलें और अपने कीमैप बनाएं। स्टार्टअप के दौरान इसे vimrc में चिपका दें और आपको इसे हर बार उपयोग करने में सक्षम होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.