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.
@duckbrain É fundamentalmente impossível garantir que todos os problemas de segurança já tenham sido corrigidos, desde que seja possível incluir instruções incorporadas a serem executadas pelo código que analisa os dados nos próprios dados. É por isso que a documentação do nvi de Keith Bostic sempre disse modelinesque 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.
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 setem 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.
Isso não é necessariamente verdade para todas as instalações do vim. O formulário com setfunciona 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.
21717 Josh
Definitivamente, isso deve ser relatado como um bug (ou como documentação desatualizada). Reproduzi em 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 [email protected] Übersetzt von [email protected] Riesige Version mit GTK2-GNOME GUI. (As últimas linhas significam modificado por ... , compilado por ... , versão enorme ... ).
LittleByBlue 10/09
Eu tentei abordá-lo na lista de discussão. Eles discordaram.
Bruno Bronosky
@BrunoBronosky você tem um link para o tópico do email? Gostaria de ler o seu raciocínio.
Isto não tem efeito se modelinenão é também definido (que é por padrão no vim menos que você seja root)
Kynan
Gentoo tem um sistema de largura set nomodelineem /etc/vimrcdevido a todas as vulnerabilidades com modelines manipulação no vim.
23814 MattBianco
No meu caso, também tive que definir modelinesum 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.
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.vimdas distros baseadasvim-common no Debian desabilita modelinepor 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 modelineexplicitamente em seu arquivo .vimrcou ~/.vim/vimrc.
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.
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.
fonte
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.
fonte
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 [email protected] Übersetzt von [email protected] 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.fonte
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.
Em ~ / .vimrc, você precisa definir o seguinte:
fonte
Adicionando apenas o seguinte ao meu
~/.vimrc
trabalho para mim na minha caixa do Funtoo Linux:fonte
Como isso parece surgir nas pesquisas:
Eu tive o mesmo problema:
não funcionou, resultando em ft = conf também. sem a modeline no meu ~ / .bash_alias, ft está vazio, então algo muda.
enquanto
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
e
parece ser suportado.
A saída de
com "vim: tipo de arquivo = sh" é
sem modelagem:
com "vim: set filetype = sh"
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.
fonte
/usr/share/vim/vim80/debian.vim
das distros baseadasvim-common
no Debian desabilitamodeline
por padrão.Você precisa habilitar
modeline
explicitamente em seu arquivo.vimrc
ou~/.vim/vimrc
.fonte
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
.fonte