Đặt vim filetype với modeline không hoạt động như mong đợi


12

Theo câu trả lời được chấp nhận cho câu hỏi này , tôi đang cố gắng sử dụng các mô hình trong vim để buộc phát hiện filetype trong một số tệp.

Ví dụ: ở đầu tệp có tên gitconfig(lưu ý không có hàng đầu .), tôi có dòng sau:

# vim: set filetype=gitconfig : 

modelineđược kích hoạt trên hệ thống của tôi. Tuy nhiên, khi tôi mở tệp trong vim, set filetype?trả về conf, thay vì mong đợi gitconfig.

Có thể các phần khác trong cấu hình vim của tôi (ví dụ filetype.vim) đang gây ra hành vi kỳ lạ này không?

Chỉnh sửa để phản hồi ý kiến:

set compatible? trả lại nocompatible

set modeline? trả lại modeline

verbose set filetype? trả về:

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

Tôi không hiểu tại sao plugin filetype toàn hệ thống sẽ ghi đè lên những gì tôi đã đặt trong tệp.

Một lưu ý cuối cùng: đây là phiên bản Vim 7.3 được bán kèm với OSX.

Phiên bản mới nhất của MacVim chạy trên cùng một hệ thống sử dụng các .vimrchành vi tương tự như mong đợi, với việc set ft?quay lại filetype=gitconfig.


Tôi thường thấy các tùy chọn được đặt ở cuối (dòng cuối cùng) của các tệp - có thể đó là vấn đề ...
rozcietrzewiacz

Chỉ để đảm bảo: bạn đã kiểm traset modeline?không in nomodeline?
rozcietrzewiacz

Tôi tìm thấy nguyên nhân phổ biến nhất cho modeline không hoạt động là nó compatibleđược đặt. Điều đó cũng đáng để kiểm tra.
Edd Steel

Xem câu hỏi cập nhật để trả lời.
Murali Suriar

Câu trả lời:


21

Vì vậy, sau một số lần đào, nó sẽ vimrcchuyển hệ thống được cung cấp với OSX đặt biến modelines(lưu ý biến số 's') thành 0. Biến này kiểm soát số lượng dòng trong tệp được kiểm tra cho các lệnh đã đặt. Đặt mô hình thành giá trị khác không trong tôi đã .vimrcgiải quyết vấn đề.

Đầu ra đầy đủ, cho tò mò: đầu ra vim --versionnhắc tôi kiểm tra hệ thống 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

Nhìn vào hệ thống vimrc:

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

Dẫn tôi đến modelinesbiến. Dường như MacVim không cung cấp tệp hệ thống này (có lẽ đang tìm kiếm một hệ thống GVIMRC thay vào đó? :help startupKhông rõ ràng).

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

Để điều này hoạt động trên hệ thống macOS của tôi, tôi đã phải xác định một vài cài đặt trong ~ / .vimrc:

modeline
modelines=2

Trong đó ' modeline ' cho phép sử dụng các cài đặt trong tệp và ' modelines = # ' đặt số lượng dòng mà vim / vi sẽ kiểm tra các lệnh đã đặt.

Khi các tham số đó được đặt, tôi có thể sử dụng cú pháp như dòng bên dưới trong tệp của mình để ghi đè tham số đã đặt.

# vim: ts=4 sw=4 ai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.