Подтвердить что ты не робот

Как я вставляю n пробелов в emacs?

Я хочу отступы и целые области n пробелов справа или слева. Я могу сделать это в некоторых режимах с C-c > и C-c <, но я хотел бы сделать это в целом.

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

4b9b3361

Ответ 1

Что для меня работает: выберите область, а затем 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)

Ответ 2

Ключевой частью ответа Sandro является вызов 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.

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

Ответ 3

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

;; 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-жестко - это интерактивная скомпилированная функция Lisp в 'indent.el'.

Это связано с Cx TAB.

(абзац-жестко НАЧАТЬ КОНЕЦ АРГ)

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

Ответ 4

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

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

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

Ответ 5

Вы знаете о Rectangles, правильно?

Ответ 6

Используйте cua-mode.

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