Ho un file chiamato .aliases
per bash e zsh, ho messo questa riga
# vim: set filetype=bash:
ma se lo faccio
: echo &ft
ottengo conf
Ho un file chiamato .aliases
per bash e zsh, ho messo questa riga
# vim: set filetype=bash:
ma se lo faccio
: echo &ft
ottengo conf
Risposte:
Dovrebbe funzionare. Ho provato quella linea da solo e ha funzionato. Potrei essere che la tua opzione "modeline" sia stata impostata su "nomodeline". Prova a eseguire questo e vedi cosa ottieni.
:verbose set modeline?
Questo ti dirà il valore dell'opzione 'modeline' e, se non il valore predefinito, dove è stato impostato l'ultima volta.
Alcune distribuzioni Linux impostano 'nomodeline' in / etc / vimrc o / usr / share / vim / vimrc come misura di sicurezza, anche se i problemi di sicurezza con 'modeline' sono stati risolti da tempo.
modelines
che l'opzione non è stata implementata e che non lo sarà mai. Questo è proprio come tutti i bug di sicurezza derivanti da comandi incorporati nel file o istruzioni macro da eseguire in PDF, Word, Excel, ecc.
Descrivo una checklist completa di debug in questa altra risposta .
Sono stato DAVVERO sconcertato su questo perché la documentazione non è del tutto vera.
Si scopre che nella versione 8 (e forse prima) non puoi usare la parola set
nella tua modeline. La documentazione descrive "il secondo modulo" come se fosse /* vim: set ai tw=75: */
ma questo non funziona. Devi usare "il primo modulo"// vim: ai tw=75
Nota: è possibile utilizzare uno di questi tipi di indicatori di commento. O niente affatto.
set
funziona bene per me su vim 8.0 (anche se non su 7.4). Vale anche la pena notare che con il secondo modulo // vim: ai tw=75
, non ci possono essere altri personaggi alla fine della riga, o vim si lamenterà e ignorerà la modina.
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.
(Le ultime righe significano modificate da ... , compilate da ... , versione enorme ... ).
set modelines=1
(o qualsiasi valore diverso da 0) nel mio ~ / .vimrc è riuscito a farlo funzionare per me.
modeline
non è impostato anche (che è di default in Vim a meno che tu non sia root)
set nomodeline
a /etc/vimrc
causa di tutte le vulnerabilità con la gestione dei modelli in vim.
modelines
un valore diverso da zero. L'aiuto dice che l'impostazione predefinita è 5
, quindi è quello che ho impostato e che ha fatto il trucco per me. Lo afferma che,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.
Aggiungendo solo quanto segue al mio ha ~/.vimrc
funzionato per me sul mio box Funtoo Linux:
set modeline
Dal momento che questo sembra apparire nelle ricerche:
Ho avuto lo stesso problema:
# vim: set filetype=sh:
non ha funzionato, risultando anche in ft = conf. senza la modeline nel mio ~ / .bash_alias, ft è vuoto, quindi qualcosa cambia.
mentre
# vim: filetype=sh:
lavorato. l'ultima presenza ":" sembra essere irrilevante.
Sono su OSX con una versione prodotta da Vim8, per la cronaca.
è strano perché dalla modeline aiutano entrambi
[text]{white}{vi:|vim:|ex:}[white]{options}
e
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
sembra essere supportato.
L'output di
verbose set ft?
con "vim: filetype = sh" è
filetype=sh
Last set from modeline
senza modeline:
filetype=
con "vim: set filetype = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Potrebbe esserci un effetto collaterale da qualche parte nella mia configurazione, ma la sintassi della modelina non compatibile è l'unica che funziona come previsto per me.
/usr/share/vim/vim80/debian.vim
da vim-common
su Le distribuzioni basate su Debian disabilitano modeline
di default.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Devi abilitare modeline
esplicitamente nel tuo .vimrc
o ~/.vim/vimrc
file.
set modeline
Molto probabilmente ciò è dovuto al fatto che la modelina è disabilitata.
Ci lavoro attorno a:
In questo caso, includono i comandi della whitelist predefiniti filetype
.