GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo convertir espacios en pestañas en Vim o Linux?

1 - Si tienes espacios y quieres tabulaciones.

Primero, debe decidir cuántos espacios tendrán una sola pestaña. Dicho esto, supongamos que tiene líneas con 4 espacios iniciales u 8 ... Entonces se da cuenta de que probablemente desee que una tabulación tenga 4 espacios. Ahora con esa información, haces:

:set ts=4
:set noet
:%retab!

¡Aquí hay un problema! Esta secuencia de comandos buscará todo el texto, no solo los espacios al comienzo de la línea. Eso significa una cadena como:"Hey,␣this␣␣␣␣is␣4␣spaces" se convertirá en "Hey,␣this⇥is␣4␣spaces" , ¡pero no lo es! ¡es una pestaña!.

Para resolver este pequeño problema recomiendo un search , en lugar de retab .

:%s/^\(^I*\)␣␣␣␣/\1^I/g

Esta búsqueda buscará en todo el archivo cualquier línea que comience con cualquier número de pestañas, seguido de 4 espacios, y lo sustituirá por cualquier número de pestañas encontrado más uno.

¡Esto, lamentablemente, no se ejecutará de inmediato!

Al principio, el archivo tendrá líneas que comienzan con espacios. La búsqueda convertirá solo los primeros 4 espacios en una pestaña y dejará lo siguiente...

Tienes que repetir el comando. ¿Cuantas veces? Hasta que obtengas un pattern not found . No puedo pensar en una manera de automatizar el proceso todavía. Pero si lo haces:

`[email protected]:`

Probablemente haya terminado. Este comando repite la última búsqueda/reemplazo 10 veces. No es probable que su programa tenga tantas sangrías. Si es así, repite de nuevo @@ .

Ahora, solo para completar la respuesta. Sé que pediste lo contrario, pero nunca sabes cuándo necesitas deshacer las cosas.

2 - Tienes pestañas y quieres espacios.

Primero, decida a cuántos espacios desea que se conviertan sus pestañas. Digamos que desea que cada pestaña tenga 2 espacios. Luego haces:

:set ts=2
:set et
:%retab!

Esto tendría el mismo problema con las cadenas. Pero como su mejor estilo de programación es no usar tabulaciones duras dentro de las cadenas, en realidad estás haciendo algo bueno aquí. Si realmente necesita una pestaña dentro de una cadena, use \t .


Uso de Vim para expandir todos los principales espacios (más ancho que 'tabstop' ), hiciste bien en usar retab pero primero asegúrese de 'expandtab' se restablece (:verbose set ts? et? es tu amigo). retab toma un rango , por lo que normalmente especifico % para significar "todo el archivo".

:set tabstop=2      " To match the sample file
:set noexpandtab    " Use tabs, not spaces
:%retab!            " Retabulate the whole file

Antes de hacer algo como esto (¡particularmente con archivos de Python!), generalmente configuro 'list' , para que pueda ver el espacio en blanco y el cambio.

Tengo el siguiente mapeo en mi .vimrc por esto:

nnoremap    <F2> :<C-U>setlocal lcs=tab:>-,trail:-,eol:$ list! list? <CR>

Linux
  1. Cómo configuro Vim como mi editor predeterminado en Linux

  2. Cómo configurar o cambiar el nombre de host del sistema en Linux

  3. ¿Cómo puedo vincular un archivo en Linux?

  4. ¿Cómo configurar la pestaña en 4 espacios en vim?

  5. ¿Cómo puedo configurar la afinidad del procesador de un proceso en Linux?

Cómo mostrar números de línea en Vim / Vi

Cómo configurar la programación de torrents en Linux

Cómo convertir por lotes archivos PDF en Linux

Cómo configurar o cambiar el nombre de host en Linux

Cómo convertir una página web a PDF en Linux

Convierta pestañas en espacios en la terminal de Linux con el comando Expandir