Makefile और normal code दोनों फाइलों को एडिट करने के लिए vim सेटअप कैसे करें?


22

मैं मैक OSX 10.7.5 का उपयोग कर रहा हूं, .vimrc की सामग्री इस प्रकार है:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set shiftround  
set smarttab    
set autoindent  
set copyindent  

autocmd FileType make setlocal noexpandtab

जब मैं सामान्य फाइलें जैसे .js, .html को संपादित करता हूं, तो मैं क्या करने की कोशिश कर रहा हूं, मैं चाहता हूं कि मेरा टैब सामान्य टैब के बजाय 4 रिक्त स्थानों के साथ इंडेंट हो।

लेकिन जब मैं Makefile का संपादन कर रहा हूं, तो मुझे इंडेंटेशन के लिए 4 रिक्त स्थानों के बजाय एक सामान्य टैब होना चाहिए।

मुझे लगा कि उपरोक्त सेटअप .vimrc मुझे देने जा रहा है, लेकिन मेरे लिए काम नहीं कर रहा है क्योंकि जब मैं Makefile का संपादन कर रहा हूं तो मुझे अभी भी इंडेंटेशन के लिए 4 रिक्त स्थान मिल रहे हैं।

यकीन नहीं होता कि मैं यहां क्या गलत कर रहा हूं?

जवाबों:


26

यह मेरा एक भाग है .vimrc:

" enable filetype detection:
filetype on
filetype plugin on
filetype indent on " file type based indentation

" recognize anything in my .Postponed directory as a news article, and anything
" at all with a .txt extension as being human-language text [this clobbers the
" `help' filetype, but that doesn't seem to prevent help from working
" properly]:
augroup filetype
  autocmd BufNewFile,BufRead */.Postponed/* set filetype=mail
  autocmd BufNewFile,BufRead *.txt set filetype=human
augroup END

autocmd FileType mail set formatoptions+=t textwidth=72 " enable wrapping in mail
autocmd FileType human set formatoptions-=t textwidth=0 " disable wrapping in txt

" for C-like  programming where comments have explicit end
" characters, if starting a new line in the middle of a comment automatically
" insert the comment leader characters:
autocmd FileType c,cpp,java set formatoptions+=ro
autocmd FileType c set omnifunc=ccomplete#Complete

" fixed indentation should be OK for XML and CSS. People have fast internet
" anyway. Indentation set to 2.
autocmd FileType html,xhtml,css,xml,xslt set shiftwidth=2 softtabstop=2

" two space indentation for some files
autocmd FileType vim,lua,nginx set shiftwidth=2 softtabstop=2

" for CSS, also have things in braces indented:
autocmd FileType css set omnifunc=csscomplete#CompleteCSS

" add completion for xHTML
autocmd FileType xhtml,html set omnifunc=htmlcomplete#CompleteTags

" add completion for XML
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

" in makefiles, don't expand tabs to spaces, since actual tab characters are
" needed, and have indentation at 8 chars to be sure that all indents are tabs
" (despite the mappings later):
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

" ensure normal tabs in assembly files
" and set to NASM syntax highlighting
autocmd FileType asm set noexpandtab shiftwidth=8 softtabstop=0 syntax=nasm

अनुभाग स्वयं-व्याख्यात्मक होना चाहिए, लेकिन मेरा सुझाव है कि आप पर filetypeऔर विम मदद पढ़ें autocmd

आपके लिए सबसे प्रासंगिक पंक्ति, शायद यह एक है:

autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

सुनिश्चित करें कि फ़िलेोटाइप का पता लगाना चालू है, हालाँकि।


उत्कृष्ट ऑटोकॉमैंड्स के लिए धन्यवाद! मैं में देखा इस ट्यूटोरियल , जबकि अपनी से सीखने .vimrcकि अगर आप अपने रैप नहीं autocmdमें रों augroupवर्गों, विम में इन पढ़ सकते हैं और उन्हें नकल होगा। क्या ये सही है?
जोशुआ डेटेलर

6

ऑटोकैड्स के साथ ऐसा करने के बजाय, आप प्रत्येक फ़िलाटाइप के लिए अपना स्वयं का उपयोगकर्ता फ़िलाटाइप प्लगइन बना सकते हैं, और इसे उस स्थान पर रख सकते हैं ~/.vim/ftplugin/<filetype>.vim, जहाँ <filetype>वास्तविक फ़ाइल प्रकार आप चाहते हैं। उदाहरण के लिए:

mkdir -p ~/.vim/ftplugin
echo "setlocal noexpandtab" > ~/.vim/ftplugin/make.vim

आपको यह सुनिश्चित करने की ज़रूरत है कि आपके पास ~/.vimrcनिम्न कमांड के साथ आपके द्वारा सक्षम किए गए फ़िलाटाइप प्लग इन हैं :

filetype plugin on

यदि आप अपने .vimrc और .vim निर्देशिकाओं को चुस्त रखना चाहते हैं तो यह उत्तर और अधिक समझ में आता है।
फ्लोबी

0

हमेशा टैब को विस्तारित करने के लिए विम को कॉन्फ़िगर करना सरल है, जो कि मेकफाइल्स को छोड़कर सभी फाइलों के लिए वांछित है। मेकफाइल्स में, आप जहाँ चाहें टैब सम्मिलित करने के लिए उपयोग कर सकते हैं। इसका विस्तार नहीं किया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.