Bagaimana cara membuat karakter tab 4 spasi bukannya 8 spasi di nano?

152

Ketika saya menekan TAB di nanoeditor, kursor akan melompat dengan 8 spasi seperti ini:

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

bagaimana cara mengatur lebar berhenti tab ke 4 spasi untuk ditampilkan seperti ini:

def square(x):
    return x * x
def cube(y):
    return y * y * y
Setan yang Jatuh
sumber
Nano adalah editor yang cukup mendasar. Ada kemungkinan bagus itu hanya tidak mendukung ini.
milimoose
umm tidak hanya di nano, tetapi juga indentasi dengan 8 spasi ketika saya menggunakan interpreter python di Terminal.
Fallen Satan
2
Ini dijawab pada SuperUser, dan harus ditutup sebagai duplikat: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose
6
@ millimoose, mengubah penghentian tab di terminal tidak memengaruhi nano. Pertanyaan ini harus secara khusus tentang nano atau tentang pengaturan berhenti tab untuk Python, tetapi tidak tentang keduanya dan bukan tentang pengaturan interaktif berhenti tab dengan tabperintah, yang tidak mempengaruhi semua program.
Chris Page

Jawaban:

254

Jika Anda menggunakan nano dengan bahasa seperti python (seperti dalam contoh Anda) itu juga merupakan ide bagus untuk mengonversi tab menjadi spasi.

Edit file ~ / .nanorc Anda (atau buat) dan tambahkan:

set tabsize 4
set tabstospaces

Jika Anda sudah punya file dengan tab dan ingin mengonversinya menjadi spasi saya sarankan expand perintah (shell):

expand -4 input.py > output.py
Sven Rojek
sumber
Saya menggunakan mint dan ketika saya mengatur tabsize dari 8 menjadi 4 di / etc / nanorc dan kembali ke file, saya masih mendapatkan 8 spasi di tab, saya bahkan mencoba menyalin file nanorc itu ke ~ /. tapi itu tidak berhasil, terminal ditutup dan dibuka kembali, tapi tetap saya tidak bisa mendapatkan 4 spasi di tab kecuali saya menggunakan nano -T4. Terima kasih
Alex
@Alex periksa kembali apakah file Anda dimulai dengan titik .nanorctidak nanorc. Ini harus ditempatkan di direktori home pengguna Anda, yaitu /home/your-username/.nanorc.
Sven Rojek
1
Terima kasih, saya akhirnya membuat .nanorc berbeda dari yang ada di / etc, meletakkannya di direktori home dan itu berhasil. Ini adalah satu-satunya 3 baris yang saya sertakan dalam .nanorc baru untuk siapa saja yang tertarik: atur nowrap, atur tabsize 4 dan atur tabstospaces
Alex
5
Jika ini mainan Anda, Anda dapat membuat perubahan ini menjadi sistem yang luas, cukup edit file global /etc/nanorc. Ada beberapa opsi lain yang bisa Anda nikmati.
fcm
Hai @Alexey. Perintah Linux Shell ini berfungsi untuk semua file, tetapi pastikan untuk menentukan file output lain, jika tidak file Anda akan dikosongkan.
Sven Rojek
91

Bendera baris perintah

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

Misalnya, untuk mengatur ukuran tab menjadi 4, ganti tab dengan spasi, dan edit file "foo.txt", Anda akan menjalankan perintah:

nano -ET4 foo.txt

File konfigurasi

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

Edit ~/.nanorcfile Anda (buat jika tidak ada), dan tambahkan perintah itu ke sana. Sebagai contoh:

set tabsize 4
set tabstospaces

Nano akan menggunakan pengaturan ini secara default setiap kali diluncurkan, tetapi flag baris perintah akan menimpanya.

Apel
sumber
umm ... saya tidak dapat menemukan file .nanorc di direktori ~ /
Fallen Setan
1
Baiklah jangan dipikirkan. Saya menemukan nanorc di direktori / etc. terima kasih
Fallen Satan
5
@FallenSatan, umumnya Anda harus menghindari pengeditan / etc / nanorc, kecuali Anda perlu melakukan kustomisasi seluruh sistem. Buat ~ / .nanorc jika belum ada dan letakkan kustomisasi Anda di sana.
Chris Page
1
Perhatikan bahwa dalam jawaban di atas Anda perlu menambahkan baris "set tabsize 4", bukan "set tabspace 4"
Thomas N
1
sudo nano tidak akan mengambil ~ / .nanorc karena alasan yang jelas; jadi bendera baris perintah adalah solusi yang lebih praktis untuk masalah tersebut.
user608800
11

Di nano 2.2.6, baris di ~ / .nanorc untuk melakukan ini sepertinya

set tabsize 4

Pengaturan tabspace memberi saya kesalahan: 'Bendera tidak dikenal "tabspace"'

Harry Detering
sumber
4

Untuk pemirsa di masa depan, ada baris di file / etc / nanorc saya dekat dengan baris 153 yang mengatakan "set tabsize 8". Kata itu mungkin harus berukuran tab bukan spasi. Setelah saya mengganti 8 dengan 4 dan menghapus komentar baris, itu memecahkan masalah saya.

caleb
sumber
0

Bagi siapa saja yang mungkin menemukan pertanyaan lama ini ...

Ada satu hal yang menurut saya perlu dibenahi.

~/.nanorc digunakan untuk menerapkan pengaturan khusus pengguna Anda ke nano, jadi jika Anda mengedit file yang memerlukan penggunaan sudo nano izin maka ini tidak akan berfungsi.

Saat menggunakan sudofile konfigurasi pengguna khusus Anda tidak akan dimuat saat membuka program, karena Anda tidak menjalankan program dari akun Anda sehingga tidak ada perubahan konfigurasi Anda di~/.nanorc akan diterapkan.

Jika ini adalah situasi di mana Anda berada (ingin menjalankan sudo nano dan menggunakan pengaturan konfigurasi Anda sendiri) maka Anda memiliki tiga opsi:

  • menggunakan flag baris perintah saat menjalankan sudo nano
  • mengedit /root/.nanorcfile
  • mengedit /etc/nanorcfile konfigurasi global

Ingat itu /etc/nanorc adalah file konfigurasi global dan karena itu mempengaruhi semua pengguna, yang mungkin atau mungkin tidak menjadi masalah tergantung pada apakah Anda memiliki sistem multi-pengguna.

Selain itu, file konfigurasi pengguna akan menimpa yang global, jadi jika Anda mengedit /etc/nanorcdan ~/.nanorcdengan pengaturan yang berbeda, saat Anda menjalankannya nanoakan memuat pengaturan dari ~/.nanorctetapi jika Anda menjalankansudo nano maka itu akan memuat pengaturan dari/etc/nanorc .

Hal yang sama berlaku untuk /root/.nanorcini akan menimpa /etc/nanorcketika berjalansudo nano

Menggunakan bendera mungkin merupakan opsi terbaik kecuali Anda memiliki banyak opsi.

ketikkan Miles_Williams MILO
sumber