Vim dosya türünü modelin beklendiği gibi çalışmadığı şekilde ayarlama


12

Bu sorunun kabul edilen cevabına göre , bazı dosyalarda dosya türünü algılamayı zorlamak için vim'de modelines kullanmaya çalışıyorum.

Örneğin, adında bir dosyanın üst kısmında ( satır gitconfigaralığı olmadığına dikkat edin .) aşağıdaki satır var:

# vim: set filetype=gitconfig : 

modelinesistemimde etkin. Ancak, dosyayı vim içinde açtığımda , beklenen yerine set filetype?döndürür .confgitconfig

Vim yapılandırmamın diğer bölümlerinin (örn. Filetype.vim) bu garip davranışa neden olması mümkün mü?

Yorumlara yanıt olarak düzenlendi:

set compatible? İadeler nocompatible

set modeline? İadeler modeline

verbose set filetype? İadeler:

filetype=conf
      Last set from /usr/share/vim/vim73/filetype.vim

Neden sistem geniş dosya türü eklenti dosyanın kendisinde ayarladıklarını geçersiz kılan anlamıyorum.

Son bir not: Bu, OSX ile birlikte gelen Vim 7.3 sürümüdür.

MacVim'in en son sürümü , aynı sistemde çalışan ve .vimrcbeklendiği gibi çalışıyor ve set ft?geri dönüyor filetype=gitconfig.


Genellikle dosyaların sonunda (son satırında) bu seçenekleri gördüm - belki sorun budur ...
rozcietrzewiacz

Sadece emin olmak için: Eğer etmedi kontrol o set modeline?yazmıyor nomodeline?
rozcietrzewiacz

Modelin çalışmamasının en yaygın nedeninin compatibleayarlanmış olması. Bu da kontrol etmeye değer.
Edd Steel

Yanıtlar için güncellenmiş soruya bakın.
Murali Suriar

Yanıtlar:


21

Bu nedenle, bazı kazma işlemlerinden sonra, vimrcOSX ile birlikte gelen sistemin modelines0 değerini (arkadaki 's' leri not edin) 0 olarak ayarladığını aktarır. Bu değişken, bir dosyadaki set komutları için kontrol edilen satır sayısını kontrol eder. Modelleri sıfırda olmayan bir değere ayarlamak .vimrcsorunumu çözdü.

Meraklı için tam çıkış: çıkış vim --versionsistem vimrc kontrol etmemi istedi:

% vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 24 2011 20:00:09)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
...
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe
Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses

Sistem vimrc'ye bakarken:

% cat /usr/share/vim/vimrc 
" Configuration file for vim
set modelines=0         " CVE-2007-2438
...

Beni modelinesdeğişkene götürdü. MacVim'in bu sistem dosyasını kaynaklamadığı anlaşılıyor (belki bir sistem GVIMRC mi arıyorsunuz? :help startupAçık değil).

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul 27 2011 19:46:24)
MacOS X (unix) version
Included patches: 1-260
Compiled by XXXXX
Huge version with MacVim GUI.  Features included (+) or not (-):
...
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -p
ipe  -DMACOS_X_UNIX -no-cpp-precomp  -g -O2 -D_FORTIFY_SOURCE=1
Linking: gcc   -L.         -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -L/usr/local/lib -o V
im -framework Cocoa -framework Carbon      -lncurses  -liconv -framework Cocoa    -fstack-prote
ctor -L/usr/local/lib  -L/System/Library/Perl/5.10/darwin-thread-multi-2level/CORE -lperl -lm -
lutil -lc -framework Python   -framework Ruby

1

Bunun macOS sistemimde çalışması için ~ / .vimrc içinde birkaç ayar tanımlamam gerekiyordu:

modeline
modelines=2

Burada ' modeline ' dosya içi ayarların kullanılmasını sağlar ve ' modelines = # ' vim / vi'nin ayarlanmış komutları kontrol edeceği satır sayısını belirler.

Bu parametreler ayarlandıktan sonra, ayar parametrelerini geçersiz kılmak için dosyalarımda aşağıdaki satır gibi sözdizimi kullanabildim.

# vim: ts=4 sw=4 ai
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.