2010-06-05 24 views
11

No puedo pasar texto a un terminal que se ejecuta en Emacs.Extrayendo texto en un terminal que se ejecuta en Emacs

Esta es mi procedimiento:

Maté la cadena "fecha" de un tampón y un tirón en el terminal en otra memoria intermedia y pulsa enter.

El terminal se comporta como si no hubiera escrito nada. Simplemente devuelve el mensaje de vuelta.

Estoy usando OS X 10.5.8 y Emacs 23.1. He probado este procedimiento en Aquamacs, Carbon Emacs y el lanzamiento de http://emacsformacosx.com/. Todos muestran este extraño comportamiento incluso en sus configuraciones predeterminadas con mi archivo .emacs vacío. ¿Qué podría estar causando esto?

Respuesta

14

Por "en un terminal" supongo que quiere decir que está ejecutando el emulador de terminal integrado de Emacs. Normalmente, el emulador de terminal transmite la mayoría de las teclas exactamente como se escribe en el proceso de shell. Escriba C-c C-j en el búfer del terminal para ponerlo en un estado donde estén disponibles los enlaces de tecla de Emacs normales. Verá que la línea de modo cambia de (Term: char run) a (Term: line run).

Adición:

texto Yanking sin salir del modo char es un poco difícil; la función relevante, sin embargo, es term-paste (no yank, que simplemente inserta el texto en el búfer del terminal sin enviarlo al proceso inferior). term-paste enviará de inmediato el kill más reciente al proceso inferior, pero no proporciona la funcionalidad de yank de lujo a la que probablemente esté acostumbrado (como M-y para pasar por las eliminaciones anteriores). Puede ejecutar term-paste como un comando extendido: C-c M-x term-paste RET.

Probablemente la solución más fácil es sólo para ir temporalmente en el modo de línea (C-c C-j) cuando se tiene algo para pegar, y luego volver inmediatamente al modo de char (C-c C-k). O incluso más fácil, simplemente mantente en modo línea todo el tiempo. A menudo hago esto cuando tengo un terminal conectado a una sesión Oracle SQL * Plus. Raramente noto la diferencia, pero obtengo todo tipo de funciones convenientes de Emacs, como poder escribir M-p para recorrer una larga declaración SQL previamente tipada.

habría dado por hecho que siempre se puede empezar en el modo de línea como la siguiente:

(add-hook 'term-mode-hook 'term-line-mode) 

... pero no funciona para mí. No sé por qué.

+0

¿Hay alguna manera de hacer que el emulador de terminal acepte yanks sin tener todo el buffer ser editable? ¿O hay una forma de configurar el emulador de terminal para que siempre comience con 'line run'. – hekevintran

+1

Gracias por C-c C-j. Emacs es increíble! – Raj

-1

Cuando todo lo demás falla, simplemente selecciono el texto y hago clic en Editar-> Copiar, luego hago clic con el botón secundario en el otro buffer de emacs y hago clic en pegar.

+1

El texto entra en el búfer, pero presionar return no lo envía al terminal. Así que parece que todo está correcto hasta que intentes ejecutar el comando y no haga nada. – hekevintran

1

En el búfer con la terminal ejecutándose, ponga el terminal en modo de línea con C-c C-j. Para pegar el texto, ahora presione S-Insert (eso es Shift-Insert). Si necesita que la terminal regrese al modo char después, es C-c C-k.

Cuestiones relacionadas