Как сделать отступ в n пробелов в Emacs? - PullRequest
25 голосов
/ 03 августа 2011

Я хочу сделать отступ и всю область n пробелами вправо или влево.Я могу сделать это в некоторых режимах с помощью Cc> и Cc <, но я бы хотел сделать это в целом. </p>

Если мне нужно изменить свои .emacs, чтобы сделать это эффективным (с помощью сочетания клавишкак выше) это нормально.

Ответы [ 6 ]

30 голосов
/ 06 августа 2012

Что работает для меня: выберите регион и затем C-u <number of spaces> C-x TAB

Обновление

@ Эрик Мы могли бы определить функцию и привязать ее к сочетанию клавишнапример, C-x C-TAB.Попробуйте добавить это в конфигурацию emacs.

(defun insert-tabs (n)
  "Inserts N number of tabs"
  (interactive "nNumber of tabs: ")
  (dotimes (i n)
    (indent-for-tab-command)))

(global-set-key [?\C-x \C-tab] 'insert-tabs)
13 голосов
/ 03 августа 2011

Ключевой частью ответа Сандро является звонок на indent-rigidly.

C-x TAB (translated from C-x <tab>) runs the command indent-rigidly,
which is an interactive compiled Lisp function in `indent.el'.

It is bound to C-x TAB.

(indent-rigidly start end arg)

Indent all lines starting in the region sideways by arg columns.
Called from a program, takes three arguments, start, end and arg.
You can remove all indentation from a region by giving a large negative arg.

Итак, отметьте регион, введите числовой аргумент, нажмите C-x TAB.

9 голосов
/ 03 августа 2011

Я думаю, что следующий фрагмент кода может вам помочь:

;; Shift the selected region right if distance is positive, left if
;; negative

(defun shift-region (distance)
  (let ((mark (mark)))
    (save-excursion
      (indent-rigidly (region-beginning) (region-end) distance)
      (push-mark mark t t)
      ;; Tell the command loop not to deactivate the mark
      ;; for transient mark mode
      (setq deactivate-mark nil))))

(defun shift-right ()
  (interactive)
  (shift-region 1))

(defun shift-left ()
  (interactive)
  (shift-region -1))

;; Bind (shift-right) and (shift-left) function to your favorite keys. I use
;; the following so that Ctrl-Shift-Right Arrow moves selected text one 
;; column to the right, Ctrl-Shift-Left Arrow moves selected text one
;; column to the left:

(global-set-key [C-S-right] 'shift-right)
(global-set-key [C-S-left] 'shift-left)

Вы можете заменить (shift-region 1) и (shift-region 1) на желаемое значение.

РЕДАКТИРОВАТЬ: Как вы можете видеть, моя функция заключает в себе отступ:

indent-жестко - это интерактивная скомпилированная функция Лиспа в `Indent.el».

Он связан с C-x TAB.

(абзац с жестким отступом ARG)

Отступ для всех строк, начинающихся в регионе сбоку, по столбцам ARG. Вызывается из программы, принимает три аргумента, START, END и ARG. Вы может удалить все отступы из области, давая большой отрицательный ARG.

8 голосов
/ 03 августа 2011

Также полезны команды rectangle , которые работают с прямоугольниками текста вместо строк текста.

Например, после маркировки прямоугольной области

C-x r o вставляет пустое пространство для заполнения прямоугольной области (эффективно смещая код вправо) C-x r k убивает прямоугольную область (эффективно смещаякод слева)

2 голосов
/ 03 августа 2011

Вы знаете о Прямоугольниках , верно?

0 голосов
/ 31 марта 2014

Использование cua-mode.

M-x cua-mode до активного, C-RET, чтобы выбрать первый столбец всей области, и введите пробел, наконец, esc три раза, чтобы выйти, готово ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...