Como fazer o caractere de tabulação 4 espaços em vez de 8 espaços em nano?

152

Quando eu pressiono TAB no nanoeditor, o cursor salta com 8 espaços como este:

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

como posso definir a largura da tabulação para 4 espaços para exibir da seguinte maneira:

def square(x):
    return x * x
def cube(y):
    return y * y * y
Satanás Caído
fonte
Nano é um editor bastante básico. Há uma boa chance de simplesmente não suportar isso.
millimoose
hum não apenas no nano, mas também recuo de 8 espaços quando uso o interpretador python no Terminal.
Satanás caído
2
Isso é respondido no SuperUser e deve ser fechado como duplicado: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose
6
@millimoose, alterar as paradas da guia no terminal não afeta o nano. Essa pergunta deve ser especificamente sobre nano ou sobre como definir as paradas de tabulação para Python, mas não sobre os dois e não sobre como definir interativamente as paradas de tabulação com o tabcomando, o que não afeta todos os programas.
Chris Page

Respostas:

253

Se você usa o nano com uma linguagem como python (como no exemplo), também é uma boa ideia converter abas em espaços.

Edite seu arquivo ~ / .nanorc (ou crie-o) e adicione:

set tabsize 4
set tabstospaces

Se você já possui um arquivo com guias e deseja convertê-los em espaços, recomendo o expandcomando (shell):

expand -4 input.py > output.py
Sven Rojek
fonte
Estou usando mint e quando defino o tamanho da tabulação de 8 a 4 no / etc / nanorc e volto para o arquivo, ainda estou recebendo 8 espaços na guia, até tentei copiar o arquivo nanorc para ~ /. mas isso não funciona, terminal fechado e reaberto, mas ainda não consigo obter 4 espaços na guia, a menos que eu use o nano -T4. Obrigado
Alex
@ Alex verifique se o seu arquivo começa com um ponto .nanorcnão nanorc. Isso deve ser colocado no diretório inicial do usuário, ou seja /home/your-username/.nanorc.
Sven Rojek
1
Obrigado, acabei criando outro .nanorc diferente daquele em / etc, coloquei no diretório home e funcionou. Estas são as únicas três linhas que incluí no novo .nanorc para qualquer pessoa interessada: defina nowrap, defina o tamanho da tabulação 4 e defina tabstospaces
Alex
4
Se esse é o seu brinquedo, você pode disponibilizar essa alteração em todo o sistema, basta editar o arquivo global /etc/nanorc. Existem algumas outras opções que você pode aproveitar.
fcm
Olá @Alexey. Este comando do Shell do Linux funciona para todos os arquivos, mas certifique-se de especificar outro arquivo de saída, caso contrário, seu arquivo será esvaziado.
precisa
91

Sinalizador de linha de comando

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 exemplo, para definir o tamanho da guia como 4, substitua as guias por espaços e edite o arquivo "foo.txt", execute o comando:

nano -ET4 foo.txt

Arquivo de configuração

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 seu ~/.nanorcarquivo (crie-o se ele não existir) e adicione esses comandos. Por exemplo:

set tabsize 4
set tabstospaces

O Nano usará essas configurações por padrão sempre que for iniciado, mas os sinalizadores da linha de comando os substituirão.

Maçãs
fonte
umm ... não consigo encontrar o arquivo .nanorc no diretório ~ / #
Fallen Satan
1
Ok, não importa. Acho nanorc no diretório / etc. Obrigado embora
Fallen Satan
5
@FallenSatan, geralmente você deve evitar editar o / etc / nanorc, a menos que precise executar personalizações em todo o sistema. Crie ~ / .nanorc se ainda não existir e coloque suas personalizações lá.
Chris Page
1
Note-se que na resposta acima você precisa adicionar a linha "set TABSIZE 4", não "set tabspace 4"
Thomas N
1
O sudo nano não aceita ~ / .nanorc por uma razão óbvia; portanto, o sinalizador da linha de comando é uma solução mais prática para o problema.
user608800
11

No nano 2.2.6, a linha em ~ / .nanorc para fazer isso parece ser

set tabsize 4

Definir tabspace me deu o erro: 'Flag desconhecido "tabspace"'

Harry Detering
fonte
4

Para futuros espectadores, há uma linha no meu arquivo / etc / nanorc próxima à linha 153 que diz "set tabsize 8". A palavra pode precisar ter tamanho de tabulação em vez de espaço de tabulação. Depois de substituir 8 por 4 e descomentar a linha, ele resolveu o meu problema.

caleb
fonte
0

Para quem pode tropeçar nessa velha pergunta ...

Acho que há uma coisa que precisa ser abordada.

~/.nanorc é usado para aplicar as configurações específicas do usuário ao nano; portanto, se você estiver editando arquivos que requerem o uso de sudo nano permissões, isso não funcionará.

Ao usar sudoseus arquivos de configuração de usuário personalizados, eles não serão carregados ao abrir um programa, pois você não está executando o programa a partir da sua conta, portanto nenhuma das alterações na configuração ~/.nanorcserá aplicada.

Se esta é a situação em que você se encontra (querendo executar sudo nano e usar suas próprias configurações), você tem três opções:

  • usando sinalizadores de linha de comando ao executar sudo nano
  • editando o /root/.nanorcarquivo
  • editando o /etc/nanorcarquivo de configuração global

Lembre-se de que /etc/nanorcé um arquivo de configuração global e, como tal, afeta todos os usuários, o que pode ou não ser um problema, dependendo de você possuir um sistema multiusuário.

Além disso, os arquivos de configuração do usuário substituirão o global; portanto, se você editar /etc/nanorce ~/.nanorccom configurações diferentes, ao executá- nanolo, as configurações serão carregadas, ~/.nanorcmas, se você executar sudo nano, ele carregará as configurações de/etc/nanorc .

O mesmo vale para /root/.nanorcisso substituirá /etc/nanorcao executarsudo nano

Usar sinalizadores é provavelmente a melhor opção, a menos que você tenha muitas opções.

typedef Miles_Williams MILO
fonte