Работая с Python в Emacs, если я хочу добавить try / except к блоку кода, я часто обнаруживаю, что мне приходится делать отступ для всего блока построчно. Как в Emacs сделать отступ сразу для всего блока?
Я не опытный пользователь Emacs, но считаю, что это лучший инструмент для работы через ssh. Я использую Emacs в командной строке (Ubuntu), а не как графический интерфейс, если это имеет значение.
C-c >
правильно.C-c <
слеваОтветы:
Если вы программируете Python с помощью Emacs, вам, вероятно, следует использовать режим python. В режиме python после разметки блока кода
C-c >
илиC-c C-l
сдвигает область на 4 пробела вправоC-c <
илиC-c C-r
сдвигает область на 4 пробела влевоЕсли вам нужно сдвинуть код на два уровня отступа или на произвольную величину, вы можете префикс команды с аргументом:
C-u 8 C-c >
сдвигает область на 8 делений вправоC-u 8 C-c <
сдвигает область на 8 делений влевоДругой альтернативой является использование,
M-x indent-rigidly
которое связано сC-x TAB
:C-u 8 C-x TAB
сдвигает область на 8 делений вправоC-u -8 C-x TAB
сдвигает область на 8 делений влевоТакже полезны команды прямоугольника, которые работают с прямоугольниками текста вместо строк текста.
Например, отметив прямоугольную область,
C-x r o
вставляет пустое пространство для заполнения прямоугольной области (эффективно сдвигая код вправо)C-x r k
убивает прямоугольную область (эффективно сдвигая код влево)C-x r t
запрашивает строку, которой нужно заменить прямоугольник. ПриC-u 8 <space>
вводе будет введено 8 пробелов.PS. В Ubuntu, чтобы сделать режим Python режимом по умолчанию для всех файлов .py, просто установите
python-mode
пакет.источник
C-c >
определен в python-mode.el, поэтому я думаю, вы должны были установитьpython-mode
пакет где-то по пути. Рад, что это работает для вас.C-c C-l
и этоC-c C-r
должны быть пользовательские привязки, которые вы установили самостоятельно. Если вы запуститеemacs -q
(чтобы запустить emacs без загрузки файла инициализации), вы увидите, что нет привязки для режима PythonC-c C-l
илиC-c C-r
в нем.В дополнение к
indent-region
, которое отображаетсяC-M-\
по умолчанию, команды редактирования прямоугольника очень полезны для Python. Отметьте регион как нормальный, затем:C-x r t
(string-rectangle
): запросит символы, которые вы хотите вставить в каждую строку; отлично подходит для вставки определенного количества пробеловC-x r k
(kill-rectangle
): удалить область прямоугольника; отлично подходит для удаления вмятинВы также можете
C-x r y
(yank-rectangle
), но это редко бывает полезно.источник
indent-region
mapped toC-M-\
должен помочь.источник
Я использовал эту функцию для обработки отступов и отмены отступов:
А потом назначаю это сочетанию клавиш:
источник
Я новичок в Emacs, поэтому этот ответ, вероятно, бесполезен.
Ни один из ответов, упомянутых до сих пор, не касается повторного отступа литералов, таких как
dict
илиlist
. Например,M-x indent-region
orM-x python-indent-shift-right
and company не помогут, если вы вырезали и вставили следующий литерал и нуждаетесь в разумном изменении отступа:Кажется, что
M-x indent-region
нужно делать что-то разумноеpython-mode
, но это (пока) не так.В конкретном случае, когда ваши литералы заключены в квадратные скобки, использование TAB в соответствующих строках дает то, что вы хотите (потому что пробелы не играют роли).
Поэтому в таких случаях я быстро записывал макрос клавиатуры, например,
<f3> C-n TAB <f4>
F3, Ctrl-n (или стрелка вниз), TAB, F4, а затем многократное использование F4 для применения макроса может сэкономить пару нажатий клавиш. Или можно вообщеC-u 10 C-x e
нанести 10 раз.(Я знаю, что это звучит не так уж и много, но попробуйте изменить отступ на 100 строк буквального мусора, не пропуская стрелку вниз, а затем нужно подняться на 5 строк и повторить что-то;)).
источник
Я использую следующий фрагмент. На вкладке, когда выделение неактивно, текущая строка отступает (как обычно); когда выделение неактивно, вся область сдвигается вправо.
источник
Делайте отступы в интерактивном режиме.
Скопировано из моего сообщения в: Отступ на несколько строк в Emacs
источник
Я делаю что-то подобное повсеместно
источник