Ustawienie typu pliku vim z modeline nie działa zgodnie z oczekiwaniami


12

Zgodnie z przyjętą odpowiedzią na to pytanie , próbuję użyć modelin w vimie, aby wymusić wykrywanie typu pliku w niektórych plikach.

Na przykład u góry pliku o nazwie gitconfig(uwaga nie ma wiodących .) mam następujący wiersz:

# vim: set filetype=gitconfig : 

modelinejest włączony w moim systemie. Jednak gdy otwieram plik w vimie, set filetype?zwraca confraczej niż oczekiwany gitconfig.

Czy to możliwe, że inne części mojej konfiguracji vima (np. Filetype.vim) powodują to dziwne zachowanie?

Edytowane w odpowiedzi na komentarze:

set compatible? zwroty nocompatible

set modeline? zwroty modeline

verbose set filetype? zwroty:

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

Nie rozumiem, dlaczego ogólnosystemowa wtyczka typu pliku zastępuje to, co ustawiłem w samym pliku.

Ostatnia uwaga: jest to wersja Vima 7.3 dostarczana z OSX.

Najnowsza wersja MacVim działająca w tym samym systemie, korzystająca z tego samego systemu, .vimrczachowuje się zgodnie z oczekiwaniami, z set ft?powrotem filetype=gitconfig.


Zazwyczaj widziałem te opcje ustawione na końcu (ostatniej linii) plików - może to jest problem ...
— rozcietrzewiacz

Dla pewności: czy sprawdziłeś , set modeline?czy nie drukuje się nomodeline?
— rozcietrzewiacz

Uważam, że najczęstszą przyczyną niedziałania modeliny compatiblejest jej ustawienie. Warto też to sprawdzić.
— Edd Steel

Zobacz zaktualizowane pytanie, aby uzyskać odpowiedzi.
— Murali Suriar

Odpowiedzi:


21

Po pewnym czasie okazuje się, że system vimrcdostarczany z OSX ustawia modelineszmienną (zwróć uwagę na końcowe) na 0. Ta zmienna kontroluje liczbę wierszy w pliku, które są sprawdzane pod kątem poleceń ustawiania. Ustawienie modeliny na niezerową wartość w moim .vimrcrozwiązało problem.

Pełny wynik dla ciekawskich: wynik vim --versionzachęcił mnie do sprawdzenia vimrc systemu:

% 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

Patrząc na vimrc systemu:

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

Doprowadził mnie do modelineszmiennej. Wygląda na to, że MacVim nie pobiera tego pliku systemowego (być może szukasz systemowego GVIMRC? :help startupNie jest jasne).

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

Aby to działało na moim systemie macOS, musiałem zdefiniować kilka ustawień w ~ / .vimrc:

modeline
modelines=2

Gdzie „ modeline ” umożliwia użycie ustawień w pliku, a „ modelines = # ” ustawia liczbę linii, które vim / vi będzie sprawdzać pod kątem ustawionych poleceń.

Po ustawieniu tych parametrów mogłem użyć składni takiej jak linia poniżej w moich plikach, aby zastąpić ustawione parametry.

# vim: ts=4 sw=4 ai
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.