Предполагая, что переменная python-indent
равна 4:
M-x python-shift-right (C-c >) M-x python-shift-left (C-c <)
У меня есть область кода 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
равна 4:
M-x python-shift-right (C-c >) M-x python-shift-left (C-c <)
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 я использую:
(global-set-key (kbd "s-s") 'python-indent-shift-left) (global-set-key (kbd "s-d") 'python-indent-shift-right)
Composability is the king with Emacs, just combine M-i
with https://github.com/magnars/multiple-cursors.el and you have your indent block command. That is you do:
M->
N times (where N is the number of lines in block)M-i
И то, S-<LEFT>
иS-<RIGHT>
другое прекрасно работает в Python
основном режиме. Это особенно удобно в режиме Cua, где C-c
и C-x
поведение изменяется на копирование / вырезание при выборе региона.