LINUX.ORG.RU

[Emacs] Индентация текста

 


0

1

Делаю очередной подход к станку, разбираюсь с емаксом.

Появился вопрос: есть ли возможность быстро менять способ применяемой индентации?

В vim для этого есть set expandtab/noexpandtab
ширина табуляции тоже указывается в переменной. Также в vim клавиша tab работает как привычно - сдвигает текст на ширину табуляции.

Можно сдвинуть выделенный блок с помощью комманды >> или <<.

В emacs клавиша tab сдвигает строку так, чтобы смещение было такое, каким она считает нужным, а просто смещает текст комбинация M-i.

Можно ли сделать поведение emacs более привычным? Т.е. иметь возможность задать для данного буфера метод индентации, с помощью клавиши tab сдвигать строку на определенное количество символов, и уметь также двигать блоки текста.

Возможно я хочу противоестественного, и emacs-way предполагает другой путь решения подобных задач, тогда был бы рад услышать комментарии по этому поводу.

И, пожалуй, еще. Если есть гуру emacs, который может порой отвечать на подобные вопросы новичка, отзовитесь. =)


>Можно ли сделать поведение emacs более привычным?

Я тебе советую таки привыкнуть к емаксовому. Там есть настройки для параметров индентации (для си и с++ есть стили, k&r, ollman, итд - через c-set-style). Плюс можно самому настроить дополнительно.

Ставить табы самому на глаз, как хочется - это ужасно, получается криво отформатированный код.

Так что лучше настрой как лучше, чем отключай.

Ну и

http://www.emacswiki.org/emacs/IndentingC

И способ отключить: http://www.emacswiki.org/emacs/IndentingC#toc7

anonymous
()

disclaimer: я не гуру emacs

Появился вопрос: есть ли возможность быстро менять способ применяемой индентации? В vim для этого есть set expandtab/noexpandtab ширина табуляции тоже указывается в переменной.

Распишите поподробнее, что делает expandtab/noexpandtab в виме. Потому что не понятно, чего вам хочется. :)

В emacs клавиша tab сдвигает строку так, чтобы смещение было такое, каким она считает нужным, а просто смещает текст комбинация M-i.

Можно ли сделать поведение emacs более привычным? Т.е. иметь возможность задать для данного буфера метод индентации, с помощью клавиши tab сдвигать строку на определенное количество символов, и уметь также двигать блоки текста.

Для того, что бы задавать комбинации клавиш для текущего буффера есть функция local-set-key. Соответственно, что бы клавиша TAB в текущем буффере работала как M-i, нужно выполнить (local-set-key [tab] 'tab-to-tab-stop). Например с помощью M-: или написать свою функцию, и забиндить ее на какую-нибудь клавишу.

Можно ли сделать поведение emacs более привычным?

После того, как разберёшься с ELISP, можно всё. :)

nozh
()
Ответ на: комментарий от nozh

в режиме expandtab вместо всех символов табуляции при нажатии на <TAB> вставляется количество пробелов, равное tabwidth

can3p
() автор топика
Ответ на: комментарий от anonymous

>Я тебе советую таки привыкнуть к емаксовому. Там есть настройки для параметров индентации (для си и с++ есть стили, k&r, ollman, итд - через c-set-style). Плюс можно самому настроить дополнительно.

А для не c-style языков это где настраивается? В частности в html-helper-mode после тега body считается правильным нулевой отступ, что неверно.

Ставить табы самому на глаз, как хочется - это ужасно, получается криво отформатированный код.

Форматирую я код в одном стиле, так что получается нормально, просто привычен более полный контроль над отступами, как в vim - он подсказывает правильное положение курсора, но при этом все можно сдвинуть вперед назад.

А как быстро переключиться между вставкой отступов пробелами или табами?

can3p
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.