{"id":4,"date":"2008-06-06T03:46:02","date_gmt":"2008-06-06T01:46:02","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=4"},"modified":"2022-08-20T18:26:36","modified_gmt":"2022-08-20T16:26:36","slug":"vista-general-de-emacs","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=4","title":{"rendered":"Vista general de emacs"},"content":{"rendered":"<p>En emacs se pueden realizar muchas tareas. Sin embargo debemos dar una vista general sobre lo que se puede hacer, y luego en posts siguientes ir\u00e9 explicando como configurar y usar nuevas funcionalidades interesantes en emacs, de momento, podemos ver un tour general sobre emacs aqu\u00ed:<\/p>\n<p><a href=\"http:\/\/www.gnu.org\/software\/emacs\/tour\/\">http:\/\/www.gnu.org\/software\/emacs\/tour\/<\/a><\/p>\n<p>Como podemos ver en dicha web, desde emacs podemos leer y escribir correos usando gnus, o bien para rss, para ello pulsaremos <strong>M-x gnus<\/strong>. El manejo de gnus no es f\u00e1cil a simple vista, as\u00ed que como dije antes, iremos dej\u00e1ndolo para siguientes posts.<\/p>\n<p>Tambi\u00e9n tenemos un cliente de irc llamado erc, para invocarlo tan s\u00f3lo debemos pulsar <strong>M-x erc<\/strong>. Desde el cual, accediendo mediante bitlbee podemos conectar a redes como yahoo, msn, etc.<\/p>\n<p>Por otra parte, podemos invocar gdb desde emacs, lo cual es muy \u00fatil, tan s\u00f3lo debemos presionar <strong>M-x gdb<\/strong>. As\u00ed pues, debemos compilar los programas con el flag -ggdb o bien directamente -g. Tambi\u00e9n podemos invocar a make desde el propio emacs, sin necesidad de salir, para ello pulsaremos <strong>M-x compile<\/strong>. Otra utilidad interesante es la de los diffs, emacs permite resaltar las diferencias entre dos ficheros, para ello usaremos <strong>M-x ediff<\/strong>.<\/p>\n<p>Si necesitamos un shell dentro de emacs (\u00fatil para intercomunicar buffers y de esa manera ser m\u00e1s productivos) podemos presionar <strong>M-x shell<\/strong>, el cual invoca a nuestro shell. Tenemos otra alternativa, que es cargar un shell escrito en lisp para emacs, para ello presionaremos <strong>M-x eshell<\/strong>. Y por \u00faltimo podemos lanzar una terminal usando <strong>M-x term<\/strong>.<\/p>\n<p>Emacs posee una supercalculadora integrada, para cargar dicha calculadora tan s\u00f3lo debemos pulsar <strong>M-x calc<\/strong>. Debemos tener en cuenta que dicha calculadora usa notaci\u00f3n polaca inversa (RPN).<\/p>\n<p>En emacs, tambi\u00e9n tenemos un navegador que soporta im\u00e1genes entre otras cosas, para usarlo podemos pulsar las teclas <strong>M-x w3m<\/strong>.<\/p>\n<p>Tambi\u00e9n podemos invocar a las p\u00e1ginas man desde emacs usando <strong>M-x man<\/strong>, y hacer un grep de cualquier entrada usando <strong>M-x grep<\/strong>.<\/p>\n<p>Por otra parte emacs soporta la manipulaci\u00f3n y la edici\u00f3n para CVS, subversion u otros controles de versiones, usando las funciones que comiencen por el patr\u00f3n <strong>M-x vc-*<\/strong>.<\/p>\n<p>Y aqu\u00ed va una para los que dicen que vi es omnipresente y emacs no. Desde emacs usando tramp (Transparent Remote Access, Multiple Protocol). Su uso ser\u00e1 explicado luego, pero decir que se invoca de la misma forma que abrimos un fichero a\u00f1adiendole un \u00faltimo par\u00e1metro para indicar que es remoto y que protocolo se usar\u00e1, <strong>C-x C-f<\/strong> e indicando posteriormente el protocolo, usuario, contrase\u00f1a, ruta y fichero. Adem\u00e1s de ello tenemos un emulador de vim en emacs (con hasta 5 niveles distintos, pareci\u00e9ndose m\u00e1s a emacs o a vim), as\u00ed que no hay excusa para ir adaptandose poco a poco con emacs si eres usuario de vi! Para ello debes pulsar <strong>M-x viper-mode<\/strong>.<\/p>\n<p>Emacs posee algunos juegos, yo no soy muy partidario de que se integre en ello, pero por razones historicas, muchos de ellos son incluidos; por ejemplo <strong>M-x hanoi<\/strong> para las torres de hanoi, o <strong>M-x tetris<\/strong> para lanzar el tetris.<\/p>\n<p>Emacs tiene modos asociados a cada buffer, existen dos tipos de modos; el modo mayor y el menor (major y minor). Los modos mayores estan pensados para acciones concretas sobre lo que se quiera editar, mientras que los modos menores estan pensados para acciones generales que se puedan adaptar a distintos modos mayores. Entre los modos mayores existen <strong>M-x fundamental-mode<\/strong>, <strong>M-x text-mode<\/strong>, <strong>M-x c-mode<\/strong>, <strong>M-x java-mode<\/strong>, <strong>M-x perl-mode<\/strong>, <strong>M-x python-mode<\/strong>, y as\u00ed con cualquier lenguaje que podamos imaginarnos. Para modos menores tenemos por ejemplo <strong>M-x follow-mode<\/strong>, <strong>M-x auto-fill-mode<\/strong>, etc; es decir acciones que se pueden aplicar a distintos modos mayores. Para cada buffer, tendremos asociado siempre un modo mayor, y cero o m\u00e1s modos menores. Existe un hack que permite usar m\u00e1s de un modo mayor de forma simultanea, llamado MMM (Multi Major Mode), que aunque no se encuentra integrado en emacs por defecto (es externo a emacs realmente) siempre se puede agregar y configurar, la web oficial del proyecto es http:\/\/mmm-mode.sourceforge.net\/<\/p>\n<p>Al lanzar muchas de \u00e9stas funcionalidades (por ejemplo gnus) no conocemos muchos de los keystrokes, o simplemente no nos acordamos, recordad que siempre podemos hacer referencia mediante el nombre del comando (el cual suele ser bastante intuitivo) o bien, podemos usar la tecla <strong>F10<\/strong>, el cual muestra un menu (parte de el generado de forma din\u00e1mica por muchas de estas funcionalidades o modos) y desde el cual podemos realizar la mayor parte de acciones fundamentales.<\/p>\n<p>Por \u00faltimo si queremos consultar las ayudas (siempre con los prefijos <strong>C-h<\/strong>) podemos pulsar <strong>C-h t<\/strong> para el tutorial. <strong>C-h r<\/strong> para el manual, <strong>C-h f<\/strong> para la FAQ (Frequently Asked Questions o Preguntas de uso frecuente).<\/p>\n<p>Si estamos comenzando a desvariar con tanto keystroke, podemos consultar al doctor desde emacs pulsando <strong>M-x doctor<\/strong>.<\/p>\n<p>En los siguientes articulos iremos modo por modo, y funcionalidad por funcionalidad explicando su funcionamiento y como moverse de forma m\u00ednima agusto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En emacs se pueden realizar muchas tareas. Sin embargo debemos dar una vista general sobre lo que se puede hacer, y luego en posts siguientes ir\u00e9 explicando como configurar y usar nuevas funcionalidades interesantes en emacs, de momento, podemos ver un tour general sobre emacs aqu\u00ed: http:\/\/www.gnu.org\/software\/emacs\/tour\/ Como podemos ver en dicha web, desde emacs [&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":[13],"class_list":["post-4","post","type-post","status-publish","format-standard","hentry","category-intro","tag-vista-general-emacs-overview"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4"}],"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=4"}],"version-history":[{"count":1,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4\/revisions"}],"predecessor-version":[{"id":820,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4\/revisions\/820"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}