[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

AD.15.3 Modo Shell

Los búferes de shell usan el modo Shell, que define varias teclas especiales conectadas al prefijo C-c. Fueron elegidas para parecerse a los caracteres habituales de edición y control de trabajo presentes en las shells que no están bajo Emacs, salvo que debe presionar C-c primero. He aquí una lista completa de los mapeos de teclas especiales del modo Shell:

RET

Al final del búfer manda una línea como entrada; en caso contrario, copia la línea actual al final del búfer y la manda (comint-send-input). Cuando se copia una línea, cualquier prompt que haya al principio de la línea (texto impreso por los programas que precede su entrada) es omitido. (Vea también la variable comint-use-prompt-regexp-instead-of-fields).

TAB

Completa el nombre de comando o de archivo antes del punto en el búfer de shell(comint-dynamic-complete). TAB también completa referencias del histórico (@pxref{Referencias del histórico}) y nombres de variable de entorno.

La variable shell-completion-fignore especifica una lista de extensiones de nombre de archivo omitidas en el completamiento del modo Shell. El ajuste por defecto es nil, pero algunos usuarios prefieren ("~" "#" "%") para omitir los nombres de archivo que terminan en `~', `#' o `%'. Otros modos Comint relacionados utilizan en cambio la variable comint-completion-fignore.

M-?

Muestra temporalmente una lista de los completamientos posibles del nombre de archivo antes del punto en el búfer de shell (comint-dynamic-list-filename-completions).

C-d

Borra un carácter o envía EOF (comint-delchar-or-maybe-eof). Si lo teclea al final del búfer de shell, C-d envía EOF a la subshell. Si lo teclea en cualquier otra posición del búfer, C-d borra un carácter como es habitual.

C-c C-a

Va al principio de la línea, pero después del prompt si hay uno (comint-bol-or-process-mark). Si repite este comando dos veces seguidas, la segunda vez retrocede hasta la marca de proceso, que es el comienzo de la entrada que aún no ha enviado a la subshell. (Normalmente es el mismo lugar, el final del prompt en esta línea, pero después de C-c SPC la marca de proceso puede estar en unaç línea anterior.)

C-c SPC

Acumula varias líneas de entrada, y luego las envía juntas. Este comando inserta un nuevalínea antes del punto, pero no envía el texto precedente como entrada a la subshell; por lo menos, no aún. Ambas líneas, la que está antes del nuevalínea y la que está después, se enviarán juntas (con el nuevalínea que las separa), cuando ud. teclee RET.

C-c C-u

Mata todo el texto al final del búfer que espera ser enviado como entrada (comint-kill-input).

C-c C-w

Mata una palabra antes del punto (backward-kill-word).

C-c C-c

Interrumple la shell o su subtrabajo actual si existe (comint-interrupt-subjob). Este comando también mata cualquier entrada de shell pendiente y no enviada del búfer de shell.

C-c C-z

Detiene la shell o su subtrabajo actual si existe (comint-stop-subjob). Este comando también mata cualquier entrada de shell pendiente y no enviada del búfer de shell.

C-c C-\

Envía Send quit signal to the shell or its current subjob if any (comint-quit-subjob). This command also kills any shell input pending in the shell buffer and not yet sent.

C-c C-o

Borra el último lote de salida de un comando shell (comint-delete-output). Esto es útil si un comando shell lanza montones de salida que no hace más que estorbar. Este comando se llamaba anteriormente comint-kill-output.

C-c C-s

Graba el último lote de salida de un comando shell a un archivo (comint-write-output). Con un argumento prefijo, se agrega al final del archivo sin sobreescribirlo. Cualquier prompt que aparezca al final de la salida no se graba.

C-c C-r
C-M-l

Desplaza para mostrar el comienzo del último lote de salida en la primera línea de la ventana; también mueve el cursor allí (comint-show-output).

C-c C-e

Desplaza para poner el fin del búfer en la última línea de la ventana (comint-show-maximum-output).

C-c C-f

Avanza a través de un comando shell, pero sin salir de la línea actual (shell-forward-command). La variable shell-command-regexp especifica cómo reconocer el fin de un comando.

C-c C-b

Retrocede a través de un comando shell, pero sin salir de la línea actual (shell-backward-command).

C-c C-l

Muestra el histórico de comandos shell del búfer en otra ventana (comint-dynamic-list-input-ring).

M-x dirs

Pregunta a la shell cuál es su directorio actual, para que Emacs pueda usar el mismo.

M-x send-invisible RET texto RET

Envía texto como entrada a la shell, después de leerlo sin hacer eco. Esto es útil cuando un comando de shell ejecuta un programa que pide una contraseña.

Por otra parte, ud. puede preparar a Emacs para que reconozca los prompts de contraseñas y deshabilite el eco para ellos, de esta forma:

 
(add-hook 'comint-output-filter-functions
          'comint-watch-for-password-prompt)
M-x comint-continue-subjob

Continúa el proceso de shell. Esto es útil si suspende el proceso de shell por accidente.(14)

M-x comint-strip-ctrl-m

Descarta todos los caracteres control-M del grupo actual de salida de la shell. La manera más práctica de usar este comando es hacer que corra automáticamente cuando recibe salida de la subshell. Para hacer eso, evalúe la siguiente expresión Lisp:

 
(add-hook 'comint-output-filter-functions
          'comint-strip-ctrl-m)
M-x comint-truncate-buffer

Este comando trunca el búfer de shell a cierta cantidad máxima de líneas, especificada por la variable comint-buffer-maximum-size. Así es como se hace automáticamente cada vez que reciba salida de la subshell:

 
(add-hook 'comint-output-filter-functions
          'comint-truncate-buffer)

El modo Shell también personaliza los comandos de párrafos para que únicamente los prompts de shell comiencen párrafos nuevos. Por lo tanto un párrafo consta de un comando de entrada más la salida que le sigue en el búfer.

El modo Shell es un derivado del modo Comint, un modo de propósito general para comunicarse con subprocesos interactivos. La mayor parte de la funcionalidad del modo Shell viene en realidad del modo Comint, como puede ver en los nombres de los comandos mencionados arriba. Las funcionalidades especiales del modo Shell incluyen la funcionalidad de rastreo del directorio, y algunos comandos para el usuario.

Otras funcionalidades de Emacs que emplean variantes del modo Comint incluyen GUD (see section Ejecutar depuradores bajo Emacs) y M-x run-lisp (see section Running an External Lisp).

Ud. puede usar M-x comint-run para ejecutar cualquier programa a su elección en un subproceso empleando el modo Comint no modificado; sin las especializaciones del modo Shell.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Roberto on abril, 2 2007 using texi2html 1.76.