2008-10-23 22 views
24

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

ई.एक्स. मैं की तरह कुछ की जरूरत है $ जाँचने < diff -r dir1/ dir2/

यह अस्पष्ट रीडायरेक्ट त्रुटि संदेश

मैं सिर्फ dir1 के बीच डिफ देख सकते हैं और सीधे अंदर जाँचने dir2 करना चाहते हैं देता है।

क्या कोई भी एक अच्छा हैक प्रदान कर सकता है?

उत्तर

4

JST उपयोग gvimdiff बजाय
या vimdiff
उदाहरण ls के लिए सीधे vim में एक आदेश के उत्पादन में पेस्ट करने के लिए, कोशिश
:% आर ls

+0

यदि आपके पास 'vim' (एक कस्टम स्थापना, शायद) पर उपनाम है, तो 'vimdiff' साइट-व्यापी विम का उपयोग करेगा। आप अपने कस्टम विम के साथ "diff" व्यवहार प्राप्त करने के लिए 'vim -d' (या अन्य उपनाम सेट अप) का उपयोग कर सकते हैं। –

41
diff file1 file2 | vim -R - 

-R यह पढ़ा बनाता है केवल इसलिए कि आप गलती से इनपुट को संशोधित नहीं करते हैं (जो आपका वांछित व्यवहार हो सकता है या नहीं)। मानक इनपुट पर अपना इनपुट पढ़ने के लिए एकल डैश vim बताता है। अन्य आदेशों के लिए भी काम करता है।

10

इसके अलावा, जब पहले से ही विम में:

:r! diff file1 file2 
6

हालांकि मैं भी एक diff को देखने का मामले के लिए vimdiff या vim -d सुझाव है, मैं सिर्फ यह (अधिक सामान्य) साझा करने के लिए पाइप में विम उपयोग का उपयोग करने के लिए दृष्टिकोण: vipe (उबंटू में moreutils पैकेज से)।

उदाहरण के लिए

:

खोज -name '* .png' | वाइप | xargs आरएम

आपको xargs rm पर जाने से पहले पाए गए .png फ़ाइलों की सूची को पहले संपादित करने (vim) करने की अनुमति देगा।

2

आप - 'vim (या जाँचने) करने का विकल्प

diff -r dir1/ dir2/ | gvim - 

साथ ऐसा कर सकते बताता STDIN

खोलने के लिए
0

सबसे सरल में से एक है और उपयोग vim सुविधाजनक तरीके इसे ऐसा करना है:

vimdiff -R <file1> <file2> 

फिर से '-आर' ध्वज किसी भी आकस्मिक परिवर्तन से बचने के लिए इसे केवल पढ़ने के लिए मोड के लिए खोलना है।

0

आप के लिए process substitution कहा जाता है क्या देख रहे हैं:

vim <(diff -r dir1/ dir2/)

लेकिन DirDiff प्लगइन ल्यूक ने उल्लेख किया और अधिक उपयोगी निर्देशिका की तुलना के लिए है।