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 finales, etc.
772
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 finales, etc.
:set list
. Eso no responde nuestra pregunta. (Para otros interesados : la respuesta de mrucci a continuación es útil, aunque no es una solución real )list
ylistchars
consideran que un espacio sigue directamente a una pestaña. Sería casi invisible en esta situación. Estoy de acuerdo en que puede atrapar la mayoría de las situaciones, pero sería bueno tener un resaltado adecuado de todos los espacios.Respuestas:
Como otros han dicho, podrías usar
que, en combinación con
Mostrar caracteres invisibles.
Ahora, no hay una opción explícita que pueda usar para mostrar espacios en blanco, pero en los cuadros de lista, puede establecer un carácter para que se muestre para TODO PERO espacios en blanco. Por ejemplo, el mío se ve así
entonces, ahora, después de usar
todo lo que no se muestra explícitamente como algo más, es entonces, realmente, un espacio en blanco simple.
Como de costumbre, para entender cómo
listchars
funciona, use la ayuda. Proporciona gran información sobre qué caracteres se pueden mostrar (como el espacio final, por ejemplo) y cómo hacerlo:Puede ser útil agregarle un conmutador para que pueda ver los cambios a mitad de la edición fácilmente (fuente: VIM: set list! Como alternar en .vimrc ):
fuente
.vimrc
archivo, para que esta bonita forma de mostrar caracteres invisibles se pueda habilitar fácilmente:set list
en cualquier momento (sin volver a buscar en esta página).¡A partir del parche 7.4.710 ahora puede configurar un personaje para que se muestre en lugar de espacio usando listchars!
Por lo tanto, para mostrar TODOS los espacios en blanco como caracteres, puede hacer lo siguiente:
Discusión sobre la lista de correo: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
fuente
:help listchars
para verificar si "espacio" es una opción válida para "listchars". Si no es así, actualice su vim al parche @brettanomyces especificado. O simplemente deje "espacio" fuera del comando set si no le importa ver espacios.space:·
), ya que parece MS Word, Notepad ++, etc.<C-K>.M
vim para·
. Ver:h digraph
para más detalles.:set list
para permitir.:set nolist
deshabilitar.fuente
: set list!
es mejor :)Shift
y!
son tanto más difíciles de escribir queno
. Si lo está poniendo en su .vimrc, estoy de acuerdo en que el formulario de exclamación es más fácil de leer.:set list!
lo hará sin necesidad de ingresarnolist
. El!
simplemente hace lo contrario de lo que esté configurado actualmente. Lo uso todo el tiempo, especialmente cuando estoy con:set paste!
. Odio presionar la tecla de flecha para encontrar:set paste
o:set nopaste
jajajaCreo que otras respuestas aquí son más completas, pero pensé en compartir un truco que suelo usar para diferenciar visualmente las pestañas y los espacios:
Estas son reglas de resaltado de sintaxis para el 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
lo mencionado por muchas otras respuestas, aunque las pestañas se mostrarán como ^ I sin un resaltado verde, pero los espacios se mostrarán en rojo.fuente
:set list
mostrará todos los espacios en blanco como un personaje. Todo menos un espacio se verá diferente de su estado normal, lo que significa que si todavía ve un espacio antiguo simple, es realmente un espacio antiguo simple. :)fuente
:set nolist
!
al final:set list!
:se hls | /\_s
para esto. Obtiene todo mientrasset list
ignora los espacios. De nuevo con:se nohls
. Detalles al respecto en esta publicación: albertech.blogspot.com/2015/02/…Si configura:
y luego realice una búsqueda de un espacio, cada carácter de espacio se mostrará como un carácter subrayado.
Puede usar este comando en una función práctica que alterna el "subrayado" de espacios.
Asigne la función a una tecla de acceso directo con:
Nota: defina la función en vimrc después de que se haya configurado el esquema de colores.
fuente
Dependiendo de sus reglas de sintaxis para el búfer actual, algo como esto podría funcionar:
Esto necesita un vim 7.3 con + función de ocultación
Actualización 24/10/2014 Para ampliar un poco sobre eso. Por supuesto, es posible definir algunos resaltados para los caracteres encerrados.
Puede configurar cómo se ven los caracteres ocultos. Para resaltar, tendría que configurar al menos una vez 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 volver a configurarlo nuevamente. Pero esto afecta a todos los caracteres ocultos (por ejemplo, si su el script de sintaxis oculta algunos elementos más, se mostrarán como caracteres de espacio en blanco).:hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Parece existir una particularidad de que Vim no resaltará espacios, si el script de sintaxis usa la
skipwhite
palabra clave. No habrá forma de evitarlo (tal vez esto se arregle, publiqué un parche )list
modo. El último en el momento de escribir parece ser este . (Esto significa que necesita construir su propio Vim para usar esto).conceallevel
yconcealcursor
son ventana de opciones locales. Eso significa que pueden ser diferentes en diferentes ventanas (y posiblemente también se establecerán mediante complementos de tipo de archivo u otros scripts de complementos).BufWinEnter
o posiblemente también unSyntax
o inclusoFileType
autocomando. (No he probado cuál funciona realmente).Los dos últimos elementos significan que tendría que configurar algunos comandos automáticos que restablecen las reglas de sintaxis y las opciones de respuesta correspondientes. Para el primero, es posible que desee configurar el resaltado utilizando un
ColorScheme
comando automático (para que los caracteres ocultos siempre se vean iguales, independientemente de lo que configure realmente un esquema de color). Para una solución completa, busque en la respuesta romana, que debería darle un comienzo. Si configura una función, puede configurar fácilmente un comando de alternar para activar o desactivar la visualización de resaltado especial.Actualización 26/10/2014 Hice un complemento de esta pregunta.
Actualización 22/04/2015 Se ha incluido un parche en Vim que lo hace posible mediante la
list
opción. Simplemente configureset list listchars+=space:␣
Esto funciona a partir de Vim 7.4.711fuente
.vimrc
?Æ
es una extraña elección de personaje para esto, ¿por qué no·
?yo uso esto
para resaltar espacios en blanco. Busca todos los espacios en blanco y luego habilita el resaltado para que salgan. Sin embargo, no imprime un carácter especial.
fuente
nnoremap <leader><space> :noh<cr>
)Si por espacios en blanco te refieres al carácter '', mi sugerencia sería solo una búsqueda / reemplazo. Como los demás han insinuado,
set list
cambia los caracteres que no se imprimen a un carácter visible que está configurado enlistchars
.Para mostrar explícitamente espacios como algún otro personaje, algo similar a lo siguiente debería ser el truco:
:%s/ /█/g
Luego solo deshaga el cambio para volver de nuevo.
(Para obtener el █ Presioné esta secuencia de teclas exacta: :%s/ /CTRL-KFB/g)
fuente
:set list
, cambiando el carácter visible ('espacio') a uno no prismático (??). Me pregunto si uno puede usar esta combinación interna, por ejemplo,:match MyBlackBlockChar "appropriate_regex
eso debería funcionar, ¿no?:%s/\s/█/g
para todos los espacios en blanco. Además,:set hlsearch
plus:&s/\s//gn
podría ser útil.Para resaltar espacios, solo búscalo:
/ <espacio>
Notas:
Para resaltar espacios y pestañas:
/ [<space> <tab>]
Una forma rápida de eliminar los resaltados es buscar cualquier otra cosa: / asdf
(simplemente escriba cualquier lista corta de caracteres aleatorios)
fuente
/<space>
vs/\s
. Creo que no es obvio y más rápido usar la sugerencia aquí.El siguiente código se basa en la respuesta de Christian Brabandt y parece hacer lo que quiere el OP:
Agregue esas líneas a su
~/.vimrc
e inicie una nueva sesión de Vim para ver cómo sucede la magia aún imperfecta .Siéntase libre de editar los colores predeterminados y ocultar el carácter.
Advertencia: algo en el
*FuncBody
grupo de sintaxis en varios idiomas impide que se muestre el punto medio. No sé (¿todavía?) Cómo hacer que esa solución sea más confiable.fuente
skipwhite
argumento en las reglas de sintaxis, lo que evita que el grupo de sintaxis coincida (aunque debería permitirse que esté contenido en todos los grupos).Estaba frustrado con todas las otras respuestas a esta pregunta, porque ninguna de ellas resalta el carácter espacial de una manera útil. Mostrar espacios como caracteres sería particularmente útil para los idiomas con formato de espacios en blanco, donde mezclar pestañas y espacios es perjudicial.
Mi solución es mostrar pestañas y subrayar múltiples espacios. Toma prestado de la respuesta de mrucci y de este tutorial . Debido a que utiliza el resaltado de sintaxis, es persistente:
Con esto, las pestañas se muestran como
|
y los espacios como_
, lo que hace que sea muy fácil saber cuándo estoy mezclando estilos de código.El único inconveniente que he encontrado es que este fragmento no ajusta el color de fondo para que coincida con el contexto (como en un comentario).
fuente
todas las respuestas anteriores intentan hacer espacios visibles desde vim. Si realmente insiste en tener espacios visibles como puntos, hay otro enfoque ...
Si no se puede hacer en vim, cambie su fuente por completo. Copié la fuente Ubuntu One Mono y la edité usando FontForge. Recuerde cambiar el nombre completo de la fuente, la familia, la familia preferida, la compatibilidad completa (en FontFoge está bajo los nombres TTF en la información de la fuente), para tenerla como una fuente separada. Simplemente edite el carácter de espacio para tener un punto en el medio y guarde la fuente en ~ / .fonts. Ahora puede usarlo para su gvim o la terminal completa ... Copié el "!" carácter, eliminó la línea y movió el punto al centro. Tomó un poco más de 5 minutos ...
Nota: cambiar el carácter de espacio (0x20) resulta en el inconveniente de tener puntos en toda la pantalla vim ... (pero separará los espacios de las pestañas ...)
fuente
No encontré exactamente lo que quería de las respuestas existentes. El siguiente código resaltará todos los espacios finales de color rojo brillante. Simplemente agregue lo siguiente a su
.vimrc
fuente
evita el bit "tienes que buscar espacios para que aparezcan", pero un hecho no se puede configurar para hacer cosas que no sean de resaltado en los espacios. CursorLine puede ser cualquier grupo de resaltado y en el tema predeterminado es un subrayado simple.
fuente
Me gusta usar caracteres especiales para mostrar espacios en blanco, es más claro. Incluso un mapa para alternar es una característica clave, para una verificación rápida.
Puede encontrar estas características en un antiguo script vim no actualizado desde 2004:
vim-scripts/[email protected]
Gracias al proyecto vim-scripts y vundle puedes revivir este complemento
vim-scripts / cream-showinvisibles @ github
Aún mejor, mis dos centavos en esto es agregar un acceso directo configurable (en lugar de predefinido F4)
así que agregue esto a ~ / .vimrc
instalar el complemento en vim
y ahí vas
fuente
Para cubrir los caracteres de espacio en blanco Unicode:
El resultado:
")
│
" (dos caracteres: una tubería larga y luego un espacio ordinal; son grises encolorscheme murphy
)·
" (un carácter; es griscolorscheme murphy
)"
fuente
set listchars=tab:»\ ,space:·
para su referencia.gvim
yvim
.Podrías usar
para ver realmente la estructura de una línea. Verá pestañas y nuevas líneas explícitamente. Cuando ves un espacio en blanco, es realmente un espacio en blanco.
fuente
resaltar búsqueda
en
.vimrc
eso esy busque pestañas espaciales y retornos de carro
o buscar todos los espacios en blanco
de búsqueda de todos los caracteres que no sean espacios en blanco (no se muestran los espacios en blanco, por lo que puede ver los espacios en blanco entre palabras, pero no los caracteres en blanco)
para mostrar todos los caracteres de espacio en blanco al final de la línea
fuente
Mantenga esos hacks en .vimrc como comentarios, así que en el shell, simplemente:
fuente
:se
es suficiente,:set
no es necesariofuente
También puede resaltar los espacios (reemplazando los espacios con un bloque):
(antes de escribir deshacerlo)
fuente
Agregar esto a mi .vimrc funciona para mí. Solo asegúrate de no tener nada más conflictivo.
fuente