Vim Modeline · 4 min read · Nov 14, 2025

Como fazer alterações de configuração específicas de arquivo no Vim usando Modeline

Embora os plugins sejam, sem dúvida, uma das maiores forças do Vim, várias outras funcionalidades fazem dele um dos editores de texto/IDEs mais poderosos e ricos em recursos disponíveis para os usuários do Linux hoje. Uma dessas funcionalidades é a capacidade de fazer alterações de configuração específicas de arquivo. Essa capacidade pode ser acessada usando o recurso Modeline do editor.

Neste artigo, discutiremos como você pode usar o recurso Modeline do Vim com exemplos fáceis de entender.

Mas antes de começarmos a fazer isso, vale a pena mencionar que todos os exemplos, comandos e instruções mencionados neste tutorial foram testados no Ubuntu 16.04 - Ubuntu 22.04.

VIM Modeline

Uso

Como já mencionamos, o recurso Modeline do Vim permite que você faça alterações específicas de arquivo. Por exemplo, suponha que você queira substituir todas as tabulações usadas em um determinado arquivo do seu projeto por espaços e garantir que todos os outros arquivos não sejam afetados por essa alteração. Este é um caso de uso ideal onde o Modeline ajuda você no que deseja fazer.

Então, o que você pode fazer é colocar a seguinte linha no início ou no final do arquivo em questão:

# vim: set expandtab:

Há grandes chances de que, se você tentar fazer o exercício mencionado acima para testar o caso de uso em sua máquina Linux, as coisas não funcionem como esperado. Se esse for o caso, não se preocupe, pois o recurso Modeline precisa ser ativado primeiro em alguns casos (ele está desativado por padrão em sistemas como Debian, Ubuntu, Gentoo e OSX por razões de segurança).

Para habilitar o recurso, abra o arquivo .vimrc (localizado no seu diretório home) e adicione a seguinte linha a ele:

set modeline

Agora, sempre que você inserir uma tabulação e salvar o arquivo (onde o comando expandtab do modeline foi inserido), a tabulação será automaticamente convertida em espaços em branco.

Vamos considerar outro caso de uso. Suponha que o espaço de tabulação padrão no Vim esteja definido como 4, mas para um arquivo específico, você queira aumentá-lo para 8. Para isso, você precisa adicionar a seguinte linha no início ou no final do arquivo:

// vim: noai:ts=8:

Agora tente inserir uma tabulação e você verá que o número de espaços que ela cobre será 8.

Você pode ter notado que eu disse que esses comandos de modeline precisam ser inseridos em algum lugar perto do topo ou da parte inferior do arquivo. Se você está se perguntando por que isso é assim, a razão é que o recurso foi projetado dessa forma. As seguintes linhas (retiradas da documentação oficial do Vim) devem deixar isso mais claro:

O modeline não pode estar em qualquer lugar do arquivo: ele deve estar nas primeiras ou últimas linhas. A localização exata onde o vim verifica o modeline é controlada pela variável modelines; veja :help modelines . Por padrão, está definido para 5 linhas.

E aqui está o que o comando :help modelines (referido nas linhas acima) diz:

Se 'modeline' estiver ativado, 'modelines' dá o número de linhas que são verificadas para comandos set. Se 'modeline' estiver desativado ou 'modelines' for zero, nenhuma linha é verificada.

Tente colocar o comando modeline além do intervalo padrão de 5 linhas (seja a partir da parte inferior ou do topo) e você notará que os espaços de tabulação voltarão ao padrão do Vim - no meu caso, isso é 4 espaços.

No entanto, você pode mudar esse comportamento se quiser, usando o seguinte comando no seu arquivo .vimrc.

set modelines=[novo-valor]

Por exemplo, eu aumentei o valor de 5 para 10.

set modelines=10

Isso significa que agora posso colocar o comando modeline em qualquer lugar entre as primeiras ou últimas 10 linhas do arquivo.

Seguindo em frente, a qualquer momento, enquanto edita um arquivo, você pode inserir o seguinte (com o editor Vim no modo de comando) para ver as configurações atuais relacionadas ao modeline, bem como onde foram definidas pela última vez.

:verbose set modeline? modelines?

Por exemplo, no meu caso, o comando acima produziu a seguinte saída:

 modeline  
      Última configuração de ~/.vimrc  
 modelines=10  
      Última configuração de ~/.vimrc

Aqui estão alguns dos pontos importantes que você precisa saber sobre o recurso Modeline do Vim:

  • Este recurso está habilitado por padrão para o Vim executando em modo nocompatible (não compatível com Vi), mas algumas distribuições notáveis do Vim desativam essa opção no vimrc do sistema por motivos de segurança.
  • O recurso está desativado por padrão ao editar como root (se você abriu o arquivo usando ‘sudo’, então não há problema - o recurso funciona).
  • Com ‘ set', o modeline termina no primeiro dois-pontos que não segue uma barra invertida. E sem ‘ set', nenhum texto pode seguir as opções. Por exemplo, / vim: noai:ts=4:sw=4 / é um modeline inválido.

Preocupações de Segurança

Infelizmente, o recurso Modeline do Vim pode ser usado para comprometer a segurança. De fato, vários problemas relacionados à segurança do Modeline foram relatados no passado, incluindo injeção de comandos de shell, execução de comandos arbitrários, acesso não autorizado e mais. Concordo que a maioria deles são antigos e já teriam sido corrigidos, mas isso dá uma ideia de que o recurso Modeline poderia ser mal utilizado por hackers.

Conclusão

Modeline pode ser um recurso avançado do editor Vim, mas não é muito difícil de entender. Não há dúvida de que há uma pequena curva de aprendizado envolvida, mas isso não é muito a pedir, dado quão útil é o recurso. Claro, há preocupações de segurança, o que significa que você deve pesar suas opções antes de habilitar e usar o recurso.

Você já usou o recurso Modeline? Como foi sua experiência? Compartilhe conosco (e com toda a comunidade HowtoForge) nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.