Как я вставляю n пробелов в emacs?
Я хочу отступы и целые области n пробелов справа или слева. Я могу сделать это в некоторых режимах с C-c > и C-c <, но я хотел бы сделать это в целом.
Если мне нужно изменить мои .emacs, чтобы сделать это эффективным (с ярлыком на клавиатуре, подобным выше), это прекрасно.
Ответы
Ответ 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
три раза, чтобы выйти, выполнив ~