2013-11-24 8 views
8

मैं कुछ अलग-अलग डेटा स्रोतों से कुछ कट और पेस्ट कर रहा हूं। मैं एकाधिक लाइन कोड में एकाधिक लाइनों में कोड डालने की कोशिश कर रहा हूं ताकि चिपकाए गए कोड की पहली पंक्ति मूल कोड के दो विशिष्ट बिंदुओं के बीच और दूसरे के लिए समान हो। यह कोड की विभाजित एकाधिक पंक्तियों के बीच कोड के सम्मिलित ब्लॉक की तरह कुछ है। चित्र के नीचे .gif दिखाने मैं क्या मतलब है:एकाधिक लाइन कोड में एकाधिक लाइनों में कोड कैसे सम्मिलित करें?

enter image description here

मैं ऐसा कैसे कर सकता है? मैं वीआईएम CTRL + V के साथ कोशिश कर रहा हूं लेकिन मैं बहु लाइन कोड पेस्ट नहीं कर सकता।

VIOLET=SpectralBand([0.380,0.450],'violet') 
BLUE= SpectralBand([0.450,0.495],'b') 
GREEN= SpectralBand([0.495,0.570],'g') 
YELLOW=SpectralBand([0.570,0.590],'y') 
ORANGE=SpectralBand([0.590,0.620],'orange') 
RED= SpectralBand([0.620,0.750],'r') 

"viol3et", 45839, 
"bl3ue" , 43903, 
"gre3en" , 28392, 
"y3ellow", 23049, 
"o3range", 12389, 
"r3ed" , 32840, 
+0

शायद एकाधिक कर्सर पर एक नज़र डालें, जो आपको कार्य के लिए अपने स्वयं के कस्टम फ़ंक्शन लिखने के बारे में कुछ विचार दे सकता है: https://github.com/magnars/multiple-cursors।एल – lawlist

उत्तर

2

आपको कर्सर के साथ ऊपरी बाएं कोने का चयन करना चाहिए, नियंत्रण + वी टाइप करें, फिर अंतिम पंक्ति पर जाएं, और सभी पंक्तियों के अंत को पाने के लिए $ टाइप करें (यह अन्य उत्तरों में याद किया गया था)। फिर आप डी के साथ हटाते हैं, गंतव्य पर जाते हैं, और पी का उपयोग करते हैं।

आप सटीक नमूने के लिए, vim में समाधान है:

G0<c-v>{j$dggf(p 

के रूप में विघटित:

G  go to last line of file 
0  go to its first character 
<c-V> to start a blockwise selection 
{  go to previous empty line 
j  go to next line (hence the beginning of block) 
$  extend the blockwise selection to end of ALL lines (that was my point) 
d  delete and store the block 
gg go to first line of file 
f( go to next character '(' if on same line. 
p  to paste the block after the column of current character. 

$ के लिए एक वैकल्पिक

:set virtualedit=all 

सक्षम करने के लिए है और वह क्या करेंगे नौकरी अगर आप कर्सर को गंतव्य पर नहीं डाल सकते (जब इसकी रेखा के अंत से परे)।

+0

धन्यवाद क्या आप G0 {j $ hdggf (पी मैं वीआईएम में नौसिखिया हूं। यह एक बहुत अच्छा जवाब लगता है .. –

+0

आपको कमांड का प्रयास करना चाहिए: vimtutor अगर आपके पास वीआईएम पर निवेश करने के लिए एक घंटा है। – user2987828

+0

+ 1 बहुत बहुत धन्यवाद! (पीएस मैंने इसे दो बार बनाया है मुझे इसे एक और बार कोशिश करनी चाहिए।) –

3

यह मेरे Ctrl + V प्रयोग करने के लिए काम करता है,, तीर या आंदोलन पत्र (h, j, k और l) के साथ पूरे ब्लॉक का चयन तो यह कटौती:

यहाँ नमूना है साथ , पहली पंक्ति के पहले कोष्ठकों के बाद कर्सर डाल दिया और पी

+1

क्या आप निश्चित हैं, जब मैं नीचे जाता हूं तो वह अगली पंक्ति का चयन करता है और जब मैं पेस्ट करता हूं तो वह सभी को एक ही पंक्ति पर रखता है ... – Johan

+1

@Johan: Sure। मैंने इसका परीक्षण किया था। मेरा संस्करण: लिनक्स में 'वीआईएम - वीआई सुधारित 7.4'। – Birei

+0

@Johan मेरे लिए यह काम करता है, कैसे कहते हैं कि पहले से CTRL + V 'viol3et'block' के साथ चयन करना सुनिश्चित करें और फिर उसे कॉपी करें और इसे सम्मिलित करने के लिए CTRL + V का उपयोग न करें ... धन्यवाद Birei! –

4

का उपयोग आपउपयोग कर सकते हैं आपके द्वारा वर्णित व्यवहार को प्राप्त करने के लिए(सी-एक्स आर एम-डब्ल्यू) और yank-rectangle (सी-एक्स आर वाई)।

विवरण के लिए Emacs मैनुअल में Rectangles अनुभाग देखें।

4

कैसे विम पेस्ट के दौरान व्यवहार करता है यांक के दौरान चयन के प्रकार द्वारा निर्धारित किया जाता है। Ctrl +वी (या क्यू कई विंडोज प्रतिष्ठानों पर): blockwise दृश्य मोड में viol3et ब्लॉक का चयन करना सुनिश्चित करें।

वैकल्पिक रूप से, तुम मेरे UnconditionalPaste plugin सिर्फ झटका/पूरे लाइनों को हटाने के लिए (जैसे 6ddviol3et लाइन पर है, जबकि) का उपयोग कर सकते हैं, और फिर (लक्ष्य लाइनों के बीच) पेस्ट gbp साथ।

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