Відповіді:
Ви можете додати префікс за допомогою M-x string-rectangle
, з яким пов'язано C-x r t
. Це частина серії команд, яка діє на прямокутні виділення ; цей вставляє текст у кожному рядку прямокутника.
Почніть із встановлення позначки на початку першого рядка та перемістіть курсор на перший символ останнього рядка, який ви хочете встановити:
*Hello
There
▮I am some code
Потім скористайтеся C-x r t
, введіть свій префікс ( I said
) і натисніть RET
. Це додає текст до кожного рядка прямокутника:
I said Hello
I said There
I said I am some code
Якщо ви не вирівняєте курсор у тому ж стовпці, що і ваш знак, він замінить цю частину прямокутника:
*Hello
There
I am▮ some code
з тією ж командою призводить до:
I said o
I said e
I said some code
M-x string-insert-rectangle
. Це дуже схоже, але string-insert-rectangle
вставляє на початку кожного рядка виділення, тоді як string-rectangle
замінює , тож з останнім ви повинні бути більш точними щодо вашого вибору, якщо ви не хочете нічого перезаписати.
Ви можете використовувати режим з декількома курсорами , щоб розмістити курсор у кожному рядку. Потім будь-який текст, який ви введете, буде вставлений у кожен рядок.
Ви б почали з точки на початку фрагмента коду:
▮Hello
There
I am some code
Потім вдарити C->двічі. (Це запропоноване прив'язка клавіш; його потрібно встановити самостійно.) Це створює два додаткових курсори на наступних двох рядках:
▮Hello
▮There
▮I am some code
Потім введіть I said
. Текст буде доданий у кожному рядку:
I said ▮Hello
I said ▮There
I said ▮I am some code
Нарешті натисніть, RETщоб вийти з режиму декількох курсорів і залишити точку на останньому курсорі:
I said Hello
I said There
I said ▮I am some code
Ось відео, яке показує, як це працює.
Іншим варіантом є використання макросів, які можуть справляти більше завдань, ніж прямокутні виділення або декілька курсорів, навіть якщо це трохи незрозуміло для цього конкретного випадку.
Розташуйте курсор на початку першого рядка та натисніть, F3щоб розпочати запис, вставити текст, перемістити курсор на початок наступного рядка та натисніть, F4щоб зупинити запис. Тепер натисніть F4ще раз, щоб повторити макрос, C-2 F4повторити його двічі або C-0 F4повторити, поки не з’явиться помилка (наприклад, вичерпання рядків).
Ви можете встановити зло і зробити це будь-якою кількістю подібних до вас способів - я віддаю перевагу виділенню візуального блоку за допомогою Ctrl+, Vщоб позначити кожен рядок, а потім Shift+ Iдля вставки, а потім наберіть текст, який ви хочете вставити, і, нарешті, натисніть, ESCщоб вийти з режиму вставки та текст буде попередньо доданий до кожного рядка. Це дуже схоже на вибір прямокутника Emacs, але на кілька менших натискань клавіш.
Це дуже схоже на відповідь артаньона, але replace-regexp
не пов'язане ні з одним ключем.
Отже, я фактично використовую функцію, query-replace-regexp
яка за замовчуванням пов'язана з, C-M-%
а потім замінюю ^
заданим префіксом, I said
а потім набираю, !
щоб замінити все, не вимагаючи більше.
Якщо ви cua-mode
ввімкнули, то:
I said
як текст, який потрібно вставитиЯ віддаю перевагу cua-mode
способу роботи, порівняно зі стандартним прямокутником Emacs, де еквівалент буде:
I said
RET для вставки текстуcua-mode
Зберігає два натискання клавіш по порівнянні зі стандартним Emacs прямокутником.
Але для мене додатковою перевагою cua-mode є те, що я можу додавати текст до прямокутника (я особисто не знаю, як додати текст зі стандартним прямокутником Emacs). У режимі cua це лише одне RETнатискання клавіш, яке вводиться перед I said
.