2009-09-10 17 views
14

मेरा दिन नौकरी पर्ल के साथ कोडिंग शामिल है। घर पर मैं पाइथन और एरलांग के साथ खेलता हूं। पर्ल के लिए मैं अपने कोड को दो रिक्त स्थान के साथ इंडेंट करना चाहता हूं। जबकि पायथन के लिए मानक 4 है। इसके अलावा मेरे पास फ़ंक्शन घोषणाओं को खोलने के लिए कुछ महत्वपूर्ण बाइंडिंग हैं जिन्हें मैं सभी प्रोग्रामिंग भाषाओं के साथ उपयोग करना चाहता हूं। जीवीआईएम में यह कैसे हासिल किया जा सकता है?जीवीआईएम और एकाधिक प्रोग्रामिंग भाषाएं

जैसा कि, प्रत्येक प्रोग्रामिंग भाषा या उस तरह के कुछ के लिए कॉन्फ़िगरेशन फ़ाइल बनाए रखने का कोई तरीका है?

उत्तर

22

आप फ़ाइल प्रकारों का लाभ उठाकर साथ ऐसा करने में सक्षम होना चाहिए ... जैसे, अपने vimrc में जोड़ना (और विभिन्न भाषाओं के लिए उचित रूप से संशोधित): अपने $ घर में

autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab 
+20

डिफ़ॉल्ट सेटिंग्स को ओवरराइड न करें। 'सेट' के बजाय 'setlocal' (या 'setl') का उपयोग करें। आप अन्य buffers में अंतिम autocmd ब्रेक की सेटिंग्स नहीं चाहते हैं। –

+0

@ मैक्सिम - अच्छा पकड़ ... :-) –

+2

'सेट' कमांड एकाधिक विकल्पों को स्वीकार करता है। तो, लिखना आसान है: 'सेट टैबस्टॉप = 4 shiftwidth = 4 expandtab' –

23

,/निर्देशिका .vim बनाने (या vimfiles/विंडोज़ पर), इसमें ftplugin/निर्देशिका बनाते हैं, और इसमें "perl.vim" या "python.vim" या "html.vim" नामक फ़ाइलें रखें या ...

इन्हें लोड किया जाना चाहिए जब आप अपने .vimrc (या windows के तहत _vimrc)

में :filetype plugin on जोड़ना न भूलें, तब तक स्वचालित रूप से दिए गए फ़ाइल प्रकार की नई फ़ाइल खोलें/बनाएं

फिर, vim विकल्पों को :setlocal (और :set के साथ परिभाषित नहीं किया जाना चाहिए, अन्यथा उनकी परिभाषा डिफ़ॉल्ट वैश्विक सेटिंग को ओवरराइड कर देगी)।

मैपिंग :n/i/v(nore)map <buffer> के साथ-साथ संक्षेपों के साथ परिभाषित किए गए हैं। आदेश -b विकल्प के साथ परिभाषित किए गए हैं। प्लगइन की सहायता के बिना मेनू को स्थानीय नहीं बनाया जा सकता है।

local, <buffer>, और -b दुष्प्रभावों को रोकने के लिए महत्वपूर्ण हैं।

+0

यदि आप विंडोज़ पर हैं, तो ": डॉस-प्लेस मदद करें" देखें। –

+0

+1 मुझे नहीं पता था कि कमांड को एक बफर के लिए परिभाषित किया जा सकता है! –

3

यहां मैं यह कैसे करता हूं। नीचे मेरे .vimrc से एक अंश है, और मैं प्रति भाषा आगे विन्यास बनाए रखता हूं, और जब एक नया बफर लोड होता है तो उन्हें लोड करता है।

" HTML 
autocmd BufNewFile,BufRead *.html,*.htm,*.xhtml source ~/.vimhtml 
" XML 
autocmd BufNewFile,BufRead *.xml,*.xmi source ~/.vimxml 
" Perl 
autocmd BufNewFile,BufRead *.pl,*.pm source ~/.vimperl 

ध्यान दें कि हालांकि मैं एक फ़ाइल स्रोत करता हूं, मैं किसी भी वीआईएम कमांड को निष्पादित कर सकता हूं, या फ़ंक्शन को कॉल कर सकता हूं। जैसे एक नया जावा फ़ाइल लोड करने के लिए मैं यह कर:

autocmd BufNewFile *.java call GeneratePackage() 

जहां GeneratePackage() एक विम कार्य है।

+0

autocmd FileType ... बेहतर है क्योंकि आप उस प्रकार की फ़ाइल के लिए किए गए कार्यों से फ़ाइल प्रकार का पता लगाने (BufNewFile के साथ) को अलग करते हैं। – joeforker

7

रेंजरक्रिस के उत्तर के अतिरिक्त, आप मॉडलिन का उपयोग करने पर विचार कर सकते हैं। मॉडलाइन्स स्वयं संपादक को कॉन्फ़िगर कैसे बता:

#!/usr/bin/perl 
# vi: ts=4 sw=4 ht=4 et textwidth=76 : 

use strict; 
use warnings; 

print "hello world\n"; 

modeline vi बताता है कि, 4 चरित्र टैब और autoindents उपयोग करने के लिए टैब के बजाय रिक्त स्थान का उपयोग करने के लिए, और जब कर्सर 76 वर्ण हो जाता है यह एक नई पंक्ति सम्मिलित करना चाहिए।

आप नियंत्रित कर सकते कैसे विम दो चर (सबसे अधिक संभावना अपने .vimrc में सेट) के साथ मॉडलाइन्स पढ़ता है:

set modeline 
set modelines=5 

modeline चर विम बताता मॉडलाइन्स देखने के लिए अगर यह निर्धारित है। modelines वैरिएबल Vim बताता है कि मॉडलिन की तलाश में स्कैन करने के लिए ऊपर और नीचे से कितनी रेखाएं हैं (इस मामले में यह मॉडल की पहली या आखिरी पांच पंक्तियों में मॉडलिन पाएगी)।

अविश्वसनीय स्रोतों से निर्देश लेने वाली किसी भी प्रणाली की तरह, मॉडल security threat हो सकती है, इसलिए root उपयोगकर्ता को कभी भी मॉडलिन का उपयोग नहीं करना चाहिए और आपको अपनी प्रतिलिपि को अद्यतित रखना चाहिए।

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

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