अलग-अलग लाइनों पर ग्रंथों की विभिन्न लंबाई का चयन कैसे करें?


10

मान लें कि मेरे पास निम्नलिखित पाठ हैं:

आआ-दद-ए: "आआ",
बब-एक्स: "बब",
सी -9: "सी"

मैं नीचे की तरह चयन करना चाहता हूं:

aaa-dd-e:"आ",
bb-x:"बी बी",
c-9:"सी"

मैंने विजुअल ब्लॉक बनाने के लिए cv का उपयोग करने की कोशिश की, लेकिन मैं पहले कॉलम पर चयन करने के बाद और मैं "f:" दबाता हूं (मेरा मतलब ऊपर की तरह हर लाइन पर कोलन मार्क के लिए चयन का विस्तार करना है), जो मुझे मिलता है वह है:

aaa-dd-e: "aaa"
bb-x,: "bb",
c-9:"c"

चयन पहले बृहदान्त्र पर रुक जाता है और एक आयत बनाता है।


6
आप उस चयन के साथ क्या हासिल करना चाहते हैं, एक और तरीका हो सकता है
अरजेन दीजकस्ट्रा

यदि यह वर्ण द्वारा अलग हो गया है, तो आप पहले ब्लॉक को फिर से संरेखित करने और फिर उसका चयन करने का प्रयास कर सकते हैं। देखें: VIM में पहले विभाजक पर केवल पाठ संरेखित करें
kenorb

जवाबों:


6

चयन आम तौर पर एक अंत का मतलब है, विम में अधिक जहां चयन अक्सर पहली जगह में आवश्यक नहीं है।

यह मानते हुए कि आप अभी भी अपनी गैर-JSON फ़ाइल में संपत्ति के नामों के आसपास उद्धरण देना चाहते हैं, इसे उचित JSON में बदल दें:

  1. संशोधित करने के लिए लाइनों का चयन करें, चरित्र-वार या लाइन-वार, इससे कोई फर्क नहीं पड़ता,
  2. :'<,'>norm I"^[f:i"( '<,'>स्वचालित रूप से आपके लिए डाला जाता है और ^[इसके साथ प्राप्त किया जाता है <C-v><Esc>)।

यदि आपके पास सुंदर सराउंड प्लगइन है, तो चरण 2 बन जाता है:

:'<,'>norm ^vt:S"

एक प्रतिस्थापन के साथ, चरण 2 बन सकता है:

:'<,'>s/^\s*\([^:]*\):/"\1"

तुम लोग सही कह रहे हो, मुझे अब वह दृश्य चयन संभवतः अनावश्यक लगा। मदद से या :g/regex/norm, मैं बस जो कुछ भी करना चाहता हूं उसे प्राप्त कर सकता हूं।
एरॉन शेन

क्या कोई तरीका है कि मैं पूरे चयनित ब्लॉक को सिस्टम क्लिपबोर्ड पर रख सकता हूं और दूसरी फाइल में पेस्ट कर सकता हूं?
एरोन शेन

बेशक। मान लें कि आपका विम क्लिपबोर्ड समर्थन के साथ संकलित है जो आप कर सकते हैं "+yया "*y, जिसके आधार पर आप क्लिपबोर्ड को लक्षित करना चाहते हैं। यहाँ आसपास कई संबंधित प्रश्न हैं।
रोमेनल

14

विम केवल आयताकार ब्लॉकवाइज़ चयनों का समर्थन करता है, जब आप दबाते हैं दांतेदार सीमा के अपवाद के साथ $

ऐसे प्लगइन्स हैं (जैसे कई शाप देने वाले ), जो कई चयनों का अनुकरण कर सकते हैं, लेकिन आपको अपने वास्तविक लक्ष्य को प्राप्त करने में सक्षम होना चाहिए (जो कि आपने दुर्भाग्य से उल्लेख नहीं किया था) उदाहरण के लिए, शुद्ध विम आदेशों के साथ ( :globalऔर :substituteयदि आप एक नियमित रूप से तैयार कर सकते हैं) अभिव्यक्ति जो प्रत्येक पंक्ति में चयन से मेल खाती है), या मैक्रोज़ को दोहराते हुए (यदि कोई विशेष गति है जो प्रत्येक पंक्ति में चयन को कवर करती है)।


क्या होगा अगर मैं उन लाइनों को काटकर किसी अन्य बफर में पेस्ट करना चाहता हूं?
हारून शेन

1

बस एक और टोपी को अंगूठी में फेंकने के लिए, यदि आप वास्तव में दृश्य चयन का उपयोग करना चाहते हैं तो आप कॉलन को लाइन अप करने के लिए टेबुलर प्लगइन का उपयोग कर सकते हैं , फिर अपना दृश्य चयन करें।

यदि आप अपना मूल पाठ लेते हैं:

aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"

:Tab /:\zs नीचे के रूप में बृहदान्त्र के बाद सब कुछ संरेखित करेगा

aaa-dd-e:  "aaa",
bb-x:      "bb",
c-9:       "c"

और फिर आप अपने दृश्य ब्लॉक का चयन कर सकते हैं।

जैसा कि दूसरों ने कहा है, हालांकि, इस स्थिति में दृश्य चयन आवश्यक नहीं है। normदृश्य चयन के साथ उपद्रव के बिना आप जो चाहते हैं उसका उपयोग या प्रतिस्थापन शायद पूरा कर सकते हैं।


1

मुझे इस मुद्दे का हल मिल गया है जो आश्चर्यजनक रूप से सरल है! जिस पाठ को आप कॉपी करना चाहते हैं उसके चयन के नीचे से दृश्य ब्लॉक मोड शुरू करें और ऊपर की तरफ चुनें! जैसे ही आप ऊपर जाते हैं, यह ब्लॉक का विस्तार करेगा, जबकि यदि आप नीचे की ओर हाइलाइट करते हैं, तो यह चयन को छोटा बनाने के लिए प्रकट होता है।


लेकिन इस तरह यह हमेशा एक आयताकार ब्लॉक होगा, है ना? जैसा कि मैंने इसे पढ़ा, यह वही नहीं है जो ओपी चाहता है (वे उल्लेख करते हैं कि उन्होंने दृश्य ब्लॉक मोड की कोशिश की)।
मार्टिन टूरनोइज

नहीं। यह हमेशा एक आयताकार ब्लॉक होगा यदि सभी लाइनें समान लंबाई की हों। मैंने पाया है कि नीचे से शुरू करना और ऊपर की तरफ हाइलाइट करना और फिर लाइन के अंत में जाने के लिए $ को दबाना परिणामी सभी लाइनों को लाइन के अंत में हाइलाइट करेगा।
आर्थर बोवर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.