У меня есть область кода Python, выбранного в Emacs. Каковы наиболее эффективные способы отступа и отступа каждой строки в ней на 4 пробела?
В идеале я хотел бы что-то, что не зависит от контекста (например, это позволит мне делать отступы внутри строк документации, где отступ не связан с синтаксисом Python).
Моя строка режима показывает (Python)
. В поисках в Интернете я нашел много дискуссий об использовании python-mode
вместо python
, но я начал использовать emacs всего несколько дней назад, поэтому я опасаюсь изменить значения по умолчанию, прежде чем у меня появится возможность понять и их. Если переход python-mode
на лучший вариант, я рад принять это как ответ.
Что я пробовал (из руководства):
<TAB>
нет эффектаC-M-\
нет эффектаC-x <TAB>
(Отступ жестко) отступ каждой строки на один столбец (и отменяет выбор области)M-i
отступ первой строки на вкладке (длина 8 пробелов)C-M-q
- "CMq не определено"
Единственный способ, который я нашел, это использовать regex-replace, но это ужасное количество нажатий клавиш для такой простой задачи.
источник
python-indent-shift-left
.indent-rigidly
принимает префиксный аргумент, указывающий, на сколько отступать, поэтому отступ наC-u 42 C-x TAB
42 столбца, а так как префиксный аргумент по умолчанию равен 4,C-u C-x TAB
отступ на 4 столбца.Если вы хотите выбрать регион снова, сделайте
C-x C-x
потом.источник
Используйте команду indent-жестко с числовым префиксом.
C-u 4 M-x indent-rigidly
сделать отступ на четыре пробела,C-u -4 M-x indent-rigidly
убрать четыре пробела.источник
Cx Cx пометить код, а затем Mx режим отступа для табуляции
Это сохранение, если вы нажали клавишу Tab для каждой строки.
источник
Вы также можете использовать режим столбца.
Выберите строки в режиме столбца, затем добавьте четыре пробела ко всем сразу:
C-<space>
поставить отметкуC-x r t
чтобы войти в режим столбца (илиC-<RET>
если у вас есть режим CUA)<space><space><space><space><RET>
Вы можете сделать аналогичный маневр, чтобы удалить четыре пробела - просто включите 4 столбца в отмеченную область (шаги 2-3) и нажмите
<DEL>
источник
Обновляя решение Чена выше, в настоящее время (проверено на Emacs 24.4.1) команды были переименованы. Итак, предполагая, что вы хотите сделать отступ в соответствии с переменной python-indent, командами являются python-indent-shift-left и python-indent-shift-right. Ты можешь:
выдать их, набрав
M-x python-indent-shift-right
илиM-x python-indent-shift-left
использовать стандартные сочетания клавиш в режиме Python
C-c >
иC-c <
привязать их Например, на клавиатуре с кнопкой Windows я использую:
источник
Композиционность - король в Emacs, просто объедините ее
M-i
с https://github.com/magnars/multiple-cursors.el, и у вас есть команда отступа блока. Это вы делаете:M->
N раз (где N - количество строк в блоке)M-i
источник
И то,
S-<LEFT>
иS-<RIGHT>
другое прекрасно работает вPython
основном режиме. Это особенно удобно в режиме Cua, гдеC-c
иC-x
поведение изменяется на копирование / вырезание при выборе региона.источник