मॉडलाइन काम में नहीं


19

मेरे पास .aliasesbash और zsh के लिए एक फाइल है , मैंने यह लाइन लगाई है

# vim: set filetype=bash: 

लेकिन अगर मैं बना

: echo &ft

मुझे मिला conf


मैंने यहां सब कुछ करने की कोशिश की है और कुछ भी काम नहीं किया है। मैं 18 साल से विम का इस्तेमाल कर रहा हूं। यह पहली बार है जब मैंने मॉडलिंग करने के लिए काम करने में असफल रहा है।
ब्रूनो ब्रोंस्की

पता लगा लिया। नीचे उत्तर दें। superuser.com/a/1174296/3376
ब्रूनो ब्रोंस्की

जवाबों:


28

वह काम करना चाहिए। मैंने खुद उस लाइन को आजमाया और यह काम किया। मैं यह हो सकता है कि आपका 'मॉडलाइन' विकल्प 'नामांकित' के लिए सेट हो गया। इसे निष्पादित करने का प्रयास करें और देखें कि आपको क्या मिलता है।

:verbose set modeline?

यह आपको 'मॉडल' विकल्प का मूल्य बताएगा और यदि डिफ़ॉल्ट नहीं है, तो यह अंतिम सेट कहां था।

कुछ लिनक्स वितरण एक सुरक्षा उपाय के रूप में / etc / vimrc या / usr / share / vim / vimrc में 'nomodeline' सेट करते हैं, भले ही 'modeline' के साथ सुरक्षा समस्याएं लंबे समय से तय की गई हों।


modeline अंतिम सेट ~ / .vimrc
juanpablo

। सुरक्षा के लिए, मैं अपने ~ / .vimrc औ BufNewFile, BufRead * उपनाम सेट filetype = श में जोड़ने के लिए modeline बदल
juanpablo

उन सभी को लंबे समय से तय नहीं किया गया है। github.com/numirias/security/blob/master/doc/…
duckbrain

@ डकब्रेन यह गारंटी देना बुनियादी रूप से असंभव है कि सभी सुरक्षा मुद्दे कभी भी इतने लंबे समय तक तय किए गए हैं जब तक कि बहुत ही डेटा में डेटा को देखकर कोड द्वारा निष्पादित किए जाने वाले एम्बेडेड निर्देशों को शामिल करना कभी भी संभव हो। यही कारण है कि कीथ बायोलॉजिकल एनवीआई के लिए प्रलेखन ने हमेशा कहा है modelinesकि विकल्प को लागू किया गया है और यह कभी नहीं होगा। यह पीडीएफ-वर्ड, एक्सेल, और सी एंड एंड सी में चलाने के लिए फ़ाइल-एम्बेडेड कमांड या मैक्रो निर्देशों से उपजी सभी सुरक्षा कीड़े की तरह है।
tchrist

14

मैं इस अन्य उत्तर में एक पूर्ण डिबग चेकलिस्ट का वर्णन करता हूं ।

मैं वास्तव में इस पर स्टम्प्ड गया क्योंकि प्रलेखन है पूरी तरह से नहीं सच।

यह पता चला है कि संस्करण 8 (और शायद पहले) में आप setअपने मॉडल में शब्द का उपयोग नहीं कर सकते हैं । दस्तावेज़ीकरण "होने के रूप में" दूसरा रूप बताता है /* vim: set ai tw=75: */लेकिन यह काम नहीं करता है। आपको "पहले फ़ॉर्म" का उपयोग करना होगा// vim: ai tw=75

नोट: आप उन दोनों प्रकार के टिप्पणी संकेतकों का उपयोग कर सकते हैं। या कोई भी नहीं।


यह सभी vim इंस्टॉल के लिए जरूरी नहीं है। यह फॉर्म setमेरे लिए ठीक 8.0 vim पर काम करता है (हालाँकि 7.4 पर नहीं)। यह भी ध्यान देने योग्य है कि दूसरे रूप के साथ // vim: ai tw=75, पंक्ति के अंत में कोई अन्य वर्ण नहीं हो सकता है, या विम मॉडल की शिकायत और अनदेखी करेगा।
जोश

इसे निश्चित रूप से बग (या पुराने दस्तावेज़ों के रूप में) के रूप में रिपोर्ट किया जाना चाहिए। मैंने पुन: प्रस्तुत किया VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von pkg-vim-maintainers@lists.alioth.debian.org Übersetzt von pkg-vim-maintainers@lists.alioth.debian.org Riesige Version mit GTK2-GNOME GUI. (अंतिम पंक्तियों का अर्थ है ... , द्वारा संकलित ... , विशाल संस्करण ... )।
LittleByBlue

मैंने इसे मेलिंग सूची पर संबोधित करने की कोशिश की। वे असहमत थे।
ब्रूनो ब्रोंस्की

@BrunoBronosky क्या आपके पास मेल थ्रेड का लिंक है? उनके तर्क को पढ़ना चाहेंगे।
ग्रेवॉल्फ

यहां धागे की एक कड़ी दी गई है। group.google.com/d/msg/vim_dev/aFh3X0etB7c/zl0Vi-MuFQAJ मैं वास्तव में उनके तर्क को समझने में समय नहीं लगाता
ब्रूनो ब्रोंस्की

11

set modelines=1 (या किसी भी गैर-0 मान) में मेरे ~ / .vimrc ने इसे मेरे लिए काम किया।


5
यह भी कोई प्रभाव नहीं अगर modelineसेट नहीं है (जो कि विम में डिफ़ॉल्ट रूप से है जब तक आप रूट नहीं होते हैं)
kynan

जिंटू के पास सभी सिस्टम कमजोरियों के कारण सिस्टम-वाइड हैं set nomodeline, /etc/vimrcजो कि विम में संभाल रहे हैं।
मैटबियानको

मेरे मामले में, मुझे modelinesगैर-शून्य मान पर भी सेट करना पड़ा । मदद कहती है कि डिफ़ॉल्ट है 5, इसलिए मैंने इसे सेट किया है और इसने मेरे लिए चाल चली है। द स्टेट्स If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.
बेन

9

~ / .vimrc में आपको निम्नलिखित सेट करने होंगे:

set nocompatible 
filetype plugin on
set modeline 

डेबियन 9 में वे लाइनें काम करती हैं। धन्यवाद!
कैलिगारी

7

~/.vimrcमेरे फ़नटू लिनक्स बॉक्स पर मेरे लिए काम करने के लिए बस निम्नलिखित जोड़ना :

set modeline

मैक में काम नहीं करता है!
शुवा

1

चूंकि यह खोजों में आता है:

मुझे भी यही समस्या थी:

# vim: set filetype=sh:

काम नहीं किया, जिसके परिणामस्वरूप ft = conf भी। मेरे ~ / .bash_alias में मॉडल के बिना, फीट खाली है, इसलिए कुछ बदलता है।

जबकि

# vim: filetype=sh:

काम किया। अंतिम ":" उपस्थिति अप्रासंगिक लगती है।

मैं रिकॉर्ड के लिए एक Vim8 पीसा संस्करण के साथ OSX पर हूँ।

यह अजीब है क्योंकि दोनों के मॉडल की मदद से

[text]{white}{vi:|vim:|ex:}[white]{options}

तथा

[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]

समर्थन प्रतीत होता है।

का उत्पादन

verbose set ft?

"vim: filetype = sh" के साथ है

filetype=sh
      Last set from modeline

बिना मॉडल के:

filetype=

"विम: सेट फिलाटाइप = श" के साथ

filetype=conf
     Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim

मेरे विचार में कहीं न कहीं इसका साइड इफेक्ट हो सकता है, लेकिन गैर-संगत मॉडलाइन सिंटैक्स केवल एक ही है जो मेरे लिए उम्मीद के मुताबिक काम करता है।


1

/usr/share/vim/vim80/debian.vimसे vim-commonपर डेबियन-आधारित distros से अक्षम modelineडिफ़ॉल्ट रूप से।

" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline

आपको modelineअपनी .vimrcया ~/.vim/vimrcफ़ाइल में स्पष्ट रूप से सक्षम करना होगा ।

set modeline

0

ज्यादातर शायद यही कारण है कि मॉडलाइन अक्षम होने के कारण।

मैं उस के आसपास काम करता हूं:

  1. किसी भी सुरक्षा समस्याओं से बचने के लिए इसे सामान्य रूप से अक्षम रखना।
  2. Securemodelines प्लगइन स्थापित करना ।
  3. केवल मेरे द्वारा उपयोग किए जाने वाले मॉडल का श्वेत सूचीकरण।

इस मामले में, डिफ़ॉल्ट श्वेतसूचीबद्ध आदेश शामिल हैं filetype

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