Eu tenho um arquivo chamado .aliases
bash e zsh, coloquei esta linha
# vim: set filetype=bash:
mas se eu fizer
: echo &ft
eu recebo conf
Eu tenho um arquivo chamado .aliases
bash e zsh, coloquei esta linha
# vim: set filetype=bash:
mas se eu fizer
: echo &ft
eu recebo conf
Respostas:
Isso deve funcionar. Eu mesmo tentei essa linha e funcionou. Poderia ser que sua opção 'modeline' tenha sido definida como 'nomodeline'. Tente executar isso e veja o que você recebe.
:verbose set modeline?
Isso informará o valor da opção 'modeline' e, se não for o padrão, onde foi a última configuração.
Algumas distribuições Linux definem 'nomodeline' em / etc / vimrc ou / usr / share / vim / vimrc como uma medida de segurança, mesmo que os problemas de segurança com 'modeline' tenham sido corrigidos.
modelines
que a opção não é implementada e que nunca será. Isso é como todos os bugs de segurança decorrentes de comandos incorporados a arquivos ou instruções de macro para serem executados em PDF, Word, Excel, & c & c & c.
Descrevo uma lista de verificação de depuração completa nesta outra resposta .
Eu realmente fiquei perplexo com isso porque a documentação não é totalmente verdadeira.
Acontece que na versão 8 (e talvez antes) você não pode usar a palavra set
em sua modelagem. A documentação descreve "o segundo formulário" como sendo, /* vim: set ai tw=75: */
mas isso não funciona. Você precisa usar "a primeira forma"// vim: ai tw=75
Nota: Você pode usar qualquer um desses tipos de indicadores de comentários. Ou nenhum.
set
funciona bem para mim no vim 8.0 (embora não no 7.4). Também é importante notar que, com a segunda forma // vim: ai tw=75
, não pode haver outros caracteres no final da linha, ou o vim irá reclamar e ignorar a modelagem.
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.
(As últimas linhas significam modificado por ... , compilado por ... , versão enorme ... ).
set modelines=1
(ou qualquer valor diferente de 0) no meu ~ / .vimrc o fez funcionar para mim.
modeline
não é também definido (que é por padrão no vim menos que você seja root)
set nomodeline
em /etc/vimrc
devido a todas as vulnerabilidades com modelines manipulação no vim.
modelines
um valor diferente de zero. A ajuda diz que o padrão é 5
, então é isso que eu defini e que fez o truque para mim. Os estados em 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.
Adicionando apenas o seguinte ao meu ~/.vimrc
trabalho para mim na minha caixa do Funtoo Linux:
set modeline
Como isso parece surgir nas pesquisas:
Eu tive o mesmo problema:
# vim: set filetype=sh:
não funcionou, resultando em ft = conf também. sem a modeline no meu ~ / .bash_alias, ft está vazio, então algo muda.
enquanto
# vim: filetype=sh:
trabalhou. a última presença ":" parece irrelevante.
Estou no OSX com uma versão Vim8, para os registros.
é estranho, porque a partir da modelagem ajuda ambos
[text]{white}{vi:|vim:|ex:}[white]{options}
e
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
parece ser suportado.
A saída de
verbose set ft?
com "vim: tipo de arquivo = sh" é
filetype=sh
Last set from modeline
sem modelagem:
filetype=
com "vim: set filetype = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Pode haver um efeito colateral em algum lugar do meu conf, mas a sintaxe da modeline não compatível é a única que funciona conforme o esperado para mim.
/usr/share/vim/vim80/debian.vim
das distros baseadasvim-common
no Debian desabilita modeline
por padrão.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Você precisa habilitar modeline
explicitamente em seu arquivo .vimrc
ou ~/.vim/vimrc
.
set modeline
Provavelmente, isso se deve à desativação da modelagem.
Eu trabalho em torno disso:
Nesse caso, os comandos padrão da lista de permissões incluem filetype
.