Remover ordem de encomenda (BOM)

7

fundo

Execute arquivos SQL usando pgsql que foram editados com o gVim no Windows.

Problema

O caractere de BOM causa erros de sintaxe com pgsql. Eu gostaria de editar arquivos usando o gVim e, quando salvo, não tenho mais um caractere de BOM. Se o arquivo tiver o caractere BOM, salvá-lo manterá o caractere BOM, o que não é desejado.

Idéias

Alterou as configurações ( Editar »Configurações de Inicialização ) do seguinte modo:

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
au BufReadPre set nobomb
au BufReadPre setlocal nobomb
au BufReadPre setglobal nobomb
au BufReadPost set nobomb 
au BufReadPost setlocal nobomb 
au BufReadPost setglobal nobomb 
au BufWritePre set nobomb
au BufWritePre setlocal nobomb
au BufWritePre setglobal nobomb
au BufWritePost set nobomb
au BufWritePost setlocal nobomb
au BufWritePost setglobal nobomb
set encoding=utf-8 nobomb    " BOM often causes trouble
setlocal nobomb
setglobal nobomb

Não funcionou. Ainda tenho que digitar :set nobomb para remover explicitamente a lista de materiais.

Questão

Como você configura o gVim para que a BOM seja removida imediatamente após o carregamento do arquivo, sem ter que se lembrar de digitar :set nobomb toda vez? (Eu quero definir e esquecer isso.)

Obrigado!

Dave Jarvis
fonte

Respostas:

8

Tente isto:

au BufWritePre set nobomb
Dennis Williamson
fonte
1
au BufWritePre * setlocal nobomb, você precisa honrar o {pat} argumento (que é 'set' no exemplo de dennis) ...
akira
2

Adicione isto ao seu .vimrc :

au BufWritePre * setlocal nobomb

(Levado de um comentário para outra resposta, pois esta é realmente uma solução melhor.)

Hermes
fonte
@zagrimsan A outra solução é um pouco diferente. Uma solução idêntica é postada como comentário e não como resposta. Pessoalmente, quando chego a um tópico, gostaria de ver uma resposta adequada que eu possa usar sem ter que ler todos os comentários. Esta resposta é apenas isso. Eu acho que você queria me derrubar, mas em vez disso você votou a melhor resposta neste tópico.
Hermes