Налаштування файлу Vim з моделіном не працює, як очікувалося


12

Відповідно до прийнятої відповіді на це запитання , я намагаюся використовувати моделей in vim для примусового виявлення файлових типів у деяких файлах.

Наприклад, у верхній частині файла з назвою gitconfig(зауважте, що немає провідного .), у мене є такий рядок:

# vim: set filetype=gitconfig : 

modelineувімкнено у моїй системі. Однак, коли я відкриваю файл у vim, set filetype?повертається conf, а не очікується gitconfig.

Чи можливо, що інші частини моєї конфігурації vim (наприклад, filetype.vim) викликають цю дивну поведінку?

Відредаговано у відповідь на коментарі:

set compatible? повертає nocompatible

set modeline? повертає modeline

verbose set filetype? повертає:

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

Я не розумію, чому плагін для файлових файлів для загальної системи перекриє те, що я встановив у самому файлі.

Останнє зауваження: це версія Vim 7.3, що постачається з OSX.

Остання версія MacVim працює на тій же системі з використанням тих же .vimrcповодиться , як і очікувалося, з set ft?поверненням filetype=gitconfig.


Зазвичай я бачив ці параметри, встановлені в кінці (останній рядок) файлів - можливо, це питання ...
rozcietrzewiacz

Просто для переконання: чи ви перевірили , set modeline?чи не друкується nomodeline?
rozcietrzewiacz

Я вважаю найпоширенішою причиною того, що моделін не працює - compatibleце встановлено. Це також варто перевірити.
Edd Steel

Дивіться оновлене запитання для відповідей.
Murali Suriar

Відповіді:


21

Отже, після деякого копання з'ясовується, що система, що vimrcпостачається з OSX, встановлює modelines(зверніть увагу на проміжку '' змінної до 0. Ця змінна контролює кількість рядків у файлі, які перевіряються на встановлені команди. Встановлення моделей на нульове значення в моєму .vimrcвирішенні проблеми.

Повний вихід, для допитливих: вихід vim --versionзапропонував мені перевірити систему vimrc:

% 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

Дивлячись на системний vimrc:

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

Привів мене до modelinesзмінної. Здається, що MacVim не отримує джерело цього системного файлу (можливо, шукає натомість системного GVIMRC? :help startupНе зрозуміло).

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

Щоб це працювало в моїй системі macOS, мені довелося визначити пару параметрів у ~ / .vimrc:

modeline
modelines=2

Там, де ' modeline ' дає змогу використовувати параметри файлів, а ' modelines = # ' встановлює кількість рядків, які vim / vi перевірятиме на встановлені команди.

Як тільки ці параметри були встановлені, я зміг використовувати синтаксис, як рядок нижче, у моїх файлах, щоб змінити задані параметри.

# vim: ts=4 sw=4 ai
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.