Não consigo encontrar uma maneira de fazer o Vim mostrar todos os espaços em branco como um personagem. Tudo o que encontrei foi sobre guias, espaços à direita etc.
772
Não consigo encontrar uma maneira de fazer o Vim mostrar todos os espaços em branco como um personagem. Tudo o que encontrei foi sobre guias, espaços à direita etc.
:set list
. Isso não responde à nossa pergunta. (Para outros participantes: a resposta de mrucci abaixo é útil, embora não seja uma solução real .) #list
elistchars
consideram que um espaço está seguindo diretamente uma guia. Seria quase invisível nessa situação. Concordo que você pode pegar a maioria das situações, mas se seria bom ter um destaque adequado de todos os espaços.Respostas:
Como outros já disseram, você pode usar
que, em combinação com
exibir caracteres invisíveis.
Agora, não há uma opção explícita que você possa usar para mostrar espaços em branco, mas nos listchars, você pode definir um caractere para mostrar tudo, mas espaços em branco. Por exemplo, o meu se parece com isso
então agora depois de usar
tudo o que não é mostrado explicitamente como outra coisa é, na verdade, um espaço em branco antigo e claro.
Como de costume, para entender como
listchars
funciona, use a ajuda. Ele fornece ótimas informações sobre quais caracteres podem ser exibidos (como espaço à direita, por exemplo) e como fazê-lo:Pode ser útil adicionar uma alternância para que você possa ver as alterações na metade da edição facilmente (fonte: VIM: set list! Como uma alternância em .vimrc ):
fonte
.vimrc
arquivo, para que essa maneira bonita de exibir caracteres invisíveis possa ser facilmente ativada a:set list
qualquer momento (sem pesquisar esta página novamente).A partir do patch 7.4.710, agora você pode definir um caractere para mostrar no lugar do espaço usando listchars!
Portanto, para mostrar TODOS os caracteres de espaço em branco como um caractere, você pode fazer o seguinte:
Discussão na lista de discussão: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
fonte
:help listchars
para verificar se "espaço" é uma opção válida para "listchars". Caso contrário, atualize seu vim para o patch @brettanomyces especificado. Ou apenas deixe "espaço" fora do comando set se você não quiser ver espaços.space:·
), como parece que MS Word, Notepad ++, etc.<C-K>.M
no vim para·
. Veja:h digraph
para detalhes.:set list
para ativar.:set nolist
desabilitar.fonte
: set list!
é melhor :)Shift
e!
são mais difíceis de digitar do queno
. Se você o colocar no seu .vimrc, concordo que o formulário de exclusão é mais fácil de ler.:set list!
fará sem que você precise entrarnolist
. O!
simplesmente faz o oposto do que está definido atualmente. Eu uso isso o tempo todo, especialmente quando:set paste!
. Eu odeio pressionando a tecla de seta para encontrar:set paste
ou:set nopaste
lolAcho que outras respostas aqui são mais abrangentes, mas pensei em compartilhar um truque que costumo usar para diferenciar visualmente guias e espaços:
Estas são regras de destaque de sintaxe para a linguagem de programação Whitespace - as guias são exibidas em verde e os espaços em vermelho. :)
Pode ser combinado com
:set list
o mencionado por muitas outras respostas, embora as guias sejam exibidas como ^ I sem luz verde, mas os espaços serão exibidos em vermelho.fonte
:set list
mostrará todos os espaços em branco como um personagem. Tudo, exceto um espaço, parecerá diferente do seu estado normal, o que significa que, se você ainda vê um espaço antigo simples, é realmente um espaço antigo simples. :)fonte
:set nolist
!
no final:set list!
:se hls | /\_s
para isso. Obtém tudo, enquantoset list
ignora os espaços. Desligue novamente com:se nohls
. Detalhes sobre este post: albertech.blogspot.com/2015/02/…Se você definir:
e, em seguida, faça uma pesquisa por um espaço, cada caractere de espaço será mostrado como um caractere sublinhado.
Você pode usar este comando em uma função útil que alterna "sublinhado" de espaços.
Mapeie a função para uma tecla de atalho com:
NB: Defina a função no vimrc após a definição do esquema de cores.
fonte
Dependendo das regras de sintaxe para o buffer atual, algo como isto poderia funcionar:
Isso precisa de um vim 7.3 com o recurso + ocultar
Atualização 24/10/2014 Para expandir um pouco sobre isso. É claro que é possível definir alguns destaques para os caracteres ocultos.
Você pode configurar a aparência dos caracteres ocultos. Para realçar, você precisa pelo menos uma vez configurar o grupo de destaque 'Ocultar' (consulte a ajuda em
:h hl-Conceal
Isso pode ser feito no seu esquema de cores e, em seguida, você não precisa reconfigurá-lo novamente. Mas isso afeta todos os caracteres ocultos (por exemplo, se o seu O script de sintaxe oculta mais alguns itens, eles serão exibidos como seus caracteres de espaço em branco).:hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Parece haver uma particularidade de que o Vim não destacará espaços, se o script de sintaxe usar a
skipwhite
palavra - chave. Não haverá maneira de contornar (talvez isso seja corrigido, eu postei um patch )list
modo. O mais recente no momento da escrita parece ser este . (Isso significa que você precisa criar seu próprio Vim para usá-lo).conceallevel
econcealcursor
são. Isso significa que eles podem ser diferentes em janelas diferentes (e possivelmente também serão definidos por plugins de tipo de arquivo ou outros scripts de plug-in).BufWinEnter
ou, possivelmente, também umSyntax
ou mesmoFileType
autocommand. (Eu não testei qual realmente funciona).Os dois últimos itens significam que você precisará configurar alguns comandos automáticos que redefinem as regras de sintaxe e as opções correspondentes. Para o primeiro, convém configurar o destaque usando um
ColorScheme
convém comando automático (para que os caracteres ocultos sempre tenham a mesma aparência, independentemente do que um esquema de cores realmente configure). Para uma solução completa, procure a resposta romana, que deve lhe dar um começo. Se você configurar uma função, poderá configurar facilmente um comando de alternância para ativar ou desativar o Realce especial.Atualização 26/10/2014 Fiz um plug - in com esta pergunta.
Atualização 22/04/2015 Um patch foi incluído no Vim que torna isso possível usando a
list
opção Basta definirset list listchars+=space:␣
Isso funciona a partir do Vim 7.4.711fonte
.vimrc
?Æ
é uma escolha estranha de personagem para isso, por que não·
?Eu uso isso
para destacar espaços em branco. Ele procura todos os espaços em branco e ativa o destaque para que eles saiam. No entanto, ele não imprime um caractere especial.
fonte
nnoremap <leader><space> :noh<cr>
)Se por espaços em branco você quer dizer o caractere '', minha sugestão seria apenas uma pesquisa / substituição. Como os outros sugeriram,
set list
altera os caracteres que não são de impressão para um caractere visível que está configuradolistchars
.Para mostrar explicitamente os espaços como algum outro caractere, algo semelhante ao abaixo deve fazer o truque:
:%s/ /█/g
Depois, desfaça a alteração para voltar novamente.
(para obter o █ I pressionado esta sequência de teclas exata: :%s/ /CTRL-KFB/g)
fonte
:set list
, mudando o caráter visível ('espaço') para um _ que não se destaca '(??). Gostaria de saber se alguém pode usar isso dentro da partida, por exemplo,:match MyBlackBlockChar "appropriate_regex
isso deve funcionar, não deveria?:%s/\s/█/g
para todos os espaços em branco. Além disso, o:set hlsearch
plus:&s/\s//gn
pode ser útil.Para realçar espaços, basta procurar por:
/ <espaço>
Notas:
Para destacar espaços e tabulações:
/ [<espaço> <guia>]
Uma maneira rápida de remover os destaques é procurar qualquer outra coisa: / asdf
(basta digitar qualquer lista curta de caracteres aleatórios)
fonte
/<space>
vs/\s
. Eu acho que não é óbvio e mais rápido usar a sugestão aqui.O código abaixo é baseado na resposta de Christian Brabandt e parece fazer o que o OP deseja:
Acrescente essas linhas à sua
~/.vimrc
e inicie uma nova sessão do Vim para ver a mágica ainda imperfeita acontecer.Sinta-se livre para editar as cores padrão e ocultar o caractere.
Advertência: algo no
*FuncBody
grupo de sintaxe em vários idiomas impede a exibição do ponto do meio. Não sei (ainda?) Como tornar essa solução mais confiável.fonte
skipwhite
argumento nas regras de sintaxe que impede que o grupo de sintaxe corresponda (embora seja permitido que ele esteja contido em todos os grupos).Fiquei frustrado com todas as outras respostas a essa pergunta, porque nenhuma delas destaca o caracter do espaço de uma maneira útil. A exibição de espaços como caracteres ajudaria particularmente os idiomas no formato de espaço em branco, onde misturar guias e espaços é prejudicial.
Minha solução é mostrar guias e sublinhar vários espaços. É emprestado da resposta de mrucci e deste tutorial . Por usar destaque de sintaxe, é persistente:
Usando isso, as guias são exibidas como
|
e espaços como_
, o que facilita a identificação quando estou misturando estilos de código.A única desvantagem que encontrei é que esse snippet não ajusta a cor do plano de fundo para corresponder ao contexto (como em um comentário).
fonte
todas as respostas acima tentam tornar os espaços visíveis no vim. Se você realmente insiste em ter espaços visíveis como pontos, há outra abordagem ...
Se não puder ser feito no vim, altere completamente sua fonte. Copiei a fonte Ubuntu One Mono e a editei usando o FontForge. Lembre-se de alterar o nome completo, a família, a família preferida e a fonte completa compatível (no FontFoge está em Nomes TTF nas informações da fonte), a fim de tê-la como uma fonte separada. Simplesmente edite o caractere de espaço para ter um ponto no meio e salve a fonte em ~ / .fonts Agora você pode usá-lo para o seu gvim ou para todo o terminal ... Copiei o "!" caractere, removeu a linha e moveu o ponto para o meio. Demorou um pouco mais de 5 minutos ...
Nota: alterar o caractere de espaço (0x20) resulta no inconveniente de haver pontos em toda a tela do vim ... (mas separará os espaços das guias ...)
fonte
Não encontrei exatamente o que queria das respostas existentes. O código abaixo destacará todos os espaços finais em vermelho brilhante. Basta adicionar o seguinte ao seu
.vimrc
fonte
evita o bit "você precisa procurar por espaços para que eles apareçam", mas não é possível configurar o ataque para fazer coisas que não causam crepúsculo nos espaços. O CursorLine pode ser qualquer grupo de hilighting e, no tema padrão, é um sublinhado simples.
fonte
Eu gosto de usar caracteres especiais para mostrar espaços em branco, é mais claro. Até um mapa para alternar é um recurso essencial, para uma verificação rápida.
Você pode encontrar esses recursos em um script antigo do vim não atualizado desde 2004:
vim-scripts/[email protected]
Graças ao projeto vim-scripts e vundle, você pode voltar à vida com este plugin
vim-scripts / show de cremeinvisíveis @ github
Melhor ainda, meus dois centavos sobre isso é adicionar um atalho configurável (em vez de predefinidoF4 )
então adicione isso ao ~ / .vimrc
instalar plugin no vim
e ai vai
fonte
Para cobrir caracteres de espaço em branco Unicode:
O resultado:
")
│
" (dois caracteres: um tubo longo e, em seguida, um espaço ordinal;colorscheme murphy
)·
" (um caractere; é cinzacolorscheme murphy
)"
fonte
set listchars=tab:»\ ,space:·
para sua referência.gvim
evim
.Você poderia usar
para realmente ver a estrutura de uma linha. Você verá guias e novas linhas explicitamente. Quando você vê um espaço em branco, é realmente um espaço em branco.
fonte
destacar pesquisa
em
.vimrc
que ée procure guias de espaço e retornos de carro
ou pesquise todos os caracteres de espaço em branco
de procurar todos os caracteres de espaço não em branco (os caracteres de espaço em branco não são mostrados, para que você veja os caracteres de espaço em branco entre as palavras, mas não os caracteres de espaço em branco à direita)
para mostrar todos os caracteres de espaço em branco à direita - no final da linha
fonte
Mantenha esses hacks no .vimrc como comentários, então no shell, simplesmente:
fonte
:se
é suficiente,:set
não é necessário.fonte
você também pode destacar os espaços (substituindo os espaços por um bloco):
(antes de escrever, desfaça-o)
fonte
Adicionar isso ao meu .vimrc funciona para mim. Apenas verifique se você não tem mais nada conflitante ..
fonte