उम्मीद के मुताबिक काम नहीं करने वाले मॉडल के साथ विम फिल्टाइप सेट करना


12

इस प्रश्न के स्वीकृत उत्तर के अनुसार , मैं कुछ फाइलों में फ़ाइलाइप डिटेक्शन को बाध्य करने के लिए मॉडल का उपयोग करने का प्रयास कर रहा हूं।

उदाहरण के लिए, नाम की एक फ़ाइल के शीर्ष पर 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

मुझे समझ नहीं आ रहा है कि सिस्टम वाइड फिल्टाइप प्लग इन फाइल में मैंने जो सेट किया है वह ओवरराइडिंग क्यों होगा।

एक अंतिम नोट: यह OSX के साथ भेज दिया Vim 7.3 का संस्करण है।

मैकविम का नवीनतम संस्करण उसी प्रणाली का उपयोग कर रहा है जो उसी .vimrcतरह का उपयोग करता है जैसा कि अपेक्षित है, set ft?वापसी के साथ filetype=gitconfig


मैंने आमतौर पर फाइलों के अंत (अंतिम पंक्ति) में उन विकल्पों को देखा - शायद यही मुद्दा है ...
rozcietrzewiacz

बस यह सुनिश्चित करने के लिए: क्या आपने चेक किया था कि set modeline?प्रिंट नहीं होता है nomodeline?
रोज़ज़ेट्रिएवेज़ज़ सिप

मुझे लगता है कि काम नहीं कर रहा है कि मॉडलिंग के लिए सबसे आम कारण compatibleहै। यह भी जाँच के लायक होगा।
Edd Steel

प्रतिक्रियाओं के लिए अद्यतन प्रश्न देखें।
मुरली सूरिार

जवाबों:


21

इसलिए, कुछ खोदने के बाद, यह ट्रांसपायर करता है कि vimrcओएसएक्स के साथ भेज दिया गया सिस्टम modelines0. (अनुगामी 'नोट') चर को सेट करता है। यह चर एक फाइल में लाइनों की संख्या को नियंत्रित करता है जो सेट कमांड्स के लिए जांच की जाती हैं। मेरी .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चर के लिए नेतृत्व किया । ऐसा प्रतीत होता है कि मैकविम इस सिस्टम फाइल को सोर्स नहीं करता है (शायद इसके बजाय सिस्टम 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

जहाँ ' मॉडलइन ' इन-फाइल सेटिंग्स का उपयोग करने में सक्षम बनाता है, और ' मॉडलइन्स = # ' उन पंक्तियों की संख्या निर्धारित करता है जो विम / vi सेट कमांड के लिए जाँच करेगा।

एक बार उन मापदंडों को सेट करने के बाद, मैं सेट मापदंडों को ओवरराइड करने के लिए अपनी फ़ाइलों में नीचे की रेखा की तरह सिंटैक्स का उपयोग करने में सक्षम था।

# vim: ts=4 sw=4 ai
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.