2010-01-27 12 views
16

मैं सोच रहा था कि विम के साथ गुणक फ़ाइलों को खोलने का कोई तरीका है, लेकिन प्रत्येक फ़ाइल एक विशिष्ट पंक्ति संख्या पर है। मैं समझाता:विम: विभिन्न लाइनों पर खुली गुणक फ़ाइलें

मैं अक्सर सिंटैक्स का उपयोग करें: विम मेरी/रास्ता/भी/दूर/फ़ाइल 120 आदेश पंक्ति 120 पर इस फ़ाइल को संपादित करने के लिए क्योंकि जीसीसी मुझे भी बताया :)

मैं अब क्या ' मैं एक ही समय में गुणक फ़ाइलों के लिए ऐसा करने का एक तरीका ढूंढ रहा हूं!

बेशक

, vim file1 + xx करें 2 + xx ... काम नहीं करेगा (+ विकल्प केवल पहली फ़ाइल को प्रभावित ... मेरे मत पूछो क्यों)

तो अगर किसी को भी एक तरह से पता है इसे ठीक करो? मैं इसे मैनपेज में नहीं मिला था ...

वैसे, कभी कभी, file1 शायद करें 2 के रूप में एक ही फाइल ...

उत्तर

11

यहाँ एक तरीका है: vim +6 file1 +"sp +3 file2"। यदि आप टैब पसंद करते हैं तो sp से tabnew बदलें।

लेकिन यह केवल अगर किसी को इसके साथ एक स्क्रिप्ट बना सकता है वास्तव में उपयोगी होगा ...

+0

कि काम करता है! बढ़िया, अब मुझे यह समझना है कि फ़ाइल 1 +10 फ़ाइल 2 +14 ... vim +10 file1 + "tabnew +14 file2" + "tabnew + ... के लिए xargs का उपयोग कैसे करें। (हाँ मैं tabnew prefere :) अगर मैं इसे लिखने के लिए विश्वास प्राप्त करता हूं तो मैं अपनी cmd लाइन पोस्ट करूंगा;) thx! – claf

+0

वास्तव में, बुरी बात यह है कि यह समाधान 10 फ़ाइलों की तरह कुछ से अधिक की अनुमति नहीं देता है अधिकतम एक ही समय में मैं फ़ाइल नाम और रेखा प्राप्त करने के लिए कमांड का उपयोग कर रहा हूं और उन्हें xims का उपयोग करके उन्हें पास करने के लिए उपयोग कर रहा हूं। मैं जितनी चाहें उतनी फ़ाइल लॉन्च करने में सक्षम होना चाहता हूं, मैं निराश हूं कि vim एक ही समय में 10 से अधिक फ़ाइलों को खोलने के लिए संभाल नहीं सकता ... – claf

+0

शायद आप वीआईएम कमांड में 'फॉर' का उपयोग कर सकते हैं, जबकि फाइलनामों की एक सूची कर्सर की स्थिति के लिए दूसरा। – Pikrass

1

एक अन्य विकल्प utl की तरह एक स्क्रिप्ट का उपयोग किया जाएगा, स्वचालित रूप से एक फ़ाइल फ़ाइल/लाइन नंबर के लिए हाइपरलिंक से भरा बनाने आधारित जीसीसी के उत्पादन पर (यह sed के साथ छोटा होना चाहिए)।

एक लिंक UTL के साथ इस प्रारूप में होना होगा: <url:error.c#line=10>

संपादित करें: एक और अधिक उपयुक्त vim जोड़ने स्क्रिप्ट से जुड़ा हुआ।

+0

नील का सुझाव इसका एक बेहतर संस्करण है। –

3

विम आपके जीसीसी आउटपुट को पढ़ सकता है और एक क्विकफ़िक्स सूची बना सकता है जो आपको आसानी से नेविगेट करने की अनुमति देता है हालांकि आपके कोड में सभी त्रुटियां। आप vim -q का उपयोग कर मौजूदा त्रुटि फ़ाइल पढ़ सकते हैं या यदि आपकी प्रोजेक्ट मेकफ़ाइल का उपयोग करती है तो आप विम के भीतर से निष्पादित करने के लिए कमांड कमांड का उपयोग कर सकते हैं और इसके आउटपुट को कैप्चर कर सकते हैं।

5

मैं सिर्फ विचार के लिए https://gist.github.com/xim/6123691

धन्यवाद लिखा Pikrass को =)

संपादित करें:

claferri का कहना है कि आप '+ tabnew ...' सीमा का उपयोग कर 10 फ़ाइलों के रूप में। उपयोग करने के लिए गिस्ट अद्यतन - एस।

विम फ़ंक्शन एक स्ट्रिंग ($ स्क्रिप्ट) का निर्माण करेगा जिसमें एक विम स्क्रिप्ट है जो फ़ाइलों को, उचित लाइनों पर, टैब में खुलती है। एक उदाहरण का उपयोग करते हुए बताते हुए इस vim -S <script> -R file1 file2 file3 को vim -R file1:42 file2 file3:1337 बदलते द्वारा किया जाता है - एक vim स्क्रिप्ट से युक्त, इस मामले में:

tab all 
tablast 
1337 
tabprev 
tabprev 
42 

तो: हम फ़ाइलें खोल रहे हैं सामान्य रूप से है, तो स्क्रिप्ट पर कार्य: अंतिम टैब के जंपिंग, फिर पहली फ़ाइल की ओर बढ़ते समय प्रत्येक फ़ाइल के लिए उपयुक्त रेखा पर कूदना।

यह हैक केवल मामूली परीक्षण किया गया है, किसी भी त्रुटि पर टिप्पणी करें।

फिर से संपादित:

स्क्रिप्ट तो भी vim -R 1:3 "a file" foo -- -- "some other file":34 -R काम करता है की तरह एक पागल उदाहरण फिक्स्ड अपेक्षा के अनुरूप।

+0

यदि आप SO पर यहां स्पष्टीकरण (मेरे जैसे विम नोब्स के लिए) के साथ अपना कोड शामिल करते हैं तो यह सहायक होगा। – Enigmadan

1

file2.txt पर file1.txt और लाइन 4 पर 3 लाइन पर जाने के लिए मुझे क्या करना इस:

vim -c ":e file1.txt|:3|:e file2.txt|:4" 
+2

अच्छा! मुझे लगता है कि स्प्लिट स्क्रीन भी बेहतर होगी: vim -c ": e file1.txt |: 3 |: vsplit file2.txt |: 4" –

0

एक vim प्लगइन बुलाया फ़ाइल लाइन आप आसानी से कर देता है कि नहीं है, हालांकि यह है वर्तमान में विशिष्ट लाइनों में एकाधिक फ़ाइलों को खोलने के साथ कुछ समस्याएं। मुझे ऊपर दिए गए कुछ वर्कअराउंड पसंद हैं, लेकिन अगर आप बफर सूची :ls फाइलों से संबंधित फाइलों से भरे हुए हैं, तो फ़ाइल लाइन काम करती है, और फिर आप उन्हें सभी को विभाजित करने के लिए bufdo जैसे कुछ उपयोग कर सकते हैं।

https://github.com/bogado/file-line

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