Як додати префікс до кожного рядка?


35

Я маю код нижче:

Hello
There
I am some code

І хочете додати код перед ним, як:

I said Hello
I said There
I said I am some code

То як би я додавав префікс до кожного рядка?

Відповіді:


47

Ви можете додати префікс за допомогою 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

3
ви друга людина, яка отримала добрий знак знака :)
nicael

Альтернативою є використання M-x string-insert-rectangle. Це дуже схоже, але string-insert-rectangle вставляє на початку кожного рядка виділення, тоді як string-rectangle замінює , тож з останнім ви повинні бути більш точними щодо вашого вибору, якщо ви не хочете нічого перезаписати.
Джефф Клітіс

32

Ви можете використовувати режим з декількома курсорами , щоб розмістити курсор у кожному рядку. Потім будь-який текст, який ви введете, буде вставлений у кожен рядок.

Ви б почали з точки на початку фрагмента коду:

▮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

Ось відео, яке показує, як це працює.



12

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

Розташуйте курсор на початку першого рядка та натисніть, F3щоб розпочати запис, вставити текст, перемістити курсор на початок наступного рядка та натисніть, F4щоб зупинити запис. Тепер натисніть F4ще раз, щоб повторити макрос, C-2 F4повторити його двічі або C-0 F4повторити, поки не з’явиться помилка (наприклад, вичерпання рядків).


9

Ви можете встановити зло і зробити це будь-якою кількістю подібних до вас способів - я віддаю перевагу виділенню візуального блоку за допомогою Ctrl+, Vщоб позначити кожен рядок, а потім Shift+ Iдля вставки, а потім наберіть текст, який ви хочете вставити, і, нарешті, натисніть, ESCщоб вийти з режиму вставки та текст буде попередньо доданий до кожного рядка. Це дуже схоже на вибір прямокутника Emacs, але на кілька менших натискань клавіш.


7

Це дуже схоже на відповідь артаньона, але replace-regexpне пов'язане ні з одним ключем.

Отже, я фактично використовую функцію, query-replace-regexpяка за замовчуванням пов'язана з, C-M-%а потім замінюю ^заданим префіксом, I saidа потім набираю, !щоб замінити все, не вимагаючи більше.


4

Якщо ви cua-modeввімкнули, то:

  • C-a перейти до початку рядка,
  • C-RET щоб почати прямокутник,
  • (клавіша вниз) двічі, щоб перейти до третього рядка,
  • I said як текст, який потрібно вставити
  • C-RET до кінця прямокутника

Я віддаю перевагу cua-modeспособу роботи, порівняно зі стандартним прямокутником Emacs, де еквівалент буде:

  • C-a перейти до початку рядка,
  • C-SPC щоб почати прямокутник,
  • (клавіша вниз) двічі, щоб перейти до третього рядка,
  • C-x r t I said RET для вставки тексту

cua-modeЗберігає два натискання клавіш по порівнянні зі стандартним Emacs прямокутником.

Але для мене додатковою перевагою cua-mode є те, що я можу додавати текст до прямокутника (я особисто не знаю, як додати текст зі стандартним прямокутником Emacs). У режимі cua це лише одне RETнатискання клавіш, яке вводиться перед I said.

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