A diferença nas suas capturas de tela é devida ao uso do% vim filetype
para os dois arquivos que estão sendo editados. O motivo para isso é provavelmente o nome do arquivo temporário que sudoedit
cria ao editar.
Ao comparar diferenças de realce de sintaxe entre duas instâncias do Vim, a primeira coisa a procurar é a variável filetype
que o Vim define automaticamente. Você pode verificar o que o atual filetype
está executando
:set filetype?
no Vim. Você também pode consultar a configuração como ft
para breve. O Vim deve mostrar um resultado na linha de status, como
filetype=sh
O Vim tem um script grande de heurística para definir o filetype
automaticamente com base no nome do arquivo ou, às vezes, no conteúdo do arquivo. Se o nome do arquivo for /etc/profile
, por exemplo, o Vim definirá o filetype
para sh
automaticamente.
Quando você usa sudoedit
para editar /etc/profile
, um arquivo temporário é criado, conforme mostrado na lista ps
. Como o nome desse arquivo não corresponde a nenhuma das regras de script do Vim, ele tenta definir o filetype
com base no conteúdo. Com base na captura de tela, imagino que o Vim tenha definido o filetype
para conf
, ou seja, um arquivo de configuração genérico.
Soluções possíveis
Manual
Existem algumas maneiras de lidar com isso. Primeiro, você pode definir filetype
manualmente toda vez que editar um arquivo. Para forçar a sintaxe sh
a ser usada, execute
:set filetype=sh
As regras de realce de sintaxe devem ser recarregadas e aplicadas imediatamente.
Sugestões de sintaxe
Outra maneira é adicionar uma sugestão ao Vim no conteúdo dos arquivos que você edita com freqüência e que um filetype
específico deve ser definido. Por exemplo, se a primeira linha de um arquivo for #!/bin/sh
, o Vim usará a sintaxe apropriada, independentemente do nome do arquivo. Observe que isso faz com que /etc/profile
pareça um script de shell executável, mesmo que não seja, portanto, você pode ou não querer fazer algo assim em seu sistema.
Vim Modelines
Uma terceira maneira é forçar o Vim a definir a variável filetype
usando o que o Vim chama de "modelines". Consulte :help modeline
para mais informações. Isso envolve adicionar um comentário ao seu arquivo que contém uma string que o Vim pode analisar para comandos. De volta ao seu exemplo com /etc/profile
, adicionando um comentário como
# vim: set filetype=sh
instruiria o Vim a definir o filetype
corretamente quando o arquivo for editado, independentemente de seu nome.