2009-03-04 21 views
227

Estoy tratando de reemplazar un personaje - digamos ; - con una nueva línea usando replace-string y/o replace-regexp en Emacs.¿Cómo reemplazar un personaje con una nueva línea en Emacs?

he probado los siguientes comandos:

  • M-xreplace-stringRET RET;\n

    Esto reemplazará ; con 2 personajes: \n.

  • M-xreplace-regexRET;RET\n

    Esto da como resultado el siguiente error (que se muestra en el minibúfer):

    Uso no válido de `\' en texto de sustitución.

¿Qué hay de malo en usar replace-string para esta tarea? ¿Hay alguna otra forma de hacerlo?

Gracias.

Respuesta

340

M-xreplace-stringRET;RETC-q C-j.

  • C-q para quoted-insert,

  • C-j es una nueva línea.

¡Salud!

+1

C-q es realmente 'Cotización en insert' que cita el siguiente carácter. –

+2

Creo que en realidad es "citado" en lugar de "citar", como en "inserción citada". Al menos así es en la versión 22.1. –

+4

Entonces, ¿por qué 'Ret' no funciona en lugar de' C-j' después de 'C-q'? – Cactus

22

No olvide que siempre puede cortar y pegar en el minibúfer.

Así que puede simplemente copiar un carácter de nueva línea (o cualquier cadena) de su búfer, luego retírelo cuando se le solicite el texto de reemplazo.

+2

Es realmente una buena idea para los caracteres que no sé el enlace clave . – Lei

7

Más explícitamente:

para reemplazar el carácter punto y coma (;), con un salto de línea, siga estos pasos exactos.

  1. localice cursor en la parte superior izquierda de la memoria intermedia que contiene el texto que desea cambiar
  2. escribe Mx replace-string y pulsa enter
  3. de la mini-buffer mostrará algo como esto: cadena de reemplazo (por defecto^- >):
  4. Type en el carácter que desea reemplazar. En este caso, ; y pulsa RETURN
  5. de la mini-buffer mostrará algo como esto: cadena; con:
  6. Ahora ejecutar Cq Cj
  7. Todas las instancias de punto y coma serán reemplazados un salto de línea (de la posición del cursor hasta el final de la memoria intermedia aparecerá ahora)

Bit más que la la explicación original dice.

2

Cambiar a modo de texto

M-x text-mode 

bloque Resalte de guión

sangría Interruptor

C+M \ 

de nuevo a cualquiera de los modos ..

52

Hay cuatro maneras que he encontrado para poner una nueva línea en el minibúfer.

  1. Co

  2. Cq Cj

  3. Cq12 (12 es el valor octal de salto de línea)

  4. Cx o a la ventana principal matar a un salto de línea con C-k, entonces C-x o de nuevo a la minibuffer, tire de él con C-y

+6

+1 por mencionar 'C-o'!Un golpe de tecla menos en comparación con 'C-q C-j'. No había pensado en usar ese antes. – itsjeyd

+0

¡Gracias por la versión 4! Útil si tienes rebote C-o y C-q. –

+0

Muchas gracias. ¿Puedes explicar por qué C-o funciona y C-q C-j no? –

Cuestiones relacionadas