¿Hay algún módulo o comando que me permita enviar la región actual a Shell? Quiero tener algo así como "python-send-region" de Python-mode que envía la región seleccionada al shell de Python actualmente en ejecución.Modo Emacs Shell: ¿cómo enviar la región a la shell?
Respuesta
Ok, escribió un poco fácil. Probablemente dedique algo de tiempo a escribir un modo menor completo.
Por el momento, la siguiente función enviará la línea actual (o región si la marca está activa). Hace un buen trabajo para mí:
(defun sh-send-line-or-region (&optional step)
(interactive())
(let ((proc (get-process "shell"))
pbuf min max command)
(unless proc
(let ((currbuff (current-buffer)))
(shell)
(switch-to-buffer currbuff)
(setq proc (get-process "shell"))
))
(setq pbuff (process-buffer proc))
(if (use-region-p)
(setq min (region-beginning)
max (region-end))
(setq min (point-at-bol)
max (point-at-eol)))
(setq command (concat (buffer-substring min max) "\n"))
(with-current-buffer pbuff
(goto-char (process-mark proc))
(insert command)
(move-marker (process-mark proc) (point))
) ;;pop-to-buffer does not work with save-current-buffer -- bug?
(process-send-string proc command)
(display-buffer (process-buffer proc) t)
(when step
(goto-char max)
(next-line))
))
(defun sh-send-line-or-region-and-step()
(interactive)
(sh-send-line-or-region t))
(defun sh-switch-to-process-buffer()
(interactive)
(pop-to-buffer (process-buffer (get-process "shell")) t))
(define-key sh-mode-map [(control ?j)] 'sh-send-line-or-region-and-step)
(define-key sh-mode-map [(control ?c) (control ?z)] 'sh-switch-to-process-buffer)
Enjoy.
Felicitaciones, muchas gracias. Solo una cosa, no estoy seguro de si realmente debido a su diversión (soy nuevo en emacs): la salida no se desplaza automáticamente hacia abajo. – vemv
@vemv, '(setq comint-scroll-to-bottom-on-output t)' resolverá su problema. – VitoshKa
Magia! Obtener una respuesta rápida para una pregunta relativamente vieja es el máximo placer. – vemv
M-x shell-command-on-región
aka.
M- |
Eso hace algo diferente: solicita un comando de shell y envía la selección a ese comando. Quiero que la región se envíe directamente a shell (es decir, si destaco "ls" y lo envío, sería lo mismo que pegar "ls" en el búfer * Shell *) –
Esto funciona bien si solo lo canalizas para golpear o cualquier armazón que quieras. Un poco de hack, pero te permite hacerlo sin escribir funciones adicionales. – WLPhoenix
@WLPhoenix ¿puedes detallar por favor? – nicolas
¿Desea que el comando se ejecute automáticamente, o simplemente ingrese en la línea de comando en preparación?
M-xappend-to-buffer
RET entrará en el texto seleccionado en la memoria intermedia fijada en el punto, pero el comando no sería ejecutado por la cáscara.
Una función de envoltura para eso podría elegir automáticamente *shell*
para el búfer (o más inteligentemente seleccionar/solicitar basándose en búferes actuales en modo de shell), y luego llamar a append-to-buffer.
Puede grabar trivialmente una macro de teclado para copiar la región, cambiar a *shell*
, yank, y entrar (si es necesario).
F3M-wC-xb*shell*
RETC-yRETF4
C-xC-knmy-execute-region-in-shell
RET
M-xinsert-kbd-macro
RET RETmy-execute-region-in-shell
(global-set-key (kbd "C-c e") 'my-execute-region-in-shell)
(defun shell-region (start end)
"execute region in an inferior shell"
(interactive "r")
(shell-command (buffer-substring-no-properties start end)))
Esto es realmente excelente, me permite replicar la funcionalidad del editor Acme que más me importa. – sea6ear
Mxappend-to-buffer
RET
escribí un paquete que envía/líneas o zonas de código de tuberías para bombardear procesos, básicamente algo similar que ESS es para R. También permite múltiples procesos de shell para existir y le permite elegir a cuál enviar la región.
un vistazo aquí: http://www.emacswiki.org/emacs/essh
¡Hermoso paquete! – Nisba
Modificación Jurgens respuesta anterior para operar en un búfer específico da la siguiente función, que enviará la región y luego cambiar a la memoria intermedia, que muestra en otra ventana, el búfer llamado PYTHON se utiliza para la ilustración. El búfer de destino ya debería estar ejecutando un shell.
(defun p-send(start end)
(interactive "r") ;;Make the custom function interactive and operative on a region
(append-to-buffer (get-buffer "*PYTHON*") start end) ;;append to the buffer named *PYTHON*
(switch-to-buffer-other-window (get-buffer "*PYTHON*")) ;;switches to the buffer
(execute-kbd-macro "\C-m")) ;;sends the enter keystroke to the shell
Aquí hay otra solución de this post.
Solo copiándolo para mayor comodidad. La declaración impresa es clave aquí.
(add-hook 'python-mode-hook
'my-python-send-statement)
(defun my-python-send-statement()
(interactive)
(local-set-key [C-return] 'my-python-send-statement)
(end-of-line)
(set-mark (line-beginning-position))
(call-interactively 'python-shell-send-region)
(python-shell-send-string "; print()"))
- 1. Emacs: Ejecutar código en modo shell-script
- 2. Emacs: Terminal vs shell?
- 3. Emacs ido-style shell
- 4. Python Shell en Emacs 24?
- 5. ¿Puedo usar PowerShell en modo shell para Emacs?
- 6. Emacs: shell-python de modo inferior aparece "rezagado"
- 7. Historial de comandos en el modo de shell de emacs
- 8. ¿Cerrar automáticamente el modo de shell de emacs?
- 9. ssh a través de shell emacs?
- 10. Emacs Modo ESS - Tabbing para comentario Región
- 11. La pantalla del modo shell Emacs es demasiado ancha después de dividir la ventana
- 12. Emacs comentar-región en el modo C
- 13. Emacs ... como su shell predeterminado?
- 14. Cómo salir del shell de emacs
- 15. ¿Cómo ejecutar el shell django desde Emacs?
- 16. Comandos de Emacs y Shell largos
- 17. shell cygwin en Emacs - ¿salida desordenada?
- 18. Guión de shell para enviar correo electrónico
- 19. Ajuste de los esquemas de color modo Shell
- 20. ¿qué comando de shell en emacs lisp?
- 21. Emacs/Python: ejecutando python-shell en modo línea protegida frente a bloque amortiguado
- 22. Obtener 256 colores en Emacs * shell *
- 23. Pantalla Gnu en el modo de shell de emacs: cómo corregir códigos de escape de color
- 24. puedo usar adb shell para enviar comandos a mi aplicación
- 25. Algo no funciona con el shell de Emacs
- 26. Finalización de tabulación en las sesiones SSH en modo shell de Emacs
- 27. ¿Cómo puedo ejecutar Cygwin Bash Shell desde dentro de Emacs?
- 28. Abrir un búfer de Emacs cuando un comando intenta abrir un editor en modo de shell
- 29. Shell de Python personalizado para Emacs python-mode
- 30. Shell de Emacs: descripción de entrada, salida, error
Buena pregunta. compañero. Estoy buscando lo mismo y no pude encontrar nada excepto su publicación. Encuentra difícil de creer que nadie haya escrito una línea básica y el remitente de regiones al shell actual de shcripts. Buscaré un poco y me escribiré si no encuentro. – VitoshKa