Установить отступ для функции сценария оболочки


11

Я пытаюсь установить количество пробелов на отступ для запуска новой функции sh-mode(подрежим bash). Я попытался установить:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(как показано custom-set-variablesв .emacs) и некоторые другие , а также, но ни один из них не имели никакого эффекта!


Способ установки переменных - не через custom-set-variables(это то, что используется внутри Customize, но не предназначено для использования вручную). Лучше использовать такие вещи, как (setq sh-basic-offset 2).
Стефан

Ответы:


7

sh-basic-offsetТребуется установка требуемого отступа, но я не осознавал, что также необходимо закрыть и снова открыть все файлы сценариев оболочки, прежде чем настройка вступит в силу. Я не могу вспомнить когда-либо делать это раньше в Emacs.


1
После изменения .emacsвы должны либо выйти из emacs и перезапустить его, либо использовать M-x load-fileдля его перезагрузки. .emacsЕсли вы хотите перезагрузить файл, который вы открыли в редакторе, вы можете сказать C-x C-v RETURN«пересмотреть» его.
Алекс Л

Загрузочный файл @AlexL не работает в этом конкретном случае. Как я уже сказал, это очень необычно. Обычно достаточно просто настроить переменную.
Робин Грин,

Хм ... ты знаешь, почему это будет @ robin-green? Мне любопытно.
Алекс Л

Вы также можете использовать, M-x set-variableесли вы хотите просто изменить это для буфера, в котором вы работаете.
kotakotakota

1

Я установил basic-offset на 2, но это, похоже, не сработало, я снова нажал C-h v sh-<TAB>и понял, что sh-indentationя установил эту переменную на 2, и теперь все, похоже, работает как шарм.


Пожалуйста, уточните, что вы подразумеваете под «set-basic-offset», а также уточните, как именно вы «устанавливаете эту переменную на 2».
Стефан

В форуме пропущена вкладка, потому что я поместил между большим и меньшим символом. Ch v sh- "нажмите вкладку" автозаполнение покажет вам список переменных.
Альбаро Перейра

Я исправил вашу разметку, но ваш комментарий все еще не объясняет, что вы имели в виду под «set-basic-offset», и как вы «устанавливаете эту переменную на 2».
Стефан

Эта переменная устарела с 26.1, используйте sh-basic-offsetвместо этого.
goetzc

0

У меня был тот же опыт, что и у Albaro: настройка sh-basic-offset не имела никакого эффекта, но настройка sh-indentation работала как положено.

В моем случае я оценивал (setq sh-basic-offset 2)с помощью emacs, например. через Mx eval-выражение. Я бегу GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Мой основной режим - Shell-скрипт.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.