Tengo un archivo llamado .aliases
bash y zsh, pongo esta línea
# vim: set filetype=bash:
pero si hago
: echo &ft
yo obtengo conf
Tengo un archivo llamado .aliases
bash y zsh, pongo esta línea
# vim: set filetype=bash:
pero si hago
: echo &ft
yo obtengo conf
Respuestas:
Eso debería funcionar. Probé esa línea yo mismo y funcionó. Podría ser que su opción 'modeline' se haya configurado en 'nomodeline'. Intenta ejecutar esto y mira lo que obtienes.
:verbose set modeline?
Eso le dirá el valor de la opción 'modeline' y, si no es la predeterminada, dónde se configuró por última vez.
Algunas distribuciones de Linux establecen 'nomodeline' en / etc / vimrc o / usr / share / vim / vimrc como medida de seguridad, a pesar de que los problemas de seguridad con 'modeline' se han solucionado durante mucho tiempo.
modelines
que la opción no está implementada y que nunca lo estará. Esto es igual que todos los errores de seguridad derivados de comandos integrados en archivos o instrucciones de macro para ejecutar en PDF, Word, Excel, & c & c & c.
Describo una lista de verificación de depuración completa en esta otra respuesta .
Realmente me quedé perplejo con esto porque la documentación no es del todo cierta.
Resulta que en la versión 8 (y tal vez antes) no puede usar la palabra set
en su línea de modo. La documentación describe "la segunda forma" como tal, /* vim: set ai tw=75: */
pero esto no funciona. Tienes que usar "la primera forma"// vim: ai tw=75
Nota: Puede usar cualquiera de esos tipos de indicadores de comentarios. O ninguno en absoluto.
set
funciona bien para mí en vim 8.0 (aunque no en 7.4). También vale la pena señalar que con la segunda forma // vim: ai tw=75
, no puede haber otros caracteres al final de la línea, o vim se quejará e ignorará la línea de modelo.
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.
(Las últimas líneas significan modificado por ... , compilado por ... , versión enorme ... ).
set modelines=1
(o cualquier valor que no sea 0) en mi ~ / .vimrc lo hizo funcionar para mí.
modeline
no se establece también (que es por defecto en Vim a menos que sea root)
set nomodeline
en /etc/vimrc
debido a todas las vulnerabilidades con modelines manipulación en vim.
modelines
un valor distinto de cero. La ayuda dice que el valor predeterminado es 5
, así que eso es lo que configuré y eso me funcionó. Los estados que,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.
Agregando solo lo siguiente a mi ~/.vimrc
trabajo para mí en mi caja Funtoo Linux:
set modeline
Dado que esto parece aparecer en las búsquedas:
Yo tuve el mismo problema:
# vim: set filetype=sh:
no funcionó, lo que resultó en ft = conf también. sin la línea de modelo en mi ~ / .bash_alias, ft está vacío, por lo que algo cambia.
mientras
# vim: filetype=sh:
trabajó. la última presencia ":" parece ser irrelevante.
Estoy en OSX con una versión elaborada de Vim8, para los registros.
es raro porque de la ayuda modeline tanto
[text]{white}{vi:|vim:|ex:}[white]{options}
y
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
Parece ser compatible.
La salida de
verbose set ft?
con "vim: filetype = sh" es
filetype=sh
Last set from modeline
sin modeline:
filetype=
con "vim: set filetype = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Puede haber un efecto secundario en alguna parte de mi conf, pero la sintaxis de modeline no compatible es la única que funciona como se esperaba para mí.
/usr/share/vim/vim80/debian.vim
desde vim-common
en distribuciones basadas en Debian se deshabilita modeline
por defecto.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Usted tiene que permitir modeline
explícitamente en su .vimrc
o ~/.vim/vimrc
archivo.
set modeline
Lo más probable es que se deba a que la línea de modelo está deshabilitada.
Yo trabajo alrededor de eso por:
En este caso, los comandos predeterminados de la lista blanca incluyen filetype
.