2009-04-28 6 views
60

शीर्षक बहुत वर्णनात्मक है।मैं दृश्य मोड में टेक्स्ट ब्लॉक को विम में फ़ाइल में कैसे सहेज सकता हूं?

START BLOCK1 
something 
END BLOCK1 

START BLOCK2 
something 
somenthing... 
END BLOCK2 
  1. y
  2. मैं कैसे कुछ अन्य को yanked BLOCK1 बचा सकता है मैं दृश्य मोड में BLOCK1 चयन
  3. मैं इसे झटका दबाकर: बस के मामले में, मैं एक उदाहरण देना होगा फाइल?

उत्तर

117

दृश्य पाठ आप सहेजना चाहते हैं, या तो लाइन में चयन करें या दृश्य मोड को ब्लॉक, और

:w new.txt 

है यही कारण है कि आप जो भी लिखते हैं, लेकिन आप नहीं वास्तव में देखेंगे कि वास्तव में क्या ऊपर है। जब आप : दबाते हैं, तो आप कमांड लाइन पर जाएंगे जो स्वचालित रूप से चयन जानकारी के साथ भर जाएगा। यह कुछ इस तरह दिखाई देंगे:

:'<,'> 

बस

:'<,'>w new.txt 

प्राप्त करने के लिए बाकी (w new.txt) टाइपिंग पर ले जाने के ... और प्रेस दर्ज करें।

+10

यह अपेक्षित परिणाम प्रदान नहीं करता है क्योंकि यह केवल लाइनों के अंदर चयन शुरू करने और अंत स्थिति को अनदेखा करते हुए पूर्ण लाइनों को लिखता है। इसके लिए कोई समाधान? अन्यथा मैं मुख्य प्रश्न फिर से दर्ज करना चाहता हूं। – dronus

+1

@ डोनसस - मैं समझ नहीं पा रहा हूं कि आप क्या पूछ रहे हैं। इस सवाल को समझने के लिए ओपी ने यही पूछा। – Rook

+3

यदि आप किसी भी गैर-लाइन दृश्य मोड में चयन करते हैं, तो 'w' अभी भी चयनित सीमा से छूने वाली पूर्ण लाइनों को लिखता है, लेकिन रेखाओं के अंदर शुरू या समाप्त होने वाली सटीक सीमा नहीं है। उदाहरण के लिए, यदि आप ब्लॉक चयन मोड में एक संकीर्ण कॉलम का चयन करते हैं, या दृश्य चयन मोड में एक पंक्ति का एक हिस्सा चुनते हैं, तो पूर्ण पंक्ति ': w' द्वारा लिखी जाएगी, भले ही' y 'लाइन के सही हिस्सों की प्रतिलिपि बनाये । – dronus

4

शायद यह करने के लिए एक सरल तरीका है, लेकिन मैं क्या होगा एक नया बफर (या टैब) बना सकते हैं और फिर इसे में पेस्ट p के साथ है। आप :new या :tabnew के साथ एक नया टैब के साथ एक नया बफर बना सकते हैं। आप :w filename के साथ सामान्य रूप से फ़ाइल में बफर/टैब लिख सकते हैं।

+1

शीर्ष पर अतिरिक्त लाइन को हटाने के लिए सुनिश्चित करें !! (एक खाली बफर में चिपकाना शीर्ष पर एक अतिरिक्त रेखा बनाता है, या नीचे 'पी' का उपयोग करते हुए।) –

16

ब्लॉक के साथ, आप :'<,'>w other-file कर सकते हैं, जो केवल चयनित ब्लॉक को other-file पर लिख देगा। दृश्य मोड में : को मारना '<,'> आपके लिए पहले से कमांड लाइन में होना चाहिए, इसलिए आपको वास्तव में केवल :w other-file टाइप करना होगा।

+1

विम हमेशा बाहरी कमांड पर पाइपिंग के लिए पूरी लाइन का चयन करता है, ताकि आप यूनिक्स/साइगविन 'कट' कमांड का उपयोग कर सकें चयन में प्रत्येक पंक्ति के कॉलम एन से एम के आयत का चयन करने के लिए: '<,'> डब्ल्यू! कट-सीएन-एम> new.txt'। आश्चर्यचकित है कि उच्चतम मतदान वाले उत्तर और पाठक इस प्रश्न को समझने लगते नहीं हैं। – mosh

2

जैसा टिप्पणी में उल्लेख किया @dronus, :w !pbcopy सुझाव सही ढंग से नकल नहीं करता क्योंकि यह प्रतियां पूरे लाइन। अगर मैं केवल एक लाइन में यूआरएल कॉपी करना चाहता हूं, तो मैं नहीं कर पाऊंगा। यहाँ एक लाइन है कि आप अपने .vimrc फ़ाइल ताकि हर आप CTRL-C हिट करने के लिए जोड़ सकते हैं, अपने vim में चयनित लाइन क्लिपबोर्ड में कॉपी किया जाएगा:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR> 

तुम क्या इस बारे में विवरण पढ़ने करना चाहते हैं तो है, तो आप @rmeador क्या सुझाव के रूप में ही कार्यान्वयन पर my blog

इसका इस बारे में पढ़ सकते हैं।

1

@ songz के समाधान की तरह, मैं इस का उपयोग कर की तरह यह करना पसंद करते हैं ": नई '

vmap <C-c> y:new ~/.vimbuf<CR>VGp:x<CR>:!pbcopy < ~/.vimbuf<CR><CR> 
+0

पीबीसीपी, मेरे ज्ञान के लिए, केवल ओएसएक्स पर मौजूद है। लिनक्स और अन्य प्रणालियों पर समान कार्यक्रम हैं लेकिन वे अलग-अलग नामों से जाते हैं और अलग-अलग काम करते हैं। –

+0

हाँ, यह केवल तभी काम करता है जब पीबीसीपी निष्पादन योग्य :) तो कोई नुकसान नहीं – chenkaie

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

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