Tengo un archivo de texto. ¿Puede Emacs seleccionar texto basado en expresiones regulares y ponerlo en kill-ring, para que pueda copiarlo en otro lugar? Algo como regex-kill-ring-save?copia de Emacs con expresión regular
Respuesta
inspirada en los comentarios ya dados (la respuesta Charles no funciona como yo quiero), he añadido una nueva función para el mapa del modo isearch/isearch-expresión regular que pone únicamente la cadena coincidente en el histórico de recortes (mientras que la propuesta de Charles mata desde el punto actual hasta el final de emparejar la secuencia):
(defun hack-isearch-kill()
"Push current matching string into kill ring."
(interactive)
(kill-new (buffer-substring (point) isearch-other-end))
(isearch-done))
(define-key isearch-mode-map (kbd "M-w") 'hack-isearch-kill)
lo bueno de la/enfoque isearch isearch-expresión regular (que se puede activar con C-s
y C-M-s
respectivamente) es que puede ver crecer su cadena de búsqueda y puede copiar con M-w
tan pronto como esté satisfecho (y regrese a donde ha estado antes con C-u C-Space
).
Esto funciona para mí con Emacs 23.1. No sé si funcionará en todas las situaciones. De todos modos espero que les sea útil :)
ACTUALIZACIÓN: pasar por el EmacsWiki Tropecé con KillISearchMatch lo que sugiere más o menos las mismas (más algunos consejos más ...).
Saludos, Daniel
No estoy seguro de si hay una función de este tipo ya, pero lo que puedo hacerlo con una macro de teclado:
- comenzar a grabar un macro kbd:
C-x (
- Busque su expresión regular con
search-forward-regexp
- Mueva al principio de su coincidencia (el texto que desea eliminar) con los diversos comandos de navegación de emacs, por ejemplo
search
obackward-word
etc. - Marca:
C-spc
- Mover al final de su partido
- Mata al texto:
C-w
Luego, puede nombrar la macro de teclado con M-x name-last-kbd-macro
para que pueda ejecutar el macro con un nombre en lugar de C-x e
.
Si desea guardar la macro para sesiones futuras, puede abrir su .emacs
e insertar la macro en el búfer con M-x insert-kbd-macro
. Después de lo que puede vincular una clave a la macro tal como lo hace con las teclas de las funciones normales de emacs, p. (global-set-key "\C-c m" 'funky-macro-macro)
.
Isearch+ hace esto ya. Opcionalmente establece la región alrededor del objetivo de búsqueda. Puede usar C-SPC en cualquier momento durante Isearch para alternar esto.
- 1. Emacs: reemplace la expresión regular con el aviso por coincidencia
- 2. expresión regular con -, ::, (y)
- 3. líneas de copia de correspondencia de Emacs
- 4. Emacs: expresión regular que sustituyen a cambiar caso
- 5. expresión regular "contiene" otra expresión regular
- 6. ¿Expresión regular para encontrar una expresión regular?
- 7. Python lambda con expresión regular
- 8. tipo Bash con expresión regular
- 9. Coincidir con la expresión regular
- 10. actualización de MySQL con expresión regular
- 11. Comprobación de diacríticos con una expresión regular
- 12. expresión regular de Java con lookahead
- 13. Expresión regular con retorno de carro
- 14. expresión regular de Python con los codones
- 15. Expresión regular que coincide con todo excepto con una expresión regular dada
- 16. ¿Hay una expresión regular para detectar una expresión regular válida?
- 17. Rompecabezas de expresión regular
- 18. Problema de expresión regular
- 19. Expresión regular de Python
- 20. Comprueba si una expresión regular cubre otra expresión regular
- 21. Mercurial .hgignore expresión regular
- 22. expresión regular sin caracteres
- 23. Expresión regular: rango numérico
- 24. ¿Cómo puedo generar texto que coincida con una expresión regular de una expresión regular?
- 25. Expresión regular opuesta
- 26. Expresión regular reemplazar
- 27. expresión regular en iOS
- 28. Netbeans multilínea Expresión Regular
- 29. Simplifique esta expresión regular
- 30. Expresión regular ¿Coincide con líneas múltiples variables?
Gracias, es justo lo que quería, pero no pude hacer ya que apestaba en LISP. –