Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Guía de Linux Para el Usuario - Editando archivos con Emacs (III)

Guía de Linux Para el Usuario - Editando archivos con Emacs (III)

 ***** (1 opiniones)
GNU Free Documentation License Tutorial de Larry Greenfield - 16 de Febrero de 2006
Temas Relacionados: Linux
15. Editando archivos con Emacs (III)
Modos de programación

Modo C

Si usa Emacs para programar en el lenguaje C, puede conseguir que él le haga toda la indentación automáticamente. Los archivos cuyos nombres terminan en .c o .h se abrirán automáticamente en el modo C. Esto significa que ciertos comandos especiales de edición, útiles para escribir programas en C, están disponibles. En el modo C, |_Tab_| está ligado a c-indent-command (indentar comandos C). Esto significa que presionando la tecla |_Tab_| no inserta realmente un carácter de Tabulación. En cambio, si presiona |_Tab_| en cualquier parte de una línea, Emacs automáticamente indenta esta línea correctamente para su ubicación en el programa. Esto implica que Emacs sabe algo sobre la sintaxis de C, (aunque nada sobre semántica (¡no puede asegurar que su programa no tenga errores!).

Para hacer esto, asuma que las líneas anteriores están indentadas correctamente. Esto significa que si en la línea anterior falta un paréntesis, un punto y coma, llaves, o cualquier otra cosa, Emacs indentará la línea actual de una manera peculiar inesperada. Cuando vea que hace esto, sabrá que debe buscar un error de puntuación en la línea anterior.

Puede usar esta característica para verificar que ha puntuado correctamente sus programas,

en vez de leer el programa entero_buscado_problemas, simplemente comience a indentar las líneas desde arriba hasta abajo con |_Tab_|, y cuando alguna se indenta de forma rara, verifique las líneas inmediatamente anteriores. En otras palabras, ¡deje a Emacs hacer el trabajo por Ud!.

Modo Scheme

Este es un modo mayor que no le servirá de nada a menos que tenga un compilador o un interprete para el lenguaje de programación Scheme en su sistema. Tener uno no es tan normal como, digamos, un compilador de C, pero se está haciendo cada vez más común, así que lo trataremos también.

Mucho de lo que es cierto para el modo Scheme es también cierto para el modo Lisp, si prefiere escribir en Lisp.

Bien, para complicar las cosas, Emacs viene con dos modos Scheme diferentes, porque la gente no podía decidir cómo querían que funcionara. El que estoy describiendo se llama cmuscheme, y luego, en la sección personalizando a Emacs, hablaré de cómo puede haber dos modos Scheme diferentes y qué hacer acerca de ello. Por ahora, no se preocupe si las cosas en su Emacs no coinciden con las que yo digo aquí. Un editor personalizable significa un editor impredecible, ¡y no hay vuelta de hoja!.

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando M-x run-scheme. Esto crea un buffer llamado "*scheme*", que tiene el prompt habitual de Scheme. Puede teclear expresiones de Scheme en el prompt, presionar |_Intro_|, y Scheme las evaluará y mostrará la respuesta. Así, a fin de interactuar con el proceso de Scheme, podrá simplemente escribir todas sus aplicaciones y definiciones de función en el prompt. Es posible que haya escrito previamente código fuente Scheme en un algún archivo, y sería más fácil hacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Scheme según sea necesario.

Si el archivo fuente termina en .ss o .scm, automáticamente se abrirá en el modo Scheme cuando lo encuentre con |_C-x_C-f_|. Si por alguna razón, no surge en el modo Scheme, puede hacerlo a mano con M-x scheme-mode. Este modo scheme no es lo mismo que el buffer que ejecuta el proceso Scheme; más bien, el que el buffer de código fuente esté en modo scheme significa que tiene comandos especiales para comunicar con el buffer de proceso.

Si está dentro de la definición de una función en el buffer de código fuente Scheme y teclea |_C-c_C-e_|, entonces esa definición será "enviada" al buffer de proceso, exactamente como si lo hubiera tecleado Ud. mismo. |_C-c_M-e_| envía la definición y entonces le lleva al buffer de proceso para hacer algo de trabajo interactivo. |_C-c_C-l_| carga un archivo de código Scheme (éste funciona desde el buffer de proceso o el buffer de código fuente). Y como otros modos de lenguajes de programación, al presionar |_Tab_| en cualquier lugar de una línea de código se indentará correctamente esa línea.

Si está en el prompt del buffer de proceso, puede usar ||_M-p_|| y |_M-n_| para moverse entre sus comandos anteriores (también conocido como la historia de entrada). Así que si está depurando la función 'rotar', y ya lo ha aplicado a los argumentos en el buffer de proceso, como:

>(rotar '(a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_M-p_||en el prompt. Aquí no debería ser necesario volver a escribir expresiones largas en el prompt de Scheme, habitúese a usar la historia de entrada y ahorrará mucho tiempo.

Emacs conoce bastantes lenguajes de programación: C, C++, Lisp, y Scheme son simplemente algunos. Generalmente, sabe cómo indentarlos de forma intuitiva.

Modo de correo

También puede editar y enviar correo en Emacs. Para entrar en un buffer de correo, teclee |_C-x_m_|. Necesita llenar los campos To: (A:) y Subjet: (Asunto:), y entonces use |_C-n_ | para ir, por debajo de la línea de separación, al cuerpo del mensaje (que está vacío cuando comienza por primera vez). No cambie o borre la línea de separación, o sino Emacs no será capaz de enviar su correo, use esa línea para distinguir el encabezamiento del correo, que le dice dónde enviar el correo, de los contenidos del mensaje.

Puede escribir lo que quiera por debajo de la línea de separación. Cuando esté listo para enviar el mensaje, simplemente teclee |_C-c_C-c_|, y Emacs lo enviará y hará que el buffer de correo desaparezca.



Como ser más eficiente aún

Los usuarios experimentados de Emacs son fanáticos de la eficiencia. <De hecho, frecuentemente acaban derrochando mucho tiempo buscando formas para ser más eficientes!. No quiero que le suceda esto, aunque hay algunas cosas fáciles con las que puede llegar a ser un mejor usuario de Emacs. A veces los usuarios experimentados hacen que los novatos se sientan tontos por no saber todos estos trucos, por alguna razón, la gente llega a hacerse religiosas sobre el uso "correcto" de Emacs. Allá vamos:

Cuando se mueve de un lado a otro, usa los medios más rápidos disponibles. Ud. sabe que |_C-f_| es forward-char (un carácter hacia adelante) ¿suponía que |_M-f_| es forward-word (una palabra hacia delante)? |_C-b_| es backward-char (un carácter hacia atrás). ¿Supone qué hace |_M-b_|? Sin embargo, esto no es todo, puede avanzar una frase cada vez con |_M-e_ |, siempre que escriba sus frases de modo que haya siempre dos espacios después del punto final, (de otra manera Emacs no puede distinguir donde termina una frase y comienza la siguiente). |_M-a_| es backward-sentence (una frase atrás).

Si ve que usa repetidamente |_C-f_| para llegar al final de la línea, avergüéncese, y asegúrese de usar |_C-e_| en su lugar, y |_C-a_| para ir al principio de la línea. Si usa muchos |_C-n_| para bajar pantallas de texto, avergüéncese mucho, y usa |_C-v_| siempre. Si usa repetidamente ||_C-p_|| para avanzar pantallas, no se atreva a enseñar la cara, y use |_M-v_| en su lugar.

Si se está acercando al final de una línea y se da cuenta de que hay una palabra mal tecleada o de que se ha olvidado alguna en algún lugar anterior de la línea, no use la |_Retroceso_| o ||_Supr_|| para volver a ese punto. Eso requeriría volver a escribir porciones enteras de texto perfecto. En vez de eso, use combinaciones de |_M-b_|, |_C-b_|, y |_C-f_| para moverse a la ubicación precisa del error, arréglelo, y entonces use |_C-e_| para moverse al fin de la línea nuevamente.

Cuando tiene que escribir un nombre de archivo, nunca teclee el nombre completo. Solamente escriba lo suficiente para identificarlo singularmente, y deje que Emacs termine el trabajo presionando |_Tab_| o ||_Espacio_||. ¿Por qué teclear de más cuando puede derrochar ciclos de CPU en su lugar?

Si escribe algún tipo de texto simple, y de algún modo su auto-llenando (auto-filling)lo ha fastidiado, use |_|M-q_||, que es rellenado de párrafo en los modos de texto comunes. Esto "ajustará" el párrafo en el que está, como si hubiese sido llenado línea a línea, pero sin tener que liarse haciéndolo a mano. ||_M-q_|| trabajará desde dentro del párrafo, o desde su comienzo o final.

A veces es útil usar |_C-x_u_|, (undo [deshacer]), que tratará de "deshacer" el (los) último(s) cambio(s) que hizo. Emacs decidirá cuanto deshacer; habitualmente decide muy inteligentemente.

Llamándolo repetidamente deshará más y más, hasta que Emacs no pueda recordar qué cambios se hicieron.



Personalizando Emacs

Emacs es tan grande, y tan complejo, que de hecho tiene ¡su propio lenguaje de programación!. No bromeo: para personalizar Emacs ajustándolo a sus necesidades, tiene que escribir programas en este lenguaje. Se llama Emacs Lisp, y es un dialecto de Lisp, así que si tiene experiencia previa en Lisp, le parecerá bastante amistoso. Si no, no se preocupe: no voy a profundizar mucho, porque definitivamente se aprende mejor practicando. Para aprender realmente a programar Emacs, deberá consultar las páginas de información de Emacs Lisp, y leer mucho código fuente de Emacs Lisp.

La mayor parte de la funcionalidad de Emacs está definida en archivos de código de Emacs Lisp9. La mayoría de estos archivos se distribuyen con Emacs y colectivamente son conocidos como la "Biblioteca de Emacs Lisp". La ubicación de esta biblioteca depende de cómo se instaló Emacs en su sistema, son ubicaciones comunes /usr/lib/emacs/lisp, /usr/lib/emacs/19.19/lisp/, etc.

El 19.19 es el número de versión de Emacs, y podría ser diferente en su sistema.

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp, porque Emacs tiene la información almacenada internamente, en una variable llamada load-path (trayectoria de carga). Para averiguar el valor de esta variable, es necesario evaluarla; esto es, hacer que el intérprete de lisp de Emacs consiga su valor. Hay un modo especial para evaluar las expresiones de Lisp en Emacs, llamado modo lisp interactivo (lisp-interaction-mode). Comúnmente, hay un buffer llamado "*scratch*" que está ya en este modo. Si no lo puede encontrar, cree un nuevo buffer con cualquier nombre, y escriba M-x lisp-interaction-mode dentro de él.

Ahora tiene un espacio de trabajo para interactuar con el intérprete Lisp de Emacs. Teclee esto:

load-path

y entonces presione ||_C-j_|| al finalizar. En el modo Lisp interactivo, ||_C-j_|| está ligado a eval-print-last-sexp (evaluar-imprimir-última-sexp). Una "sexp" es una "s-expresion", lo que significa un grupo balanceado de paréntesis, incluido el caso de que no haya ninguno. Bueno, esto es simplificarlo un poco, pero irá entendiendo que son según programe con Emacs Lisp. De cualquier manera, al evaluar load-path debería conseguir algo como esto:

load-path ||_C-j_||

("/usr/lib/emacs/site-lisp/vm-5.35" "/home/kfogel/elithp"

"/usr/lib/emacs/site-lisp" "/usr/lib/emacs/19.19/lisp")

Por supuesto, no tendrá el mismo aspecto en cada sistema, puesto que es dependiente de cómo se instaló Emacs. El ejemplo de arriba viene de mi PC 386 que funciona con Linux. Como indica lo anterior, load-path es una lista de cadenas. Cada cadena nombra un directorio que podría contener archivos de Emacs Lisp. Cuando Emacs necesita cargar un archivo de código Lisp, va buscándolo en cada uno de estos directorios, en orden. Si un directorio se nombra pero no existe en el sistema de archivos, Emacs simplemente lo ignora.

Cuando Emacs arranca, automáticamente trata de cargar el archivo .emacs desde su directorio de usuario. Por lo tanto, si quiere hacer personalizaciones en Emacs, deberá ponerlas en .emacs. La personalización más común son las teclas ligadas, así que aquí está cómo hacerlo:

(global-set-key C-cl" 'goto-line) global-set-key (fijar teclas globalmente) es una función de dos argumentos: la tecla a la que ha de ser ligada, y la función a la que ligarla. La palabra "global" significa que esta tecla ligada tendrá efecto en todos los modos mayores (hay otra función, local-set-key, (fijar teclas localmente), que liga una tecla en un único buffer). Arriba, he ligado |_C-c_l_| a la función goto-line (ir a tal línea). La tecla se describe usando una cadena. La sintaxis especial C-<carácter>" significa mantener pulsada la tecla |_Control_| mientras se presiona <carácter>. Así mismo, ""M-<carácter>" indica la tecla |_Meta_|.

Todo eso está muy bien, ¿pero cómo supe que el nombre de la función era "goto-line"?. Puedo saber que quiero ligar |_C-c_l_| a alguna función que pregunta por un número de línea y mueve el cursor a esa línea, pero ¿cómo hice para averiguar el nombre de esa función?

Aquí es donde intervienen las facilidades de ayuda de Emacs. Una vez que ha decidido qué tipo de función busca, puede usar Emacs para rastrear su nombre exacto. He aquí una manera rápida y sucia para hacerlo: puesto que Emacs completa los nombres de función, simplemente escriba |_C-h_f_| (que es describe-function (describir función), recuérdelo), y entonces presione |_Tab_| sin escribir nada más. Esto pide a Emacs que complete la cadena vacía _en otras palabras, ¡la terminación automática se corresponderá con cada una de las funciones!. Puede tardar un momento en construir la lista de funciones, ya que Emacs tiene muchas funciones internas, pero mostrará todo lo que entre en la pantalla cuando esté listo.

En este momento presione ||_C-g_|| para abandonar la función describir función. Habrá un buffer llamado "*Completions*", que contiene la lista de terminaciones automáticas que acaba de generar.

Cambie a este buffer. Ahora puede usar |_C-s_|, isearch, para buscar las funciones probables. Por ejemplo, es una suposición segura que una función que pregunta por un número de línea y entonces va a esa línea contendrá la cadena "line (línea)" en su nombre. Por lo tanto, simplemente comience buscando la cadena "line" , y acabará encontrando lo que busca.

Si quiere otro método, puede usar |_C-h_a_|, command-apropos, para mostrar todas las funciones cuyos nombres se ajustan a la cadena dada. La salida de command-apropos es un poco más difícil de clasificar, que simplemente buscar una lista de terminación automática, en mi opinión, pero puede encontrar que tiene distintas sensaciones. Pruebe ambos métodos y a ver que opina.

Siempre existe la posibilidad de que Emacs no tenga ninguna función predefinida para hacer lo que está buscando. En esta situación, tiene que escribir la función Ud. mismo. No voy a hablar de cómo hacer eso, debería buscar en la biblioteca de Emacs Lisp ejemplos de definiciones de función, y leer las paginas Info sobre Emacs Lisp. Si resulta que conoce a un gurú local de Emacs, pregúntele cómo hacerlo. Definir sus propias funciones de Emacs no es un gran asunto, para darle una idea, yo he escrito 131 de ellas durante más o menos el último año. Requiere un poco de práctica, pero la curva de aprendizaje no es empinada.

Otra cosa que la gente hace a menudo en su .emacs es asignar a ciertas variables los valores preferidos. Por ejemplo, ponga esto en su .emacs y entonces inicie un nuevo Emacs:

(setq inhibit-startup-message t)

Emacs verifica el valor de la variable inhibit-startup-message (bloquear mensaje de arranque) para decidir si muestra la información sobre la versión y la falta de garantía cuando arranca. La expresión de Lisp de arriba usa el comando setq para asignar a esa variable el valor `t', que es un valor especial de Lisp que significa true (verdadero). Lo contrario de `t' es `nil' (nada o nulo), que es el valor false (falso) designado en Emacs Lisp. He aquí dos cosas que están en mi |_.emacs_| que podría encontrar útiles:

(setq case-fold-search nil); causa la insensibilidad a mayúsculas y minúsculas para la búsqueda

; ;; Hacer indentar los programas C de la manera que me gusta:

(setq c-indent-level 2)

La primera expresión hace que las búsquedas (incluyendo isearch) sean insensibles a mayúsculas y minúsculas; esto es, la búsqueda encontrará versiones de un mismo carácter sea mayúscula o minúscula aunque la cadena de búsqueda contenga únicamente la versión en minúscula. La segunda expresión establece que la indentación por defecto para las sentencias en lenguaje C sea un poco menor de lo normal, esto es solamente una preferencia personal; encuentro que esto hace el código C más legible.

El carácter de comentario en Lisp es ";". Emacs ignora cualquier cosa que siga a uno de éstos, a menos que aparezca dentro de una cadena literal, como esta:

;;estas dos líneas son ignoradas por el intérprete de Lisp, pero la

; ;; s-expression que le sigue se evaluará totalmente:

(setq alguna-cadena-literal "Una pausa torpe; sin ningún propósito.")

Es una buena idea comentar sus cambios en los archivos Lisp, porque seis meses después no se acordará en qué estaba pensando cuando los modificó. Si el comentario aparece sólo en una línea, precédalo con dos punto y coma. Esto ayuda a Emacs a indentar los archivos Lisp correctamente.

Puede encontrar información sobre las variables internas de Emacs de las mismas formas que con las funciones. Use |_C-h_v_|, describe-variable para hacer una lista de terminación automática, o use |_C-h_C-a_|, apropos. Apropos difiere de |_C-h_a_|, command-apropos, en que muestra variables y funciones en vez de solamente funciones.

La extensión por defecto para los archivos de Emacs Lisp es .el, como en c-mode.el. Sin embargo, para hacer que el código Lisp se ejecute más rápido, Emacs permite que sea byte-compiled (compilado a un formato interno), y estos archivos de código Lisp compilado terminan en .elc en vez de .el. La excepción a esto es su archivo .emacs, que no necesita la extensión .el porque Emacs sabe buscarlo para arrancar.

Para cargar un archivo de código Lisp interactivamente, use el comando M-x load-file (cargar archivo). Le preguntará por el nombre del archivo. Para cargar archivos Lisp desde dentro de otros archivos Lisp, haga esto:

(load "c-mode");fuerza a Emacs a cargar el contenido de c-mode.el o .elc

Emacs añadirá la extensión .elc al nombre del archivo e intentará encontrarlo en algún lugar del load-path. Si falla, lo intenta con la extensión .el; si falla esto, usa la cadena literal tal y como es pasada a load. Puede compilar (byte-compile) un archivo con el comando M-x byte-compile-file, pero si modifica el archivo a menudo, probablemente no merezca la pena. Sin embargo no debería compilar de esa manera su .emacs, ni siquiera darle la extensión .el.

Después de que .emacs se ha cargado, Emacs busca un archivo llamado default.el para cargarlo.

Comúnmente se ubica en un directorio en la trayectoria de carga (load-path) llamado site-lisp o local-elisp o algo parecido (ver el ejemplo load-path que di hace un rato). La gente que mantiene Emacs en un sistema multiusuario usa default.el para hacer cambios que afectarán los Emacs de todos, puesto que todos los Emacs lo cargan después de los .emacs personales. default.el no debería ser compilado, ya que tiende a ser modificado frecuentemente.

Si el .emacs de una persona contiene algún error, Emacs no intentará cargar default.el, sino que simplemente se detendrá, destellando un mensaje diciendo "Error in init file." (Error en el archivo de inicio) o algo similar. Si ve este mensaje, probablemente algo vaya mal con su .emacs.

Hay un tipo más de expresión que a menudo va en un .emacs. La libreria de Emacs Lisp a veces ofrece múltiples paquetes para hacer lo mismo de diferentes formas. Esto significa que tiene que especificar cuál quiere usar (o tendrá el paquete por defecto, que no es siempre el mejor para todos los propósitos). Un área donde esto sucede es en las características de interacción del Scheme de Emacs. Hay dos interfaces diferentes de Scheme distribuidos con Emacs (al menos en la versión 19): xscheme y cmuscheme.

prompt> ls /usr/lib/emacs/19.19/lisp/*scheme*

/usr/lib/emacs/19.19/lisp/cmuscheme.el

/usr/lib/emacs/19.19/lisp/cmuscheme.elc

/usr/lib/emacs/19.19/lisp/scheme.el

/usr/lib/emacs/19.19/lisp/scheme.elc

/usr/lib/emacs/19.19/lisp/xscheme.el

/usr/lib/emacs/19.19/lisp/xscheme.elc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho más que el que ofrece xscheme, pero el que Emacs usará por defecto es xscheme. ¿Cómo puedo hacer que Emacs actúe de acuerdo con mi preferencia?. Puse esto en mi .emacs:

;; note cómo la expresión puede quebrarse en dos líneas. Lisp

;; ignora los espacios en blanco, generalmente:

(autoload 'run-scheme "cmuscheme"

"Corre un Scheme inferior, de la forma que me gusta." t)

La función autoload (auto carga) toma el nombre de una función (citada con "'", por razones que tienen que ver con cómo funciona Lisp) y le dice a Emacs que esta función está definida en un determinado archivo. El archivo es el segundo argumento, una cadena (sin la extensión .el o .elc) indicando el nombre del archivo a buscar en la trayectoria de carga load-path.

Los argumentos restantes son opcionales, pero necesarios en este caso: el tercer argumento es una cadena de documentación para la función, de modo que si llama a describe-function (describir-función), consigue alguna información útil. El cuarto argumento le dice a Emacs que esta función autocargable puede ser llamada interactivamente (esto es, usando |_M-x_|). Esto es muy importante en este caso, porque uno debería poder teclear M-x run-scheme para comenzar un proceso de scheme que se ejecuta bajo Emacs.

Ahora que run-scheme ha sido definido como una función autocargable, ¿qué sucede cuando tecleo M-x run-scheme?. Emacs mira la función run-scheme, ve que está establecida para ser autocargable, y carga el archivo nombrado por la autocarga (en este caso, cmuscheme). El archivo compilado cmuscheme.elc existe, así que Emacs lo cargará. Ese archivo debe definir la función run-scheme, o habrá un error de autocarga. Por suerte, define run-scheme, así que todo va sin tropiezos, y consigo mi interfaz preferida de Scheme10.

Una autocarga es como una promesa a Emacs, de que cuando llegue el momento, puede encontrar la función especificada en el archivo en el que le dice que mire. A cambio, consigue algún control sobre lo que se carga. También, la autocarga ayuda a reducir el tamaño de Emacs en la memoria, al no cargar ciertas características hasta que se pidan. Muchos comandos no están definidos realmente como funciones cuando Emacs se inicia. Más bien, están simplemente preparados para autocargarse desde cierto archivo. Si nunca invoca el comando, nunca se carga. Este ahorro de espacio es vital para el funcionamiento de Emacs: si cargara todos los archivos disponibles en la biblioteca Lisp, Emacs tomaría veinte minutos simplemente para arrancar, y una vez hecho, podría ocupar la mayor parte de la memoria disponible en su máquina. No se preocupe, no tiene que establecer todas estas autocargas en su .emacs; ya se tomaron en cuenta cuando Emacs se desarrolló.



Averiguando más

No le he contado todo lo que se puede saber sobre Emacs. De hecho, no creo haberle contado siquiera un 1% de lo que se puede saber sobre Emacs. Aunque sabe suficiente para proseguir, todavía hay montones de comodidades y trucos que ahorran tiempo que debería averiguar. La mejor forma de hacerlo es esperar hasta que vea que necesita algo, y buscar entonces una función que lo haga.

La importancia de estar cómodo con las facilidades de ayuda en línea de Emacs no puede enfatizarse lo suficiente. Por ejemplo, suponga que quiere poder insertar los contenidos de algún archivo en un buffer que ya está trabajando sobre un archivo diferente, para que el buffer contenga a ambos. Si intuyese que hay un comando llamado insert-file (insertar archivo), tendría razón. Para verificar su acertada suposición, teclee C-h f. En el prompt del minibuffer, introduzca el nombre de una función sobre la que quiera ayuda. Puesto que sabe que hay terminación automática en los nombres de funciones,_y_puede suponer que el comando que busca comienza con "insert", escriba insert y presiona |_Tab_|. Esto le muestra todos los nombres de función que comienzan con "insert", e "insert-file' es uno de ellos.

De este modo completa el nombre de función y lee sobre como trabaja, y entonces usa M-x insert-file._Si se está preguntando si también está ligado a una tecla, escribe C-h w insert-file |_Intro_|, y averígüelo. Cuanto más sepa de las facilidades de ayuda de Emacs, más fácilmente podrá hacer preguntas a Emacs acerca de sí mismo. La capacidad de hacerlo, combinada con un espíritu de exploración y un deseo de aprender nuevas formas de hacer las cosas, puede acabar por ahorrarle mucho tecleado.

Para pedir una copia del manual de usuario de Emacs (Emacs user's manual) y/o el manual de Programación en Emacs Lisp (Emacs Lisp Programming manual), debe escribir a:

Free Software Foundation

675 Mass Ave

Cambridge, MA 02139

USA

Ambos manuales se distribuyen electrónicamente con Emacs, en una forma legible usando el lector de documentación Info (C-h i), pero puede encontrar más fácil tratar con freeware que con las versiones en línea. Además, sus precios son bastantes razonables, y el dinero va a una buena causa, ¡software gratuito de calidad!. En algún momento, debería teclear C-h C-c para leer las condiciones de copyright de Emacs. Es más interesante de lo que puede pensar, y le ayudará a aclarar el concepto de software libre. Si cree que el termino "free software" simplemente significa que el programa no cuesta nada, por favor ¡lea el copyright en cuanto tenga tiempo!



9 A veces llamados no oficialmente "Elisp".

10 A propósito, cmuscheme era la interfaz de la que hablaba antes, en la sección sobre el trabajo con Scheme, así que si quiere usar algo de este manual, necesita asegurarse de que ejecuta cmuscheme.
Autor y licencia de 'Guía de Linux Para el Usuario - Editando archivos con Emacs (III)'
Larry Greenfield Extraído de: http://es.tldp.org/Manuales-LuCAS/GLUP/glup_0.6-1.1-html-1.1/ GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Guía de Linux Para el Usuario - Editando archivos con Emacs (III)'

Este documento pretende ser el punto de entrada de los hispanohablantes al mundo Linux, intentando... Más »
Manual Compacto para nuevos usuarios.
El presente texto es una versión ampliada de la conferencia impartida en el ciclo organizado... Más »
Este documento contiene una lista de las aplicaciones para Linux capaces de reproducir diversos formatos... Más »
Los sistemas cluster hace años que fueron diseñados, la computación paralela y distribuida no es... Más »
¿Estás seguro de que deseas eliminar este capítulo?