Як зрушити вибрану область тексту в Emacs на певну кількість пробілів?


26

Я пишу код python, тому зміщення / переміщення блоків рядків важливо, щоб не переходити кожен рядок окремо. Як я можу це зробити без додатка? Чи існує команда натискання клавіш операції для цього?


3
Щоб отримати відповіді, що не стосуються Python, див. Emacs.stackexchange.com/q/11 та emacs.stackexchange.com/q/18 .
legoscia

Відповіді:


40

Використовуйте команду indent-rigidly, яка C-x TABза замовчуванням прив’язана .

Ви можете вказати кількість пробілів для відступу, використовуючи аргумент префікса , наприклад C-5 C-x TAB.

Або ви можете викликати команду, а потім використовувати стрілки вліво / вправо для інтерактивного регулювання рівня відступу.


як додати аргумент префікса?
Вас

1
Спробуйте, наприклад, C-5 C-x TABвідступити в цьому регіоні 5 пробілів.
глюкас

чудово, але чому перший рядок також не рухається? Мені потрібно схопити останню частину рядка над виділенням, щоб зробити набір ліній, які я хочу перемістити.
Вас

1
Вам не потрібно нічого вибирати з попереднього рядка, але ви хочете вибрати з початку першого рядка, який ви хочете відступити. Наприклад, C-aперейти на початок рядка, C-SPCпочати маркування регіону, C-n C-nпросунути пару рядків вниз, C-5 C-x TABвідступити ці два рядки.
glucas

1
"використовувати стрілки вліво / вправо для інтерактивного регулювання рівня відступу" Дійсно? Чудово! Я цього не знав, і іноді мені доводилося здогадуватися, скільки пробілів потрібно додати чи видалити. Я сподіваюся, що це може допомогти.
imz - Іван Захарящев

9

Якщо ви використовуєте python-mode.el C-c >або C-c <для переміщення блоків вліво або вправо


як так, що перший рядок виділення залишається непорушеним, якщо я не вибираю останню частину рядка над ним?
Вас

Я не можу відтворити таку поведінку. весь рядок виділених елементів переміщений. Emacs 24.4
Lompik

У коментарі glucas сказано, що це станеться, якщо ви не виберете з початку рядка
Vass

6

string-rectangleКоманда ( C-x r t) може бути використана , щоб вставити будь-який довільний текст (включно з пробілами) в обраній галузі.

Скажімо, у вас є цей блок тексту, і ви хочете вставити 5 пробілів перед усіма рядками.

abc
  def
    ghi

Спочатку виберіть область "0 стовпця", як показано нижче (точка знаходиться на символі "a", а позначка знаходиться в тому ж стовпці рядка, що містить "ghi":

▮bc
  def
▯   ghi

Тепер за допомогою string-rectangleвставте текст, який ви хочете вставити у вибраний регіон. У цьому прикладі ми будемо вставляти 5 пробілів у всі рядки, включаючи та між точкою та позначкою.

C-x r t M-5 SPC RET

Це дасть нижчу силу з відступним текстом.

     abc
       def
         ghi

4

Є C-x TAB(зв'язаний indent-rigidly). Надайте йому аргумент префікса, який вказує, на скільки пробілів ви хочете відступити, а мінус видаляє багато пробілів.


0

Я виявив, що натискаючи Alt-4, а потім SPC, я отримую бажаний результат. Не впевнений, чи це найкращий спосіб, але він також працює.

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