modelin vim'de çalışmıyor


19

.aliasesBash ve zsh adında bir dosyam var, bu satırı koydum

# vim: set filetype=bash: 

ama yaparsam

: echo &ft

alırım conf


Burada her şeyi denedim ve hiçbir şey işe yaramadı. 18 yıldır vim kullanıyorum. Bu modelin ilk kez çalışmasını başaramadım.
Bruno Bronosky

Anladım. Aşağıda cevapla. superuser.com/a/1174296/3376
Bruno Bronosky

Yanıtlar:


28

Bu işe yaramalı. O çizgiyi kendim denedim ve işe yaradı. 'Modeline' seçeneğiniz 'nomodeline' olarak ayarlanmış olabilir. Bunu çalıştırmayı deneyin ve ne elde ettiğinizi görün.

:verbose set modeline?

Bu size 'modeline' seçeneğinin değerini ve varsayılan değilse son ayarlandığı yeri söyleyecektir.

'Linuxine' ile ilgili güvenlik sorunları uzun süredir giderilmiş olsa da, bazı Linux dağıtımları / etc / vimrc veya / usr / share / vim / vimrc içindeki 'nomodeline'ı güvenlik önlemi olarak belirlemiştir.


modeline Son set ~ / .vimrc
juanpablo

güvenlik için, bu ~ ~ .vimrc au BufNewFile, BufRead benim eklemek için modelini değiştirin. * takma adlar set filetype = sh
juanpablo 16:11


@duckbrain Tüm güvenlik sorunlarının, verilerin içindeki verilere bakarak kod tarafından yürütülecek gömülü talimatları dahil etmenin mümkün olduğu sürece giderildiğini garanti etmek temel olarak imkansızdır. Bu yüzden Keith Bostic'in nvi belgeleri her zaman modelinesseçeneğin uygulanmadığını ve asla olmayacağını söyledi. Bu, PDF, Word, Excel, & c & c & c'de çalıştırmak için dosyaya gömülü komutlardan veya makro talimatlarından kaynaklanan tüm güvenlik hataları gibidir.
tchrist

14

Bu diğer yanıtta tam bir hata ayıklama kontrol listesini açıklıyorum .

Çünkü GERÇEKTEN bu sefer şaşkına dönmüş dokümantasyon olduğunu tamamen değil gerçek.

Sürüm 8'de (ve belki de daha önce) set, modelinizdeki kelimeyi kullanamayacağınız ortaya çıkıyor . Dokümantasyon "ikinci form" u var olarak tanımlar, /* vim: set ai tw=75: */ancak bu işe yaramaz. "İlk formu" kullanmalısınız// vim: ai tw=75

Not: Bu tür yorum göstergelerinden herhangi birini kullanabilirsiniz. Ya da hiçbiri.


Bu tüm vim yüklemeleri için geçerli olmayabilir. setVim 8.0 ile form benim için iyi çalışıyor (7.4 olmasa da). Ayrıca ikinci formda // vim: ai tw=75, satırın sonunda başka karakterler bulunamayacağını veya vim'in modelini şikayet edip görmezden geleceğini belirtmek gerekir.
Josh

Bu kesinlikle bir hata (veya eski belgeler) olarak rapor edilmelidir. Üreme yaptım 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. (Son satırların anlamı ... , derlenmiş ... , büyük sürüm ... ).
LittleByBlue

Posta listesinde ele almaya çalıştım. Kabul etmediler.
Bruno Bronosky

@BrunoBronosky mail dizisine bağlantınız var mı? Onların gerekçelerini okumak istiyorum.
graywolf

İşte iş parçacığına bir bağlantı. groups.google.com/d/msg/vim_dev/aFh3X0etB7c/zl0Vi-MuFQAJ Sebeplerini anlamak için gerçekten zaman ayırmadım.
Bruno Bronosky

11

set modelines=1 (veya 0 olmayan bir değer) ~ / .vimrc içinde benim için çalıştı.


5
modelineAyrıca ayarlanmadıysa bunun bir etkisi yoktur (root değilseniz
Vim'de

Gentoo sistem genelinde sahip set nomodelineyılında /etc/vimrctüm nedeniyle vim taşıma kipsatırlarının ile açıkları.
MattBianco

Benim durumumda da modelinessıfırdan farklı bir değere ayarlamam gerekiyordu. Yardım varsayılan olduğunu söylüyor 5, bu yüzden bunu ayarladım ve bu benim için hile yaptı. Devletler,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.
Ben

9

~ / .vimrc içinde aşağıdakileri ayarlamanız gerekir:

set nocompatible 
filetype plugin on
set modeline 

Bu hatlar Debian 9'da çalışıyor. Teşekkürler!
caligari

7

~/.vimrcFuntoo Linux kutumda benim için çalıştığım şeye sadece aşağıdakileri eklemek :

set modeline

Mac'te çalışmıyor!
shuva

1

Bu aramalarda ortaya çıktığı için:

Aynı sorunu yaşadım:

# vim: set filetype=sh:

işe yaramadı, sonuçta ft = conf de ortaya çıktı. ~ / .bash_alias'ımdaki modelin olmadan, ft boş, bu yüzden bir şey değişir.

süre

# vim: filetype=sh:

çalıştı. son ":" varlığı önemsiz görünüyor.

Kayıtlar için Vim8 demlenmiş sürümü olan OSX'dayım.

garip çünkü hem modelinden hem de

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

ve

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

destekleniyor gibi görünüyor.

Çıktı

verbose set ft?

"vim: filetype = sh" ile

filetype=sh
      Last set from modeline

modelsiz:

filetype=

"vim: set filetype = sh" ile

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

Kıyametimde bir yerde bir yan etki olabilir, ancak uyumlu olmayan modelin sözdizimi benim için beklendiği gibi çalışan tek şeydir.


1

/usr/share/vim/vim80/debian.vimdan vim-commonüzerinde Debian tabanlı dağıtımlar devre dışı bırakır modeline, varsayılan olarak.

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

Dosyanızda veya dosyanızda modelineaçıkça etkinleştirmeniz gerekir ..vimrc~/.vim/vimrc

set modeline

0

Muhtemelen bunun nedeni modelin devre dışı kalmasıdır.

Ben bunun etrafında çalışıyorum:

  1. güvenlik sorunlarını önlemek için genellikle devre dışı bırakma.
  2. Secureemodelines eklentisini yükleme .
  3. Yalnızca kullandığım modeli beyaz listeye eklemek.

Bu durumda, varsayılan beyaz listedeki komutlar içerir filetype.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.