Jak sprawić, by znak tabulatora 4 spacje zamiast 8 spacji w nano?

152

Kiedy naciskam TAB w nanoedytorze, kursor przeskoczy o 8 spacji w ten sposób:

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

jak ustawić szerokość tabulatora na 4 spacje, aby wyświetlić w ten sposób:

def square(x):
    return x * x
def cube(y):
    return y * y * y
Upadły Szatan
źródło
Nano to dość prosty edytor. Jest duża szansa, że ​​po prostu tego nie obsługuje.
millimoose
umm nie tylko w nano, ale także wcina o 8 spacji, gdy używam interpretera Pythona w Terminalu.
Fallen Satan
2
Odpowiedź na to pytanie znajduje się na SuperUser i powinna zostać zamknięta jako duplikat: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose
6
@millimoose, zmiana tabulatorów w terminalu nie wpływa na nano. To pytanie powinno dotyczyć w szczególności nano lub ustawiania tabulatorów dla Pythona, ale nie dotyczy obu i nie dotyczy interaktywnego ustawiania tabulatorów za pomocą tabpolecenia, co nie wpływa na wszystkie programy.
Chris Page,

Odpowiedzi:

253

Jeśli używasz nano z językiem takim jak Python (jak w twoim przykładzie), dobrym pomysłem jest również przekonwertowanie tabulatorów na spacje.

Edytuj swój plik ~ / .nanorc (lub utwórz go) i dodaj:

set tabsize 4
set tabstospaces

Jeśli masz już plik z tabulatorami i chcesz przekonwertować je na spacje, polecam expandpolecenie (powłoka):

expand -4 input.py > output.py
Sven Rojek
źródło
Używam mięty i kiedy ustawię rozmiar tabulacji od 8 do 4 w / etc / nanorc i wrócę do pliku, nadal otrzymuję 8 spacji w zakładce, nawet próbowałem skopiować ten plik nanorc do ~ /. ale to nie działa, zamknięty i ponownie otwarty terminal, ale nadal nie mogę uzyskać 4 spacji na karcie, chyba że używam nano-T4. Dzięki
Alex
@Alex dokładnie sprawdź, czy plik zaczyna się od kropki .nanorcnie nanorc. To musi być umieszczone w katalogu domowym użytkownika, tj /home/your-username/.nanorc.
Sven Rojek
1
Dzięki, skończyło się na stworzeniu kolejnego pliku .nanorc innego niż ten w / etc, umieszczeniu go w katalogu domowym i to zadziałało. To są jedyne 3 wiersze, które umieściłem w nowym .nanorc dla wszystkich zainteresowanych: ustaw nowrap, ustaw rozmiar tabulacji 4 i ustaw odstępy między tabulatorami
Alex
5
Jeśli to twoja zabawka, możesz udostępnić tę zmianę w całym systemie, po prostu edytuj plik globalny /etc/nanorc. Jest tam kilka innych opcji, które mogą Ci się spodobać.
fcm
Cześć @Alexey. To polecenie powłoki Linuksa działa dla wszystkich plików, ale upewnij się, że podałeś inny plik wyjściowy, w przeciwnym razie plik zostanie opróżniony.
Sven Rojek
91

Flaga wiersza poleceń

Od 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.

Na przykład, aby ustawić rozmiar tabulatora na 4, zastąpić tabulatory spacjami i edytować plik „foo.txt”, należy uruchomić polecenie:

nano -ET4 foo.txt

Plik konfiguracyjny

Od 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.

Edytuj ~/.nanorcplik (utwórz go, jeśli nie istnieje) i dodaj do niego te polecenia. Na przykład:

set tabsize 4
set tabstospaces

Nano użyje tych ustawień domyślnie przy każdym uruchomieniu, ale flagi wiersza poleceń je zastąpią.

Jabłka
źródło
umm ... nie mogę znaleźć pliku .nanorc w katalogu ~ /
Fallen Satan
1
Ok nieważne. Znalazłem nanorc w katalogu / etc. dzięki
Fallen Satan
5
@FallenSatan, generalnie powinieneś unikać edycji / etc / nanorc, chyba że musisz dokonać dostosowań w całym systemie. Utwórz ~ / .nanorc, jeśli jeszcze nie istnieje i umieść tam swoje dostosowania.
Chris Page
1
Zauważ, że w powyższej odpowiedzi musisz dodać wiersz „set tabsize 4”, a nie „set tabspace 4”
Thomas N
1
sudo nano nie weźmie ~ / .nanorc z oczywistego powodu; więc flaga wiersza poleceń jest bardziej praktycznym rozwiązaniem problemu.
user608800
11

W nano 2.2.6 wydaje się, że linia w ~ / .nanorc to zrobić

set tabsize 4

Ustawienie obszaru tabulacji spowodowało wyświetlenie błędu: „Nieznana flaga” obszar tabulacji ”

Harry odstraszający
źródło
4

Dla przyszłych widzów w moim pliku / etc / nanorc znajduje się wiersz zbliżony do wiersza 153, który mówi „ustaw rozmiar karty 8”. Słowo może wymagać rozmiaru tabulatora zamiast tabulacji. Po wymianie 8 na 4 i odkomentowaniu linii rozwiązało to mój problem.

caleb
źródło
0

Dla każdego, kto może natknąć się na to stare pytanie ...

Uważam, że jest jedna rzecz, którą należy się zająć.

~/.nanorcsłuży do stosowania ustawień użytkownika w nano, więc jeśli edytujesz pliki, które wymagają użycia sudo nanouprawnień, to nie zadziała.

W przypadku korzystania sudoz niestandardowych plików konfiguracyjnych użytkownika, pliki konfiguracyjne użytkownika nie zostaną załadowane podczas otwierania programu, ponieważ nie uruchamiasz programu ze swojego konta, więc żadne zmiany konfiguracji wprowadzone w programie ~/.nanorcnie zostaną zastosowane.

Jeśli jest to sytuacja, w której się znajdujesz (chcesz uruchomić sudo nano i użyć własnych ustawień konfiguracyjnych), masz trzy opcje:

  • używanie flag wiersza poleceń podczas uruchamiania sudo nano
  • edytowanie /root/.nanorcpliku
  • edycja /etc/nanorcglobalnego pliku konfiguracyjnego

Należy pamiętać, że /etc/nanorcjest to globalny plik konfiguracyjny i jako taki wpływa na wszystkich użytkowników, co może, ale nie musi, stanowić problem, w zależności od tego, czy masz system z wieloma użytkownikami.

Ponadto pliki konfiguracyjne użytkownika zastąpią plik globalny, więc jeśli miałbyś edytować /etc/nanorciz ~/.nanorcinnymi ustawieniami, po uruchomieniu nanozaładuje ustawienia z, ~/.nanorcale jeśli uruchomiszsudo nano , załaduje ustawienia z /etc/nanorc.

To samo dotyczy /root/.nanorctego, że zostanie zastąpiony /etc/nanorcpodczas biegusudo nano

Używanie flag jest prawdopodobnie najlepszą opcją, chyba że masz wiele opcji.

typedef Miles_Williams MILO
źródło