Pregunta Haz que Vim muestre TODOS los espacios en blanco como un personaje


No puedo encontrar una manera de hacer que Vim muestre todos los espacios en blanco como un personaje. Todo lo que encontré fue sobre pestañas, espacios al final, etc.


654
2017-11-04 18:17


origen


Respuestas:


Como otros han dicho, podrías usar

:set list

que, en combinación con

:set listchars=...

mostrar caracteres invisibles
Ahora, no hay una opción explícita que pueda usar para espectáculo espacios en blanco, pero en Listchars, puede establecer un personaje para mostrar para todo, PERO para espacios en blanco. Por ejemplo, el mío se parece a esto

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

entonces, ahora, después de usar

:set list

todo lo que no se muestra explícitamente como algo más, es entonces, en realidad, un viejo espacio en blanco simple.

Como de costumbre, para entender cómo listchars funciona, usa la ayuda. Proporciona gran información sobre qué caracteres se pueden mostrar (como el espacio final, por ejemplo) y cómo hacerlo:

:help listchars

Puede ser útil agregarle un alternar para que pueda ver los cambios a mitad de la edición fácilmente (fuente: VIM: ¡set list! como un alternar en .vimrc)

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>

589
2017-11-04 18:30



:set list para permitir.

:set nolist deshabilitar.


209
2017-11-04 19:43



A partir del parche 7.4.710 ¡ahora puede configurar un carácter para mostrar en lugar de espacio usando listchars!

:set listchars+=space:␣

Entonces, para mostrar TODAS caracteres de espacio en blanco como un personaje, puede hacer lo siguiente:

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

Discusión en la lista de correo: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q


190
2018-04-22 03:46



Creo que otras respuestas aquí son más completas, pero pensé que compartiría un truco que usualmente utilizo para diferenciar pestañas y espacios visualmente:

:syntax on
:set syntax=whitespace

Estas son reglas de resaltado de sintaxis para Lenguaje de programación de espacios en blanco - Las pestañas se muestran en verde y los espacios en rojo. :)

Se puede combinar con :set list como se menciona en muchas otras respuestas, aunque las pestañas se mostrarán como ^ I sin un verde iluminado, pero los espacios se mostrarán en rojo.


162
2017-09-25 18:27



:set list mostrará todos los espacios en blanco como un personaje. Todo pero un espacio se verá diferente de su estado normal, lo que significa que si aún ves un espacio antiguo, en realidad es un espacio antiguo. :)


75
2017-11-04 18:20



Si configuraste:

:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none

y luego realice una búsqueda de un espacio, cada carácter de espacio se mostrará como un carácter de subrayado.

Puede usar este comando en una función útil que alterna "subrayado" de espacios.

set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
    if g:HLSpace
        highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
        let @/ = " "
    else
        highlight clear
        silent colorscheme "".g:HLColorScheme
        let @/ = ""
    endif
    let g:HLSpace = !g:HLSpace
endfunction

Asigna la función a una tecla de método abreviado con:

nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>

NÓTESE BIEN: Defina la función en vimrc después de que se haya establecido el esquema de color.


70
2017-11-04 18:33



Dependiendo de sus reglas de sintaxis para el búfer actual, algo como esto podría funcionar:

:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv

Esto necesita una característica vim 7.3 con + oculto

Actualización 10/24/2014 Para ampliar un poco sobre eso. Por supuesto, es posible definir algunos resaltados para los caracteres conectados.

  • Puede configurar cómo se ven los caracteres ocultos. Para resaltar, deberá al menos una vez configurar el grupo de resaltado 'Ocultar' (consulte la ayuda en :h hl-Conceal Esto se puede hacer en su esquema de colores y luego no necesita reconfigurarlo nuevamente. Pero esto afecta a todos los caracteres ocultos (por ejemplo, si el script de sintaxis oculta algunos elementos más, se mostrarán como caracteres en blanco). Eso podría verse así:

    :hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE

  • Parece haber una particularidad de que Vim no resaltará espacios, si el script de sintaxis usa el skipwhite palabra clave. No habrá forma de evitarlo (quizás esto se solucione, publiqué un parche)

  • Parece que hay un parche flotando, que permitirá personalizar el aspecto de los espacios list modo. El último en el momento de escribir parece ser éste. (Esto significa que necesita construir su propio Vim para usar esto).
  • los conceallevel y concealcursor son opciones de ventana local. Eso significa que pueden ser diferentes en diferentes ventanas (y posiblemente también sean configuradas por plugins de tipo de archivo u otros scripts de plugins).
  • Los grupos de resaltado de sintaxis deben ejecutarse cada vez que se vuelve a cargar un archivo de definición de sintaxis. Esto podría hacerse usando un BufWinEntero posiblemente también un Syntax o incluso FileType autocomando. (No he probado cuál realmente funciona).

Los últimos dos elementos significan que tendrías que configurar algunos autocomandos que restablecen las reglas de sintaxis y las opciones correpondentes. Para el primero, uno puede querer configurar el resaltado usando un ColorScheme autocommand (de modo que los caracteres ocultos siempre se vean iguales, independientemente de lo que realmente se establezca un esquema de color). Para una solución completa, mire la respuesta romaní, eso debería darle un comienzo. Si configura una función, puede configurar fácilmente un comando de alternar para activar o desactivar el resaltado especial.

Actualización 10/26/2014 Hice una enchufar fuera de esta pregunta.

Actualización 22/04/2015 Se ha incluido un parche en Vim que hace esto posible usando el list opción. Simplemente establecer set list listchars+=space:␣  Esto funciona a partir de Vim 7.4.711


42
2018-06-08 13:18



yo uso esto

/\s
:set hlsearch

para resaltar espacios en blanco. Busca todos los espacios en blanco y luego habilita el resaltado para que salgan. Sin embargo, lo hace no imprime un personaje especial.


28
2017-11-26 17:18



Si por espacios en blanco te refieres al carácter '', mi sugerencia sería simplemente buscar / reemplazar. Como los otros han insinuado, set list cambios sin impresión caracteres a un personaje visible que está configurado en listchars.

Para mostrar explícitamente espacios como algún otro personaje, algo similar a lo siguiente debería hacer el truco:

:%s/ /█/g

Luego simplemente deshaga el cambio para regresar nuevamente.

(para obtener el █ presioné esta secuencia de teclas exacta: :%s/  /CTRL-KFsegundo/gramo)


21
2017-11-04 20:50



Para resaltar espacios, simplemente búscalo:

/ <espacio>

Notas:

  • <espacio> significa simplemente escribir el carácter de espacio.
  • Habilite el resaltado de los resultados de búsqueda con: establecer hlsearch
  • Para resaltar espacios y pestañas:

    / [<espacio> <tab>]

    Una forma rápida de eliminar los aspectos más destacados es buscar cualquier otra cosa: / asdf

    (simplemente escriba cualquier lista corta de caracteres aleatorios)


    15
    2017-07-15 11:12