Vim Modes · 5 min read · Jan 21, 2026

Modos Compatíveis e Não Compatíveis no Vim

Até agora, em nossos tutoriais centrados no Vim, discutimos o recurso Modeline do editor, bem como como o conjunto de recursos do Vim pode ser expandido usando plugins. No entanto, como todos sabemos, o Vim oferece uma infinidade de recursos embutidos; então, levando a discussão adiante, neste tutorial, discutiremos os modos disponíveis nos quais o editor pode ser iniciado.

Mas antes de fazermos isso, observe que todos os exemplos, comandos e instruções mencionados neste tutorial foram testados no Ubuntu 14.04, e a versão do Vim que usamos é 7.4.

Para entender corretamente os modos do Vim mencionados, você primeiro terá que entender um aspecto importante do processo de inicialização do editor.

vimrc do sistema e local

O aspecto em questão é: quando o Vim é iniciado, um arquivo ‘vimrc’ de nível de sistema é buscado pelo editor para realizar inicializações padrão em todo o sistema.

Esse arquivo geralmente está localizado no caminho $VIM/vimrc em seu sistema, mas se esse não for o caso, você pode encontrar a localização exata executando o comando :version dentro do Vim. Por exemplo, no meu caso, aqui está o trecho relevante da saída que o comando produziu:

...
...
...
arquivo vimrc do sistema: "$VIM/vimrc"  
arquivo vimrc do usuário: "$HOME/.vimrc"  
2º arquivo vimrc do usuário: "~/.vim/vimrc"  
arquivo exrc do usuário: "$HOME/.exrc"  
valor de fallback para $VIM: "/usr/share/vim"  
...
...
...

Portanto, o arquivo ‘vimrc’ do sistema está de fato localizado em $VIM/vimrc , mas eu verifiquei que a variável de ambiente $VIM não está definida na minha máquina. Então, nesse caso - como você pode ver na saída acima - há um valor de fallback para $VIM, que no meu caso é */usr/share/vim*. Quando tentei procurar por ‘vimrc’ nesse caminho, observei que o arquivo está presente. Então, esse é o meu vimrc do sistema, que - como mencionei anteriormente - é lido quando o Vim é iniciado.

Depois que esse vimrc do sistema é analisado, o editor procura um arquivo ‘vimrc’ específico do usuário (ou local). A ordem de busca pelo vimrc local é: variável de ambiente VIMINIT, $HOME/.vimrc, variável de ambiente EXINIT e um arquivo chamado ‘exrc’. Normalmente, é o $HOME/.vimrc ou ~/.vimrc que existe e é tratado como vimrc local.

De que compatibilidade estamos falando

Como estamos discutindo os modos compatíveis e não compatíveis do Vim, vale a pena saber que tipo de compatibilidade esses modos habilitam e desabilitam. Para isso, deve-se primeiro estar ciente de que Vim é uma forma abreviada de V i IM provado, e como o nome completo sugere, o editor é uma versão aprimorada do editor Vi.

Por aprimorada, o que se quer dizer é que o conjunto de recursos que o Vim oferece é maior do que o do Vi. Para uma melhor compreensão da diferença entre os dois editores, dirija-se aqui.

Assim, ao discutir os modos compatíveis e não compatíveis do Vim, a compatibilidade da qual estamos falando é a compatibilidade do Vim com o Vi. Quando executado em modo compatível, a maioria das melhorias e aprimoramentos do Vim é desativada. No entanto, tenha em mente que, neste modo, o Vim não simplesmente emula o Vi - o modo basicamente define algumas opções padrão para o funcionamento do editor Vi.

O modo não compatível - dispensa apresentações - faz com que o Vim funcione sem ser compatível com o Vi, tornando todas as suas melhorias/aprimoramentos/recursos disponíveis para o usuário.

Como habilitar/desabilitar esses modos?

Tente executar o comando :help compatible no Vim, e você deve ver a seguinte sintaxe:

'compatible' 'cp' boolean (padrão ligado, desligado quando um |vimrc| ou |gvimrc|  
 arquivo é encontrado)

Portanto, a descrição diz que o modo compatível está ATIVADO por padrão, mas é desligado quando um arquivo vimrc é encontrado. Mas de qual vimrc estamos falando? A resposta é vimrc local. Mergulhe nos detalhes que o comando :help compatible oferece e você encontrará a seguinte linha, que deve esclarecer as coisas:

Efetivamente, isso significa que quando um arquivo |vimrc| ou |gvimrc| existe, o Vim usará os padrões do Vim, caso contrário, usará os padrões do Vi. (*Nota: Isso não acontece para o vimrc ou gvimrc de nível de sistema, nem para um arquivo dado com o argumento |-u|*).

Então, o que realmente acontece é que, sempre que o Vim é iniciado, ele primeiro analisa o arquivo vimrc do sistema - nesse momento, o modo compatível está ATIVADO por padrão. Agora, sempre que um vimrc do usuário (ou local) é encontrado, o modo não compatível é ativado. O comando :help compatible-default deixa isso bem claro:

Quando o Vim inicia, a opção 'compatible' está ativada. Isso será usado quando o Vim iniciar suas inicializações. Mas assim que um arquivo vimrc do usuário for encontrado, ou um arquivo vimrc no diretório atual, ou a variável de ambiente "VIMINIT" estiver definida, ela será definida como 'nocompatible'.

Caso você queira substituir o comportamento padrão e ativar o modo não compatível quando o editor começa a analisar o arquivo vimrc do sistema, isso pode ser feito adicionando o seguinte comando a esse arquivo no início:

:set nocompatible

Outros detalhes úteis

Aqui estão mais alguns detalhes úteis sobre esses modos:

Mas há um efeito colateral de definir ou redefinir 'compatible' no momento em que um arquivo .vimrc é encontrado: Mapeamentos são interpretados no momento em que são encontrados. Isso faz diferença ao usar coisas como "". Se os mapeamentos dependem de um certo valor de 'compatible', defina ou redefina antes de  
dar o mapeamento.
  
O comportamento acima pode ser substituído das seguintes maneiras:  
- Se o argumento de linha de comando "-N" for dado, 'nocompatible' será usado, mesmo quando nenhum arquivo vimrc existir.  
- Se o argumento de linha de comando "-C" for dado, 'compatible' será usado, mesmo quando um arquivo vimrc existir.  
- Se o argumento "-u {vimrc}" for usado, 'compatible' será usado.  
- Quando o nome do executável termina em "ex", então isso funciona como se o argumento "-C" tivesse sido dado: 'compatible' será usado, mesmo quando um arquivo vimrc existir. Isso foi feito para fazer o Vim se comportar como "ex", quando é iniciado como "ex".

Concordo, as chances são que você pode não se encontrar em uma situação em que terá que ativar o modo compatível com o Vi do Vim, mas isso não significa que você deve ser ignorante sobre o processo de inicialização do editor. Afinal, você nunca sabe quando esse conhecimento pode ser útil.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.