¿Cómo mostrar caracteres ocultos en vim?

54

¿Cómo puedo configurar vim para mostrar caracteres ocultos como pestañas o espacios SOLO mientras se escriben esos caracteres? No quiero que las pestañas y / o el espacio se reemplacen con caracteres especiales como ">" o "_" cuando se escribe el archivo.

dan0
fuente
1
¿Definitivamente necesitas espacios para mostrar? La solución típica es usar :set list. Eso puede obtener todo excepto espacios.
Kris Harper el

Respuestas:

64

Puedes usar los comandos

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

para mostrar todos los caracteres que no son espacios en blanco. Entonces, los espacios son lo único que no aparece.

Si también necesita espacios para marcar, deberá probar algo menos agradable. Algo como

:%s/ /█/g

Reemplazará todos los espacios con un carácter de bloque. Entonces deberías deshacerlo antes de escribir. Podrías reasignar tu comando de escritura do

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

Sólo una sugerencia. Aunque no lo he intentado.

Kris Harper
fuente
Gracias por la ayuda; Su sugerencia funciona bastante bien. Sin embargo, he notado que a veces cuando abro ciertos archivos veo "> ---" (pestaña de indicación). ¿Hay alguna manera de hacerlo para que los caracteres de tabulación se muestren solo durante la escritura?
dan0
@ dan0 ¿Te refieres solo durante el modo de inserción? No lo sé. Lo dudo un poco. Puede realizar algunas funciones de mapeo para que cuando entre en modo de inserción, primero llame al :set listcharscomando y lo establezca en nada, luego lo vuelva a llamar cuando salga del modo de inserción. Pero no sé lo suficiente sobre mapas para hacer eso.
Kris Harper el
@JonathanKomar "set nolist"
Vladislavs Dovgalecs
1
Usar me space:␣funciona bien: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs
15

Las versiones más recientes de vim también pueden mostrar espacios. (Confirmado en vim 7.4.1689).

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

En mi caso tuve que pelear nbsp ,

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

También puedes usar ␣ en lugar de ☠

Aquí hay un ejemplo en el que la configuración vim anterior resalta los espacios "invisibles extraños" y, además, resalta las pestañas (color rojo porque estoy usando el complemento vim trailing-whitespace)

aquí

Andrey Arapov
fuente