Estou tentando fazer com que o Vim destaque caracteres não ASCII. Existe uma configuração disponível, padrão de pesquisa regex ou plug-in para fazer isso?
153
Usando o intervalo em uma []
classe de caracteres em sua pesquisa, você deve poder excluir o intervalo de caracteres hexadecimais ASCII, destacando, portanto, (supondo que você tenha hlsearch
ativado) todos os outros caracteres fora do intervalo ASCII:
/[^\x00-\x7F]
Isso fará uma correspondência negativa (via [^]
) para caracteres entre ASCII 0x00
e ASCII 0x7F
(0-127) e parece funcionar no meu teste simples. Para ASCII estendido, é claro, estenda o intervalo até em \xFF
vez de \x7F
usar /[^\x00-\xFF]
.
Você também pode expressá-lo em decimal via \d
:
/[^\d0-\d127]
Se você precisar de algo mais específico, como exclusão de caracteres não imprimíveis, precisará adicionar esses intervalos à classe de caracteres []
.
/[^\d0-\d127]
Sim, há um recurso nativo para realçar as seqüências correspondentes. Dentro do Vim, faça:
syn-match
define uma sequência que corresponde a cair em um grupo.highlight
define a cor usada pelo grupo. Pense no realce da sintaxe para seus arquivos vimrc.Portanto, você pode usar os comandos abaixo no seu arquivo .vimrc:
fonte
:
na frente dos comandos no seu vimrc.termbg
não parece ser um comando legal no VIM 7.3, instalado no Ubuntu Server 12.10.termbg
, não parece ser um parâmetro legal no VIM 7.3, instalado no Ubuntu Server 12.10.term
não pode ter cor de fundo, enquanto o terminal coloridocterm
pode.Para outras pessoas (a partir de agora menos azaradas) que acabam aqui por meio de um mecanismo de pesquisa e não conseguem destacar os caracteres não ASCII, tente o seguinte (coloque isso no seu .vimrc):
Isso tem o benefício adicional de não colidir com definições de sintaxe regulares (tipo de arquivo [extensão de arquivo]).
fonte
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continue
Linux mint 17.3containedin=ALL
-lo ao final da última linhaau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
. Acho que a pena distração-lo (quando unicode é permitido), a resposta original aqui se não pegar coisas como código não-ascii dentro de umaif
declaração ...autocmd BufRead ....
em uma autogroup no vim, a menos que você tenha uma boa razão para não ...Esse regex também funciona. Foi o primeiro hit do google para "vim remove caracteres não-ascii" do briceolion.com e
:set hlsearch
destacará:fonte
:%s/[^[:alnum:][:punct:][:space:]]//gc
que destaca primeiro e depois a substitui.Se você também estiver interessado nos caracteres não imprimíveis , use este:
/[^\x00-\xff]/
Eu o uso em uma função:
fonte
enc
parafenc
. Alterei a codificação porque minha codificação padrão é (foi em 2013) latin1. A função não destaca os caracteres não imprimíveis se o conjunto de caracteres for latin1. Veja também o destaque: você deve ter a chaveERROR
no seu arquivo de sintaxe de cores. Este é o meu:hi Error guifg=Black guibg=Orange
Com base nas outras respostas sobre este tópico e na resposta que obtive aqui , adicionei isso ao meu
.vimrc
, para que eu possa controlar o destaque não-ascii digitando<C-w>1
. Ele também mostra comentários internos, embora você precise adicionar o grupo de comentários para cada sintaxe de arquivo que usará. Ou seja, se você editar um arquivo zsh, precisará adicionarzshComment
à linhacaso contrário, ele não mostrará o caractere não-ascii (você também pode definir o contido em = ALL se quiser ter certeza de mostrar caracteres não-ascii em todos os grupos). Para verificar como o comentário é chamado em um tipo de arquivo diferente, abra um arquivo do tipo desejado e insira
:sy
no vim, depois pesquise nos itens da sintaxe pelo comentário.fonte
De alguma forma, nenhuma das respostas acima funcionou para mim.
Então eu usei
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Ele mantém a maioria dos personagens que me interessam.
fonte
Alguém já respondeu à pergunta. No entanto, para outros que ainda estão tendo problemas, aqui está outra solução para destacar caracteres não-ascii nos comentários (ou qualquer grupo de sintaxe no assunto). Não é o melhor, mas é uma correção temporária.
Pode-se tentar:
Isso misturou peças de outras soluções. Você pode remover
contained
, mas, da documentação, pode haver um problema potencial de se recuperar novamente (como eu entendo). Para visualizar outros padrões definidos, asyn-contains
seção o conteria.Problema replicado de: defina o item para destacar maior prioridade no vim
fonte