{"id":3,"date":"2008-05-28T03:08:16","date_gmt":"2008-05-28T01:08:16","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=3"},"modified":"2022-08-20T18:26:36","modified_gmt":"2022-08-20T16:26:36","slug":"supervivencia-en-emacs","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=3","title":{"rendered":"Supervivencia en emacs"},"content":{"rendered":"<p>Cambiar de editor o entorno requiere esfuerzo, mucho esfuerzo, ya que hemos estado acostumbrados a alg\u00fan otro durante un largo periodo de tiempo.<\/p>\n<p>Antes de ponerse a probar emacs, merece la pena conocer los keystrokes mas t\u00edpicos,  as\u00ed como conocer algunos comandos que pueden ayudarnos en nuestro aprendizaje sin necesidad de leer un tutorial completo.<\/p>\n<p>En primer lugar debemos saber como entrar y como salir de la aplicaci\u00f3n; para entrar tan s\u00f3lo debemos escribir en el shell: <strong>$ emacs<\/strong><\/p>\n<p>y esto lanzar\u00e1 la interfaz. Si estamos en las x, por defecto abrir\u00e1 la aplicaci\u00f3n con ventanas, si queremos que se ejecute sin ventanas en la terminal tan s\u00f3lo deber\u00edamos escribir: <strong>$ emacs -nw<\/strong><\/p>\n<p>Podemos modificar nuestro emacs a nuestro gusto incluyendo l\u00edneas en el fichero de configuraci\u00f3n .emacs, sin embargo si queremos que se ignore dicha configuraci\u00f3n y que se ejecute emacs por defecto ejecutariamos: <strong>$ emacs -q<\/strong><\/p>\n<p>Para salir de la aplicaci\u00f3n tan s\u00f3lo debemos pulsar la combinaci\u00f3n de teclas: <strong>C-x-c<\/strong><\/p>\n<p>Cuando lanzamos la aplicaci\u00f3n emacs necesita un buffer por defecto, llamado <strong>*scratch*<\/strong>, el cual podemos usarlo para cualquier cosa. Emacs necesita al menos un buffer, que adem\u00e1s no siempre tiene porque estar asociado a un fichero, ya que en algunos casos no tiene sentido asociar un buffer a un fichero (por ejemplo si est\u00e1s jugando al tetris). Adem\u00e1s de ello, podemos ver un par de l\u00edneas en la parte inferior del frame (una m\u00e1s oscura que otra), la primera es llamada el <strong>modeline<\/strong>, que muestra informaci\u00f3n (modo en el que se trabaja, si el fichero ha sido modificado, l\u00ednea actual, hora, etc). Debajo encontramos la otra l\u00ednea (la m\u00e1s clara) la cual es llamada el <strong>mini buffer<\/strong>. El minibuffer es la embajada, es decir, desde donde podemos comunicarnos con emacs enviando comandos desde aqu\u00ed.<\/p>\n<p>Al fin y al cabo emacs es un interprete lisp escrito en C, y el resto de funcionalidades est\u00e1n escritas en lisp, por esta raz\u00f3n emacs es totalmente configurable en tiempo real; esto significa que podemos en cualquier momento cambiar las combinaciones de teclas por defecto sin necesidad de realizar cambios y tener que recompilar, como ocurre en otros editores lo cuales son de todo menos flexibles en este aspecto. As\u00ed que mientras usamos emacs aprenderemos lisp.<\/p>\n<p>Continuando con el mundo de los buffers, si queremos guardar el buffer que no est\u00e9 asociado a un fichero, o simplemente guardar algo que hemos modificado debemos pulsar (esto guarda varios buffers, no s\u00f3lo el que se est\u00e9 mostrando actualmente): <strong>C-x-s<\/strong><\/p>\n<p>Para eliminar dicho buffer usaremos: <strong>C-x k<\/strong>. Si lo que queremos es abrir un fichero, o bien crear un fichero utilizaremos <strong>C-x-f<\/strong>. Si el fichero existe lo abrir\u00e1, sin\u00f3 lo crear\u00e1<\/p>\n<p>En emacs las ventanas son llamadas frames, mientras que si tenemos una ventana subdividida en partes, a cada una de dichas partes se le llamar\u00e1 ventana (esto es por razones hist\u00f3ricas). Podemos dividir la ventana en dos de forma horizontal pulsando: <strong>C-x 2<\/strong><\/p>\n<p>O podemos dividirla de forma vertical con: <strong>C-x 3<\/strong><\/p>\n<p>Si queremos eliminar dicha ventana (que no implica que el buffer deje de existir) usaremos: <strong>C-x 0<\/strong><\/p>\n<p>Si queremos usar una sola ventana para todo el frame, en vez de que este dividida usaremos: <strong>C-x 1<\/strong><\/p>\n<p>Si queremos equilibrar todas las ventanas entre si usaremos <strong>C-x +<\/strong><\/p>\n<p>Por otra parte tenemos un tutorial que podemos ejecutar pulsando: <strong>C-h t<\/strong><\/p>\n<p>Probablemente 3 de los comandos m\u00e1s importantes sean estos:<\/p>\n<ul>\n<li><strong>M-x apropos<\/strong> : que busca comandos siguiendo una cadena como patr\u00f3n.ejemplo: <strong>M-x apropos &lt;CR&gt; replace<\/strong> buscar\u00e1 todos los comandos relacionados o que contengan la cadena &#8216;replace&#8217;.<\/li>\n<li><strong>M-x describe-key <\/strong>: presionando una combinaci\u00f3n de teclas devuelve el comando asignado;ejemplo:<strong> M-x describe-key &lt;CR&gt; C-g<\/strong> Explica que hace la combinaci\u00f3n de teclas C-g, que nombre de comando largo tiene y la explicaci\u00f3n de lo que hace.Como podemos observar cada comando puede ser ejecutado o bien usando keystrokes o pulsando <strong>M-x nombre-del-comando<\/strong>.<\/li>\n<li><strong>M-x where-is<\/strong> : en el cual escribes escribes el nombre del comando y devuelve la tecla asociada.ejemplo: <strong>M-x where-is &lt;CR&gt; tags-query-replace <\/strong>y devolver\u00eda la tecla asociada que por defecto que ser\u00eda <strong>C-h w<\/strong>.<\/li>\n<\/ul>\n<p>Adem\u00e1s debemos tener en cuenta que existen m\u00e1s &#8216;describes&#8217;, quiz\u00e1s algo menos importante que describe-key, pero muy \u00fatil para futuros usos:<\/p>\n<p><strong>M-x describe-TAB<\/strong> : nos mostrar\u00e1 las posibles opciones, describe-function, describe-mode, etc.<\/p>\n<p>Es decir que podemos usar el <strong>TAB<\/strong> (tabulador) para autocompletar, adem\u00e1s podemos usar la combinaci\u00f3n de teclas <strong>Alt+p<\/strong> para movernos por el historial hacia atr\u00e1s, y <strong>Alt+n<\/strong> para movernos hacia delante. Estos \u00faltimos suelen ser muy \u00fatiles, debido a que emacs no guarda historiales como otros editores o entornos, sin\u00f3 que emacs mantiene historiales independientes para cada tipo de acci\u00f3n, ya que no tendria mucho sentido si vuelves a buscar una cadena mirar en un historial general donde quiz\u00e1s hayas usado previamente una b\u00fasqueda de un comando. Sin embargo muchos por no decir el resto de entornos a\u00fan no tienen la lecci\u00f3n aprendida.<\/p>\n<p>Por \u00faltimo <strong>C-g<\/strong> lo que har\u00e1 es cancelar cualquier combinaci\u00f3n de teclas ya &#8216;iniciadas&#8217; es decir, si pulsas por error <strong>C-h<\/strong> y quer\u00edas seguir escribiendo en un buffer siempre puedes hacer <strong>C-g<\/strong>.<\/p>\n<p>Por ejemplo <strong>C-h C-g<\/strong>, pulsamos el <strong>C-h<\/strong> por error, pero al pulsar el<strong> C-g<\/strong> nos quedamos como est\u00e1bamos.<\/p>\n<p>Por \u00faltimo, una vez controladas estas combinaciones de teclas fundamentales, podemos comenzar a usar el resto, lo mejor es imprimirse la quick reference card que trae emacs si se instala desde sources en el directorio &#8216;etc&#8217; al descomprimir los fuentes de emacs. O bien descargarlo directamente desde aqu\u00ed:<\/p>\n<p><a href=\"http:\/\/www.blackhats.es\/emacs\/emacs-refcard.pdf\">http:\/\/www.blackhats.es\/emacs\/emacs-refcard.pdf<\/a><\/p>\n<p>A partir de este momento, uno ya se puede considerar seguro en emacs, y a partir de aqu\u00ed uno puede comenzar a sentir la potencia que un entorno como emacs ofrece.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.blackhats.es\/emacs\/emacs2.png\" alt=\"emacs by default\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cambiar de editor o entorno requiere esfuerzo, mucho esfuerzo, ya que hemos estado acostumbrados a alg\u00fan otro durante un largo periodo de tiempo. Antes de ponerse a probar emacs, merece la pena conocer los keystrokes mas t\u00edpicos, as\u00ed como conocer algunos comandos que pueden ayudarnos en nuestro aprendizaje sin necesidad de leer un tutorial completo. [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[7],"class_list":["post-3","post","type-post","status-publish","format-standard","hentry","category-intro","tag-add-new-tag"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3"}],"collection":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3"}],"version-history":[{"count":1,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3\/revisions"}],"predecessor-version":[{"id":821,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3\/revisions\/821"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}