¿Cómo puedo dividir un párrafo en oraciones con Vim?


3

Al dividir en oraciones, quiero decir que cada nueva oración debe comenzar con una nueva línea.

Como repetir )i<CR><Esc> hasta el final del párrafo }? ( <CR> = Entrar )

Si hago una macro )i<CR><Esc> como "q", ¿puedo ejecutarlo hasta el final del párrafo?

Respuestas:


2

Puedes hacer una búsqueda y reemplazar. Acabo de escribir esto. Funciona, pero probablemente podrías hacerlo mejor.

:%s/\v[ ]*([^\.]*\.)/\1\r/g

2
vap:s/\. /.^M/g
  • vap selecciona tu párrafo actual
  • :s/\. /.^M/g Reemplace todos los períodos seguidos por un espacio con un período seguido por una nueva línea. (Tenga en cuenta que para obtener esa nueva línea literal ( ^M ) en la expresión de reemplazo, tendrás que escribir <CTRL-V><CR>.)

0

Mi solución, comience en modo normal y escriba:

vip:'<,'>s/\n/ /|'<,'>s/\([.?!]\)\s/\1\r/g

Tenga en cuenta que el primer '& lt;,' & gt; se insertará automáticamente en la línea de comandos cuando presione la tecla ":" después de escribir " vip "en modo normal.

El primer sustituto une el párrafo en una línea, luego el "|" el carácter delimita un segundo: -comando dentro de la misma línea de comando, y esta vez el " '<,'> "debe escribirse a mano. El segundo comando de sustitución reemplaza un punto, un signo de interrogación o un signo de exclamación seguido de un espacio con el símbolo correspondiente y una nueva línea.

Esto no detectará instancias en las que una oración termina con un punto / exclamación / pregunta y un carácter de cita, etc., pero el patrón puede extenderse para hacerlo.


0

Encontré que hay una manera muy fácil de hacer esto usando vim-macros.

  • Primero en normal mode prensa q, entonces cualquier clave, supongamos que esa clave es a. Así verás algo en la parte inferior como recording @a.
  • Ahora sigue la secuencia de teclas como 0)i<cr><esc>q Ahora tu macro es grabado. Esto romperá el párrafo en . .
  • Ahora, repita esta macro tantas veces presionando N@a en modo normal, donde N es cualquier numero

Nota : Puede elegir cualquier carácter alfanumérico para almacenar su macro que a, esta macro rompe la línea en ., puedes elegir cualquier columna simplemente reemplazar . por cualquiera N de su elección.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.