emacs: як відступити / відрізати область python кодом на 4 пробіли?


60

У мене є область пітонного коду, вибрана в emacs. Які найефективніші способи відступити та відкрутити кожен рядок у ньому на 4 пробіли?

В ідеалі мені хотілося б щось, що не є контекстним (наприклад, це дозволить мені вводити відступи в документах, де відступ не стосується синтаксису python).

Відображається мій рядок режиму (Python). Шукаючи в Інтернеті, я знайшов багато дискусій щодо використання python-modeзамість цього python, але я почав використовувати emacs лише кілька днів тому, тому я насторожено змінюю параметри за замовчуванням, перш ніж у мене з'явився шанс зрозуміти і їх. Якщо зміна на python-modeнайкращий варіант, я рада прийняти це як відповідь.

Що я спробував (з посібника):

  • <TAB> ніякого ефекту
  • C-M-\ ніякого ефекту
  • C-x <TAB> (жорсткий відступ) відступ кожного рядка на один стовпець (і скасовує виділення регіону)
  • M-i відступи одного першого рядка за вкладкою (довжина 8 пробілів)
  • C-M-q - "CMq не визначено"

Єдиний спосіб, який я знайшов, - це використання заміни регулярних виразів, але це надзвичайно багато натискань клавіш для такого простого завдання.

Відповіді:


69

Якщо припустимо, що змінна python-indentдорівнює 4:

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)

5
Мені довелося це робити python-indent-shift-left.
nnyby

17

indent-rigidlyбере аргумент префікса, який вказує, на скільки потрібно відступити, C-u 42 C-x TABвідступів на 42 стовпці, а оскільки аргумент префікса за замовчуванням становить 4, C-u C-x TABвідступи - 4 колонки.

Якщо ви хочете знову вибрати регіон, зробіть це C-x C-xпотім.


8

Використовуйте команду відступів жорстко з числовим префіксом.

C-u 4 M-x indent-rigidlyвідступити область на чотири пробіли, C-u -4 M-x indent-rigidlyвидалити чотири пробіли.


4

Cx Cx позначте код, а потім Mx відступ для вкладки

Це економія, якщо ви натиснули вкладку для кожного рядка.


3

Ви також можете використовувати режим стовпців.

Виберіть рядки в режимі стовпців, а потім додайте відразу чотири пробіли до всіх:

  1. Перейдіть до колонки 1 першого рядка, який ви хочете відкласти.
  2. C-<space> встановити позначку
  3. перемістіть точку вниз до останніх рядків (залиштесь у стовпці перший)
  4. C-x r tперейти до режиму стовпців (або C-<RET>якщо у вас є режим CUA)
  5. <space><space><space><space><RET>

Ви можете зробити аналогічний маневр, щоб видалити чотири пробіли - просто включіть 4 стовпчики до позначеної області (кроки 2-3) та натисніть <DEL>


3

Оновлення рішення Chen вище, в даний час (тестується на Emacs 24.4.1) команди були перейменовані. Отже, якщо припустити, що ви хочете зробити відступ відповідно до змінної python-indent, команди python-indent-shift-left та python-indent-shift-right. Ти можеш:

  1. видайте їх, набравши M-x python-indent-shift-rightабоM-x python-indent-shift-left

  2. використовувати скорочення в режимі python за замовчуванням C-c >таC-c <

  3. відновити їх. Наприклад, на клавіатурі з кнопкою Windows я використовую:

    (global-set-key (kbd "s-s") 'python-indent-shift-left) 
    (global-set-key (kbd "s-d") 'python-indent-shift-right)
    


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.