Vim Makefile ve normal kod dosyalarını düzenlemek için nasıl kurulur?


22

Mac OSX 10.7.5 kullanıyorum, .vimrc içeriği aşağıdaki gibidir:

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

autocmd FileType make setlocal noexpandtab

Ne yapmaya çalışıyorum .js, .html gibi normal dosyaları düzenlerken sekmelerimin normal sekme yerine 4 boşlukla girintili olmasını istiyorum.

Ama Makefile'yi düzenlerken, girintiler için 4 boşluk yerine normal bir sekme olması gerekiyor.

.Vimrc'deki yukarıdaki kurulumun bana bunu vereceğini düşündüm, ama Makefile'yi düzenlerken olduğu gibi benim için çalışmıyor Hala girinti için 4 boş alan alıyorum.

Burada neyi yanlış yaptığımdan emin değil misiniz?

Yanıtlar:


26

Bu benim bir bölümü .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

Bölüm kendi kendini açıklayıcı olmalı, ama ben size vim yardım okumak önermek filetypeve autocmd.

Sizin için en alakalı çizgi muhtemelen budur:

autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

olsa da dosya türü algılamanın açık olduğundan emin olun.


Mükemmel autocommands için teşekkürler! Ben fark Bu eğitimde , hesabınızla ilgili öğrenirken .vimrcsize sarmak yoksa o autocmdolduğundan da augroupbölümlerde, Vim bu okuma ve bunları çoğaltmak olacaktır. Bu doğru mu?
Joshua Detwiler

6

Bunu autocmds ile yapmak yerine, her dosya türü için kendi kullanıcı dosya tipi eklentinizi oluşturabilir ve istediğiniz gerçek dosya türünün ~/.vim/ftplugin/<filetype>.vimbulunduğu yere yerleştirebilirsiniz <filetype>. Örneğin:

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

~/.vimrcAşağıdaki komutla filetype eklentilerini etkinleştirdiğinizden emin olmanız gerekir :

filetype plugin on

.Vimrc ve .vim dizinlerinizi düzenli tutmak istiyorsanız bu yanıt daha mantıklıdır.
Floby

0

Vim'i her zaman sekmeleri genişletecek şekilde yapılandırmak daha kolaydır, bu da makefiles dışındaki tüm dosyalar için istenir. Makefiles uygulamasında, istediğiniz yere bir sekme eklemek için kullanabilirsiniz. Genişletilmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.