2009-09-10 27 views
14

Günlük işlerim Perl ile kodlamayı içerir. Evde Python ve Erlang ile oynarım. Perl için kodumu iki boşlukla girmek istiyorum. Python için ise standart 4'tür. Ayrıca, tüm programlama dilleriyle kullanmak istediğim fonksiyon bildirimlerini açmak için bazı anahtar bağlarım var. Bu gVim'de nasıl başarılabilir?gVim ve çoklu programlama dilleri

Her programlama dili veya bu tür bir şey için bir yapılandırma dosyası bulundurmanın bir yolu var mı?

cevap

22

Sen mesela, senin vimrc eklemek bu (ve farklı diller için uygun modifiye) ... filetypes yararlanarak yapmak mümkün olmalıdır:

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

Varsayılan ayarları geçersiz kılmayın. 'Set' yerine 'setlocal' (veya 'setl') kullanın. Son autocmd aralığının ayarlarını diğer arabelleklere istemezsiniz. –

+0

@Maxim - İyi yakalama ... :-) –

+2

'set' komutu çoklu seçenekleri kabul eder. Yani, yazmak daha kolay: 'set tabstop = 4 shiftwidth = 4 expandtab' –

23

$ HOME olarak,/dizinini .vim yapmak (veya vimfiles/Windows'da), ftplugin/dizinini yapar ve içinde "perl.vim" veya "python.vim" veya "html.vim" adlı dosyaları saklar veya ...

Bunlar yüklenmelidir otomatik olarak verilen filetype'ı açtığınızda/oluşturduğunuzda otomatik olarak :filetype plugin on'u .vimrc (veya pencerelerin altında _vimrc) eklemeyi unutmayın.

Daha sonra, vim seçenekleri :setlocal ile tanımlanmalıdır (ve :set değil, aksi halde tanımı varsayılan genel ayarı geçersiz kılacaktır).

Mappings, :n/i/v(nore)map <buffer> ve kısaltmalar ile tanımlanır. Komutlar -b seçeneği ile tanımlanmıştır. Bir eklentinin yardımı olmadan menüler yerel olarak yapılamaz. Yan etkileri önlemek için,

local, <buffer> ve -b önemlidir.

+0

Windows kullanıyorsanız, bkz. ": Dos dos-location". –

+0

+1 Tek bir tampon için komutların tanımlanabileceğini bilmiyordum! –

3

İşte nasıl yaparım. Aşağıda, .vimrc'dan bir alıntı var ve dil başına başka yapılandırmaları koruyorum ve yeni bir arabellek yüklendiğinde bunları yüklüyorum. Bir dosyayı kaynak rağmen, herhangi bir VIM komutunu çalıştırmak veya bir işlevi çağırabilir o

" 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 

Not. Örneğin. yeni bir Java dosyasının yüklenmesi için bunu yapmak: GeneratePackage() bir VIM fonksiyonudur

autocmd BufNewFile *.java call GeneratePackage() 

.

+0

autocmd FileType ... dosya türü algılamasını (BufNewFile ile) bu dosya türü için gerçekleştirilen eylemlerden ayırdığınız için daha iyidir. – joeforker

7

rangerchris'in cevabına ek olarak, modelinleri kullanmayı düşünebilirsiniz. Modelines kendisini nasıl yapılandırılacağı editörü söyle: kipsatırı yerine sekmelerin yerlerini kullanmak, 4 karakter sekmeleri ve autoindents kullanmaya vi söyler Yani

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

use strict; 
use warnings; 

print "hello world\n"; 

ve imleç 76 karakter için götürüldüğü yerde bir yeni satır eklemek gerektiğini söyledi.

Sen Vim (büyük olasılıkla .vimrc ayarlanır) iki değişken ile modelines okur nasıl kontrol edebilir:

set modeline 
set modelines=5 

modeline değişken o ayarlanırsa kipsatırlarının aramaya Vim söyler. modelines değişkeni, Vim'e, üst ve alttan, modelini ararken taramak için kaç satır gerektiğini söyler (bu durumda, dosyanın birinci veya son beş satırlarında bulunuyorsa, modelini bulur).

Güvenilmeyen kaynaklardan gelen yönergeleri alan tüm sistemler gibi, model satırlar security threat olabilir, bu nedenle root kullanıcısı hiçbir zaman model kalıplarını kullanmamalı ve Vim kopyanızı güncel tutmalısınız.

Modellemelerin gerçek yararı dosya başına olmasıdır. Çoğu Perl kişi, girintiler olarak dört boşluktur, ancak ben sekiz karakter sekme insanım. Diğer insanların kodlarıyla çalışırken, kullanımlarını yansıtan bir modelin kullanırım. Zamanın geri kalanında kendimi kullanıyorum.

İlgili konular