Як зробити символом вкладки 4 пробіли замість 8 пробілів у нано?


152

Коли я натискаю кнопку TAB у nanoредакторі, курсор стрибне з 8 пробілів, як це:

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

як я можу встановити ширину стоп-вкладки на 4 пробіли, щоб відобразитись так:

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

Нано - досить основний редактор. Є хороший шанс, що це просто не підтримує.
мільйозу

umm не тільки в нано, але він також відступає на 8 пробілів, коли я використовую інтерпретатор python в Terminal.
Павший сатана

2
На це відповідь на SuperUser, і його слід закрити як дублікат: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose

6
@millimoose, зміна вкладки зупинки в терміналі не впливає на нано. Це питання має стосуватися конкретно нано або про встановлення зупинок вкладки для Python, але не про обидва, а не про інтерактивне встановлення вкладки зупинки tabкомандою, що стосується не всіх програм.
Кріс Пейдж

Відповіді:


253

Якщо ви використовуєте нано з такою мовою, як python (як у вашому прикладі), це також хороша ідея для перетворення вкладок у пробіли.

Відредагуйте файл ~ / .nanorc (або створіть його) та додайте:

set tabsize 4
set tabstospaces

Якщо ви вже отримали файл з вкладками і хочете перетворити їх у пробіли, рекомендую expandкоманду (оболонку):

expand -4 input.py > output.py

Я використовую м'яту, і коли я встановлюю розмір від 8 до 4 в / etc / nanorc і повертаюся до файлу, я все ще отримую 8 пробілів на вкладці, я навіть намагався скопіювати цей файл nanorc в ~ /. але це не працює, закритий і повторно відкритий термінал, але все одно я не можу отримати 4 пробіли на вкладці, якщо не використовую nano -T4. Спасибі
Олексій

@Alex двічі перевірте , що ваш файл починається з точки .nanorcНЕ nanorc. Це повинно бути розміщено в домашньому довіднику користувачів, тобто /home/your-username/.nanorc.
Свен Рожек

1
Дякую, я в кінцевому підсумку створив ще один .nanorc, відмінний від одного в / etc, помістив його в домашній dir і це спрацювало. Це єдині 3 рядки, які я включив у новий .nanorc для всіх, хто цікавиться: встановіть норап, встановіть 4 табуляції та встановіть пробіли
Алекс

5
Якщо це ваша іграшка, ви можете зробити цю зміну доступною для системи, просто відредагуйте глобальний файл /etc/nanorc. Є кілька інших варіантів, які вам можуть сподобатися.
fcm

Привіт @Alexey Ця команда Linux Shell працює для всіх файлів, але обов'язково вкажіть інший вихідний файл, інакше ваш файл буде очищений.
Свен Рожек

91

Прапор командного рядка

Від 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.

Наприклад, щоб встановити розмір вкладки на 4, замінити вкладки пробілами та відредагувати файл "foo.txt", слід виконати команду:

nano -ET4 foo.txt

Налаштування файлу

Від 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.

Відредагуйте ~/.nanorcфайл (створіть його, якщо його не існує) та додайте до нього ці команди. Наприклад:

set tabsize 4
set tabstospaces

Nano буде використовувати ці налаштування за замовчуванням кожного разу, коли він запускається, але прапори командного рядка замінять їх.


гм ... я не можу знайти файл .nanorc у ~ / каталозі
Fallen Satan

1
Добре, неважливо. Я знаходжу nanorc в каталозі / etc. спасибі хоч
Павший сатана

5
@FallenSatan, як правило, слід уникати редагування / etc / nanorc, якщо не потрібно виконувати налаштування на загальну систему. Створіть ~ / .nanorc, якщо він ще не існує, і розмістіть там свої налаштування.
Кріс Пейдж

1
Зауважте, що у вищенаведеній відповіді потрібно додати рядок "встановити вкладку 4", а не "встановити простір вкладок 4"
Thomas N

1
sudo nano не прийме ~ / .nanorc з очевидних причин; тому прапор командного рядка є більш практичним рішенням проблеми.
user608800

11

У нано 2.2.6 начебто є рядок у ~ / .nanorc для цього

set tabsize 4

Встановлення простору вкладок призвело до помилки: "Невідомий прапор" вкладка ""


4

Для майбутніх глядачів в моєму файлі / etc / nanorc є рядок, близький до рядка 153, який говорить "встановити розмір вкладок 8". Слово може знадобитися вкладками замість простору вкладок. Після того, як я замінив 8 на 4 і прокоментував лінію, це вирішило мою проблему.



0

Для всіх, хто може наткнутися на це старе питання ...

Є одна річ, яку, на мою думку, потрібно вирішити.

~/.nanorcвикористовується для застосування ваших налаштувань користувача до nano, тому якщо ви редагуєте файли, для яких потрібне використання sudo nanoдозволів, це не спрацює.

При використанні sudoкористувацьких файлів конфігурації користувача не завантажуватимуться під час відкриття програми, оскільки ви не запускаєте програму зі свого облікового запису, тому жодна з конфігурацій не змінюється в~/.nanorc не буде застосована.

Якщо це така ситуація, у якій ви опинитесь (хочете запустити sudo nano та використовувати власні налаштування конфігурації), то у вас є три варіанти:

  • використання прапорів командного рядка під час запуску sudo nano
  • редагування /root/.nanorcфайлу
  • редагування /etc/nanorcглобального конфігураційного файла

Майте на увазі, що /etc/nanorcце глобальний файл конфігурації, і як такий він впливає на всіх користувачів, що може бути, а може і не бути проблемою залежно від того, чи є у вас багатокористувацька система.

Крім того, конфігураційні файли користувача замінять глобальний, так що якщо ви редагувались /etc/nanorcта ~/.nanorcмали різні налаштування, під час запуску nanoвони завантажуватимуть налаштування, ~/.nanorcале якщо ви запускаєте, sudo nanoто завантажуватимуть налаштування з /etc/nanorc.

Те ж саме стосується /root/.nanorcцього буде переосмислюватись /etc/nanorcпід час бігуsudo nano

Використання прапорів - це, мабуть, найкращий варіант, якщо у вас є безліч варіантів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.