Как сделать символ табуляции 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

Nano - довольно простой редактор. Есть хороший шанс, что это просто не поддерживает.
миллимус

ммм не только в нано, но он также отступ на 8 пробелов, когда я использую интерпретатор Python в терминале.
Падший сатана

2
Ответы даны в SuperUser и должны быть закрыты как дубликаты: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose

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

Ответы:


254

Если вы используете nano с таким языком, как python (как в вашем примере), также неплохо будет преобразовать табуляцию в пробелы.

Отредактируйте файл ~ / .nanorc (или создайте его) и добавьте:

set tabsize 4
set tabstospaces

Если у вас уже есть файл с вкладками и вы хотите преобразовать его в пробелы, я рекомендую expandкоманду (shell):

expand -4 input.py > output.py

Я использую mint, и когда я устанавливаю tabsize от 8 до 4 в / etc / nanorc и возвращаюсь к файлу, я все еще получаю 8 пробелов на вкладке, я даже пытался скопировать этот файл nanorc в ~ /. но это не работает, закрыл и снова открыл терминал, но все равно я не могу получить 4 пробела на вкладке, если я не использую nano -T4. Спасибо
Алекс

@ Алекс дважды проверьте, что ваш файл начинается с точки .nanorcне nanorc. Это должно быть помещено в вашем пользователей домашнего каталога, то есть /home/your-username/.nanorc.
Свен Рожек

1
Спасибо, в итоге я создал еще один .nanorc, отличный от того, что был в / etc, поместил его в домашний каталог, и это сработало. Это единственные 3 строки, которые я включил в новый .nanorc для всех, кто интересуется: установите nowrap, установите tabsize 4 и установите tabstospaces
Alex

5
Если это ваша игрушка, вы можете сделать это изменение доступным для всей системы, просто отредактируйте глобальный файл /etc/nanorc. Там есть несколько других вариантов, которые вам могут понравиться.
2015 г.

Привет, Алексей. Эта команда 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 в каталоге ~ /
Падший сатана

1
Хорошо, не бери в голову. Я нахожу nanorc в каталоге / etc. хотя спасибо
Падший сатана

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

1
Обратите внимание, что в приведенном выше ответе вам нужно добавить строку «установить вкладку 4», а не «установить вкладку 4»
Thomas N

1
sudo nano не будет принимать ~ / .nanorc по очевидной причине; поэтому флаг командной строки является более практичным решением проблемы.
user608800

11

В nano 2.2.6 строка в ~ / .nanorc для этого выглядит так:

set tabsize 4

Настройка tabspace дала мне ошибку: «Неизвестный флаг« tabspace »»


4

Для будущих зрителей в моем файле / etc / nanorc есть строка, близкая к строке 153, где указано «set tabsize 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.