2009-03-04 5 views
227

Я пытаюсь заменить символ - скажем ; - с новой строкой, используя replace-string и/или replace-regexp в Emacs.Как заменить символ символом новой строки в Emacs?

Я попытался следующие команды:

  • M-хreplace-stringRET;RET\n

    Это заменит ; 2 персонажей: \n.

  • M-хreplace-regexRET;RET\n

    Это приводит к следующей ошибке (как показано в минибуфере):

    Неправильное использование `\» в текст замены.

Что случилось с использованием replace-string для решения этой задачи? Есть ли другой способ сделать это?

Спасибо.

ответ

340

М-хreplace-stringRET;RETС-д С-J.

  • С-д для quoted-insert,

  • С-J является новой строки.

Cheers!

+1

C-Q действительно 'цитата-insert', который цитирует следующий символ. –

+2

Я считаю, что на самом деле это «цитата», а не «цитата», как в «цитата-вставка». По крайней мере, так оно и есть на версии 22.1. –

+4

Итак, почему '' '' '' 'вместо' C-j' после 'C-q'? – Cactus

22

Не забывайте, что вы всегда можете вырезать и вставлять в минибуфер.

Итак, вы можете просто скопировать символ новой строки (или любую строку) из своего буфера, а затем вытащить его, когда будет предложено заменить текст.

+2

Это действительно хорошая идея для персонажей, которых я не знаю, привязки клавиш , – Lei

7

Более точно:

Для замены пола двоеточия (;) с новой строкой, выполните следующие конкретные шаги.

  1. найти курсор в левом верхнем углу буфера, содержащего текст, который вы хотите изменить
  2. Тип тх заменить строка и нажмите возврат
  3. мини-буфер будет показывать что-то вроде этого: Заменить строку (по умолчанию^- >):
  4. Введите символ, который хотите заменить. В этом случае, ; и нажмите RETURN
  5. Мини-буфер отобразит примерно следующее: string; с:
  6. Теперь выполните Cq Cj
  7. Все экземпляры запятой будут заменены символом новой строки (от местоположения курсора до конца буфера будут появляться)

бит больше, чем оригинальное объяснение говорит.

2

Переключение в текстовом режиме

M-x text-mode 

Выделите блок для отступа

отступа

C+M \ 

переключатель обратно в любой режим ..

52

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

  1. Co

  2. Cq Cj

  3. Сч12 (12 восьмеричное значение символа новой строки)

  4. Сх о в главном окне , убить новая строка с C-к, то С-х о обратно минибуфер, дергать его с C-у

+6

+1 для упоминания 'C-o'!Один минус ключевого удара по сравнению с 'C-q C-j'. Не думал об использовании этого раньше. – itsjeyd

+0

Спасибо за версию 4! Полезно, если у вас есть C-o и C-q отскок. –

+0

Большое спасибо. Можете ли вы объяснить, почему C-o работает, а C-q C-j нет? –