¿Cómo hacer que el carácter de tabulación sea de 4 espacios en lugar de 8 espacios en nano?

152

Cuando presiono TAB en el nanoeditor, el cursor saltará con 8 espacios como este:

def square(x):
        return x * x
def cube(y):
        return y * y * y

¿Cómo puedo configurar el ancho de tabulación en 4 espacios para que se muestre así:

def square(x):
    return x * x
def cube(y):
    return y * y * y
Satanás caído
fuente
Nano es un editor bastante básico. Hay una buena posibilidad de que simplemente no sea compatible con esto.
millimoose
umm no solo en nano, sino que también sangra 8 espacios cuando uso el intérprete de python en Terminal.
Fallen Satan
2
Esto se responde en superusuario, y debe ser cerrado como duplicado: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose
66
@millimoose, cambiar las paradas de tabulación en el terminal no afecta a nano. Esta pregunta debe ser específicamente sobre nano o sobre la configuración de las tabulaciones para Python, pero no sobre ambas y no sobre la configuración interactiva de las tabulaciones con el tabcomando, que no afecta a todos los programas.
Chris Page

Respuestas:

253

Si usa nano con un lenguaje como python (como en su ejemplo), también es una buena idea convertir las pestañas en espacios.

Edite su archivo ~ / .nanorc (o créelo ) y agregue:

set tabsize 4
set tabstospaces

Si ya tiene un archivo con pestañas y desea convertirlos en espacios, le recomiendo el expandcomando (shell):

expand -4 input.py > output.py
Sven Rojek
fuente
Estoy usando mint y cuando configuro tabsize de 8 a 4 en / etc / nanorc y vuelvo al archivo, todavía obtengo 8 espacios en la pestaña, incluso intenté copiar ese archivo nanorc a ~ /. pero eso no funciona, terminal cerrado y reabierto, pero aún así no puedo obtener 4 espacios en la pestaña a menos que use nano -T4. Gracias
Alex
@Alex vuelve a comprobar que sus archivos se inicia con un punto .nanorcno nanorc. Esto debe colocarse en el directorio de inicio de sus usuarios, es decir /home/your-username/.nanorc.
Sven Rojek
1
Gracias, terminé creando otro .nanorc diferente al de / etc, lo coloqué en el directorio de inicio y funcionó. Estas son las únicas 3 líneas que incluí en el nuevo .nanorc para cualquier persona interesada: establecer nowrap, establecer tabsize 4 y establecer tabstospaces
Alex
44
Si este es su juguete, puede hacer que este cambio esté disponible en todo el sistema, solo edite el archivo global /etc/nanorc. Hay algunas otras opciones que puede disfrutar.
fcm
Hola @Alexey Este comando de Linux Shell funciona para todos los archivos, pero asegúrese de especificar otro archivo de salida, de lo contrario su archivo se vaciará.
Sven Rojek
91

Bandera de línea de comandos

De man nano:

-T cols (--tabsize=cols)
    Set the size (width) of a tab to cols columns.
    The value of cols must be greater than 0. The default value is 8.
-E (--tabstospaces)
    Convert typed tabs to spaces.

Por ejemplo, para establecer el tamaño de la pestaña en 4, reemplazar las pestañas con espacios y editar el archivo "foo.txt", ejecutaría el comando:

nano -ET4 foo.txt

Archivo de configuración

De man nanorc:

set tabsize n
    Use a tab size of n columns. The value of n must be greater than 0.
    The default value is 8.
set/unset tabstospaces
    Convert typed tabs to spaces.

Edite su ~/.nanorcarchivo (créelo si no existe) y agregue esos comandos. Por ejemplo:

set tabsize 4
set tabstospaces

Nano usará esta configuración de forma predeterminada cada vez que se inicie, pero los indicadores de línea de comando los anularán.

Las manzanas
fuente
umm ... no puedo encontrar el archivo .nanorc en el directorio ~ /
Fallen Satan
1
OK no importa. Encuentro nanorc en el directorio / etc. aunque gracias
Fallen Satan
55
@FallenSatan, generalmente debe evitar editar / etc / nanorc, a menos que necesite realizar personalizaciones en todo el sistema. Cree ~ / .nanorc si aún no existe y coloque sus personalizaciones allí.
Chris Page
1
Tenga en cuenta que en la respuesta anterior debe agregar la línea "set tabsize 4", no "set tabspace 4"
Thomas N
1
sudo nano no tomará ~ / .nanorc por una razón obvia; entonces el indicador de línea de comando es una solución más práctica al problema.
user608800
11

En nano 2.2.6 la línea en ~ / .nanorc para hacer esto parece ser

set tabsize 4

Configurar el espacio de pestañas me dio el error: 'Bandera desconocida "espacio de pestañas"

Harry Detering
fuente
4

Para futuros espectadores, hay una línea en mi archivo / etc / nanorc cerca de la línea 153 que dice "set tabsize 8". Es posible que la palabra deba ser tabsize en lugar de tabspace. Después de reemplazar 8 con 4 y descomentar la línea, resolvió mi problema.

caleb
fuente
0

Para cualquiera que pueda tropezar con esta vieja pregunta ...

Hay una cosa que creo que debe abordarse.

~/.nanorcse usa para aplicar la configuración específica del usuario a nano, por lo que si está editando archivos que requieren el uso de sudo nanopermisos, esto no funcionará.

Cuando utilice sudosus archivos de configuración de usuario personalizados, no se cargarán al abrir un programa, ya que no está ejecutando el programa desde su cuenta, por lo que no ~/.nanorcse aplicará ninguno de sus cambios de configuración .

Si esta es la situación en la que se encuentra (que desea ejecutar sudo nano y usar su propia configuración), entonces tiene tres opciones:

  • usando banderas de línea de comando cuando se ejecuta sudo nano
  • editando el /root/.nanorcarchivo
  • editar el /etc/nanorcarchivo de configuración global

Tenga en cuenta que /etc/nanorces un archivo de configuración global y, como tal, afecta a todos los usuarios, lo que puede ser un problema o no dependiendo de si tiene un sistema multiusuario.

Además, los archivos de configuración del usuario anularán el archivo global, por lo que si edita /etc/nanorcy ~/.nanorccon diferentes configuraciones, cuando lo ejecute nanocargará la configuración, ~/.nanorcpero si lo sudo nanohace, cargará la configuración desde /etc/nanorc.

Lo mismo ocurre con /root/.nanorcesto se anulará /etc/nanorccuando se ejecutesudo nano

El uso de banderas es probablemente la mejor opción a menos que tenga muchas opciones.

typedef Miles_Williams MILO
fuente