{"id":18,"date":"2008-08-11T15:59:40","date_gmt":"2008-08-11T13:59:40","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=18"},"modified":"2022-08-20T18:26:25","modified_gmt":"2022-08-20T16:26:25","slug":"ispell-flyspell-y-abbrev","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=18","title":{"rendered":"Ispell, flyspell y abbrev"},"content":{"rendered":"<p>Emacs incluye ispell para la correcci\u00f3n autom\u00e1tica de texto. Cada diccionario es guardado en el fichero <strong>.ispell_&lt;lenguaje&gt;<\/strong> donde lenguaje es cualquier lenguaje, que por defecto es <strong>english<\/strong>.<\/p>\n<p>Para instalar los diccionarios e ispell (si es que no se tiene ya) desde gentoo podemos instalarlo haciendo:<\/p>\n<p># <strong>emerge aspell aspell-en aspell-es<\/strong><\/p>\n<p>O bien si utilizamos debian podemos hacer:<\/p>\n<p># <strong>apt-get install aspell aspell-en aspell-es<\/strong><\/p>\n<p>Con esto instalaremos los diccionarios en ingl\u00e9s y castellano, aunque hay muchos otros, disponibles en la web oficial de <a title=\"aspell\" href=\"http:\/\/aspell.net\" target=\"_blank\" rel=\"noopener\">aspell<\/a>.<\/p>\n<p>Para lanzar ispell tan s\u00f3lo debemos invocarlo mediante <strong>M-x ispell-buffer<\/strong>. Esto nos resaltar\u00e1 la palabra y nos mostrar\u00e1 las posibles alternativas, las cuales son:<\/p>\n<ul>\n<li><strong>un n\u00famero o letra en las opciones mostradas<\/strong> : cambiar la palabra mediante el \u00edndice asociado a cada palabra.<\/li>\n<\/ul>\n<ul>\n<li> <strong>?<\/strong> : para m\u00e1s opciones.<\/li>\n<\/ul>\n<ul>\n<li> <strong>SPC<\/strong> (espacio) : para no modificar dicha palabra.<\/li>\n<\/ul>\n<ul>\n<li> <strong>u<\/strong> : convertir la palabra en min\u00fasculas.<\/li>\n<\/ul>\n<ul>\n<li> <strong>i<\/strong> : saltar a la siguiente palabra no conocida.<\/li>\n<\/ul>\n<ul>\n<li> <strong>r<\/strong> : reemplazar la palabra.<\/li>\n<\/ul>\n<ul>\n<li> <strong>R<\/strong> : reemplazar las palabras usando query-replace.<\/li>\n<\/ul>\n<ul>\n<li> <strong>a<\/strong> : aceptar la palabra para el resto de la sesi\u00f3n para todos los buffers (y por lo tanto no volver a resaltarla como inv\u00e1lida).<\/li>\n<\/ul>\n<ul>\n<li> <strong>A<\/strong> : aceptar la palabra para el resto de la sesi\u00f3n para este buffer (y por lo tanto no volver a resaltarla como inv\u00e1lida).<\/li>\n<\/ul>\n<ul>\n<li> <strong>C-r<\/strong> : edici\u00f3n recursiva.<\/li>\n<\/ul>\n<ul>\n<li><strong> C-M-c<\/strong> : salir de la edici\u00f3n recursiva.<\/li>\n<\/ul>\n<ul>\n<li> <strong>!<\/strong> : reemplazar todas las ocurrencias despu\u00e9s de haber presionado R (evitar el query del replace).<\/li>\n<\/ul>\n<p>Para analizar una sola palabra y no todo el buffer tan s\u00f3lo debemos pulsar <strong>M-$<\/strong> el cual tiene el comando asociado <strong>ispell-word<\/strong>. Si en cambio queremos completar una palabra podemos usar el comando <strong>M-tab<\/strong> que tiene el comando asociado <strong>ispell-complete-word<\/strong>.<\/p>\n<p>Adem\u00e1s de ispell, tenemos flyspell, que tiene el mismo efecto que ispell, pero este se realiza en tiempo real, a medida que vamos escribiendo cualquier palabra &#8216;on the fly&#8217;. Para lanzar flyspell tan s\u00f3lo debemos invocarlo mediante <strong>M-x flyspell-mode<\/strong>. Existe otro modo el cual se invoca mediante <strong>M-x flyspell-prog-mode<\/strong> dise\u00f1ado para programadores. En este modo podremos hacer que flyspell analice texto en nuestro c\u00f3digo fuente pero s\u00f3lo para el c\u00f3digo comentado o cadenas.<br \/>\nOtra alternativa es usar <strong>M-x flyspell-buffer<\/strong> para lanzar flyspell sobre el buffer actual, el cual nos resaltar\u00e1 las palabras que no encuentre o reconozca en nuestro diccionario.<\/p>\n<p>Resumiendo los comandos que podemos realizar con ispell y flyspell:<\/p>\n<ul>\n<li><strong>M-$<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-word<\/span>&#8216;; analiza la palabra sobre el cursor.<\/li>\n<\/ul>\n<ul>\n<li> <strong>(sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-region<\/span>&#8216;; analiza una regi\u00f3n.<\/li>\n<\/ul>\n<ul>\n<li> <strong>(sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-buffer<\/span>&#8216;; analiza un buffer.<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-message<\/span>&#8216;; analiza el cuerpo de un mail.<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-comments-and-strings<\/span>&#8216;; analiza los comentarios y cadenas en el c\u00f3digo de un programa.<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-continue<\/span>&#8216;; continua ispell desde la \u00faltima vez que se finaliz\u00f3 con <strong>C-g<\/strong>.<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-kill-ispell<\/span>&#8216;; finaliza el proceso de an\u00e1lisis.<\/li>\n<\/ul>\n<ul>\n<li> <strong>M-TAB<\/strong> : &#8216;<span style=\"color: #0000ff;\">ispell-complete-word<\/span>&#8216;; imprime las posibles opciones para la palabra actual.<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada) <\/strong>: &#8216;<span style=\"color: #0000ff;\">flyspell-mode<\/span>&#8216;; analiza el texto en tiempo real (on the fly).<\/li>\n<\/ul>\n<ul>\n<li><strong> (sin keystroke asociada)<\/strong> : &#8216;<span style=\"color: #0000ff;\">flyspell-buffer<\/span>&#8216;; analiza el texto en tiempo real para dicho buffer.<\/li>\n<\/ul>\n<p>Si queremos activar flyspell por defecto podemos a\u00f1adir en nuestro <strong>.emacs<\/strong> la l\u00ednea:<\/p>\n<p><em>(setq-default flyspell-mode t)<\/em><\/p>\n<p>Por ultimo podemos usar abbrev para completar palabras t\u00e9cnicas, para ello podemos usar <strong>M-\/<\/strong> para <strong>dabbrev-expand<\/strong> y emacs completar\u00e1 la palabra a la mas cercana. Para entrar en el modo abreviado tan s\u00f3lo debemos lanzar <strong>M-x abbrev-mode<\/strong>. Emacs guarda las abreviaturas en el fichero <strong>.abbrev_defs<\/strong>.<\/p>\n<ul>\n<li>A\u00f1adir abreviaturas: debemos entrar en el modo citado anteriormente y pulsar <strong>C-x a i g <\/strong>para a\u00f1adir abreviaciones globales <strong>add-inverse-global<\/strong> o <strong>C-x a i l<\/strong> para a\u00f1adir abreviaciones locales <strong>add-inverse-local<\/strong>.<\/li>\n<\/ul>\n<ul>\n<li>Para cargar el fichero de abreviaturas por defecto: y estar en dicho modo podemos a\u00f1adir \u00e9stas l\u00edneas en nuestro <strong>.emacs<\/strong>:<\/li>\n<\/ul>\n<p style=\"padding-left: 60px;\"><em>(setq-default abbrev-mode t)<br \/>\n(read-abbrev-file \u00ab~\/.abbrev_defs\u00bb)<br \/>\n(setq save-abbrevs t)<\/em><\/p>\n<ul>\n<li>Eliminar abreviaturas: Si lo que queremos es eliminar una abreviatura debemos pulsar <strong>M-x edit-abbrevs<\/strong>. Debemos eliminar l\u00edneas completas con <strong>C-k <\/strong>o similar, no debemos editar o a\u00f1adir l\u00edneas ya que Emacs mantiene su propio formato. Para guardar los cambios despues de eliminar l\u00edneas debemos usar <strong>M-x write-abbrev-file<\/strong>.<\/li>\n<\/ul>\n<ul>\n<li>Listar abreviaturas: Si lo que queremos en cambio es listar pero no editar abreviaturas podemos lanzar el comando <strong>M-x list-abbrevs<\/strong>.<\/li>\n<\/ul>\n<ul>\n<li>Deshabilitar abreviaturas: Debemos pulsar <strong>M-x kill-all-abbrevs <\/strong>o bien <strong>M-x read-abbrev-file <\/strong>y eliminar la l\u00ednea deseada.<\/li>\n<\/ul>\n<ul>\n<li>Cancelar la \u00faltima abreviatura: Debemos pulsar <strong>M-x unexpand-abbrev<\/strong>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Emacs incluye ispell para la correcci\u00f3n autom\u00e1tica de texto. Cada diccionario es guardado en el fichero .ispell_&lt;lenguaje&gt; donde lenguaje es cualquier lenguaje, que por defecto es english. Para instalar los diccionarios e ispell (si es que no se tiene ya) desde gentoo podemos instalarlo haciendo: # emerge aspell aspell-en aspell-es O bien si utilizamos debian [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[29],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-basic","tag-emacs-ispell-aspell-spell-flyspell-abbrev"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/18"}],"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=18"}],"version-history":[{"count":1,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":810,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions\/810"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}