Como exibir caracteres ocultos no vim?

54

Como posso configurar o vim para exibir somente caracteres ocultos, como tabulações ou espaços, enquanto esses caracteres são digitados? Não quero que tabulações e / ou espaço sejam substituídos por caracteres especiais como ">" ou "_" quando o arquivo é gravado.

dan0
fonte
11
Você definitivamente precisa de espaços para mostrar? A solução típica é usar :set list. Isso pode obter tudo, exceto espaços.
Kris Harper #

Respostas:

64

Você pode usar os comandos

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list

para mostrar todos os caracteres que não são espaços em branco. Portanto, os espaços são a única coisa que não aparece.

Se você também precisa absolutamente de espaços para serem marcados, tente algo menos agradável. Algo como

:%s/ /█/g

Substituirá todos os espaços por um caractere de bloco. Então você precisará desfazê-lo antes de escrever. Você pode remapear seu comando write do

cmap :w :%s/█/ /g<CR>:w

Apenas uma sugestão. Eu ainda não tentei isso.

Kris Harper
fonte
Obrigado pela ajuda; sua sugestão funciona muito bem. No entanto, notei que, às vezes, quando abro certos arquivos, vejo "> ---" (guia indicando). Existe uma maneira de fazer com que os caracteres da guia sejam exibidos apenas durante a digitação?
Dan1
@ dan0 Você quer dizer apenas durante o modo de inserção? Eu não sei. Eu meio que duvido. Você pode fazer algumas funções de mapeamento para que, quando você entrar no modo de inserção, ele primeiro chame o :set listcharscomando e o configure como nada, depois chame novamente quando você sair do modo de inserção. Mas eu não sei o suficiente sobre mapas para fazer isso.
Kris Harper #
@JonathanKomar "set nolist"
Vladislavs Dovgalecs
11
Usar space:␣funciona bem para mim: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs 03/02
15

Versões mais recentes do vim também podem mostrar espaços. (Confirmado no vim 7.4.1689).

:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
wisbucky
fonte
4

No meu caso, eu tive que lutar nbsp ,

:set listchars=nbsp:☠,tab:▸␣
:set list

Você também pode usar ␣ em vez de ☠

Aqui está um exemplo em que a configuração do vim acima destaca os espaços "invisíveis estranhos" e, além disso, destaca as guias (cor vermelha porque eu estou usando o plugin vim de espaço em branco à direita)

Aqui

Andrey Arapov
fonte