{"id":184,"date":"2023-08-31T11:23:02","date_gmt":"2023-08-31T09:23:02","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=184"},"modified":"2025-04-25T11:51:39","modified_gmt":"2025-04-25T09:51:39","slug":"1-9-2-edicion-de-archivos-con-el-editor-vim","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-9-2-edicion-de-archivos-con-el-editor-vim\/","title":{"rendered":"1.9.2. Edici\u00f3n de archivos con el editor <em>vim<\/em>"},"content":{"rendered":"<p><em>Vim<\/em>, tambi\u00e9n conocido como <em>Vi Improved<\/em>, es un editor programable altamente potente y vers\u00e1til que se encuentra presente en todos los sistemas GNU\/Linux. Una de sus principales caracter\u00edsticas es que dispone de diferentes modos (normal, visual, <em>insert<\/em>, <em>command-line, select<\/em> y <em>ex<\/em>), los cuales se alternan para llevar a cabo distintas operaciones. Esta particularidad lo diferencia de la mayor\u00eda de los editores comunes, que suelen tener un solo modo (<em>insert<\/em>), donde se introducen las \u00f3rdenes mediante combinaciones de teclas o interfaces gr\u00e1ficas.<\/p>\n<p>La totalidad del control de <em>vim<\/em> se realiza a trav\u00e9s del teclado desde un terminal, lo que lo hace ideal para ser utilizado sin problemas a trav\u00e9s de conexiones remotas, ya que no carga el sistema al no desplegar un entorno gr\u00e1fico. Aprender a utilizar <em>vim<\/em> es altamente recomendable debido a su capacidad para aumentar la productividad y la eficiencia en la programaci\u00f3n.<\/p>\n<p>En este apartado se explican dos modos de <em>vim<\/em>. Modo de inserci\u00f3n (o entrada) y modo de edici\u00f3n. En el modo de inserci\u00f3n, se puede introducir o ingresar contenido en el archivo. En el modo de edici\u00f3n, puede moverse por el archivo, efectuar acciones como eliminar, copiar, buscar y reemplazar, guardar, etc. Un error com\u00fan es comenzar a ingresar comandos sin volver primero al modo de edici\u00f3n o comenzar a escribir entrada sin entrar primero en el modo de inserci\u00f3n. Si haces cualquiera de estas cosas, generalmente es f\u00e1cil recuperarse, as\u00ed que no te preocupes, luego te explico.<\/p>\n<p>\u00a1Empecemos! Ser\u00e1 dif\u00edcil\u00a0 demostrar gran parte de esto, as\u00ed que, en lugar vuestro, citar\u00e9 lo que quiero que escrib\u00e1is y tendr\u00e9is que intentarlo, y vosotros, ver qu\u00e9 sucede.<\/p>\n<p>Primero, generad un nuevo directorio porque se van a crear algunos archivos y esto los mantendr\u00e1 fuera de tu material normal. Ahora vamos a editar nuestro primer archivo.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ vi primer-fichero<\/pre>\n<p>Cuando ejecut\u00e1is este comando, se abre el archivo. Si el archivo no existe, lo crear\u00e1 por vosotros y luego lo abrir\u00e1 (no es necesario ejecutar <em>touch<\/em> archivo antes de editarlo). Una vez que ingres\u00e9is la orden <em>vi <\/em>primer fichero, se ver\u00e1 algo como se muestra en la figura 3 (aunque dependiendo del sistema en el que te encuentres, puede verse ligeramente diferente).<\/p>\n<figure id=\"attachment_100\" aria-describedby=\"caption-attachment-100\" style=\"width: 723px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-100 size-full\" src=\"\/wp-content\/uploads\/sites\/5\/2023\/08\/image003.png\" alt=\"\" width=\"723\" height=\"469\" srcset=\"\/wp-content\/uploads\/sites\/5\/2023\/08\/image003.png 723w, \/wp-content\/uploads\/sites\/5\/2023\/08\/image003-300x195.png 300w\" sizes=\"(max-width: 723px) 100vw, 723px\" \/><figcaption id=\"caption-attachment-100\" class=\"wp-caption-text\">Figura 3. Imagen obtenida al ejecutar la orden <em>vi<\/em>\u00a0primer-fichero.<\/figcaption><\/figure>\n<p>Siempre comienzamos en modo de edici\u00f3n, por lo que lo primero que vamos a hacer es cambiar al modo de inserci\u00f3n presionando la letra <em>i<\/em>. Pod\u00e9is saber cu\u00e1ndo est\u00e1is en modo de inserci\u00f3n porque estar\u00e1 indicado en la esquina inferior izquierda. Ahora escribid algunas l\u00edneas de texto y presionad <em>Esc<\/em>, lo que os llevar\u00e1 de vuelta al modo de edici\u00f3n.<\/p>\n<p><strong><em>Save<\/em> y <em>existing<\/em><\/strong><\/p>\n<p>Hay algunas formas de realizar esto. Todas ellas hacen esencialmente lo mismo, as\u00ed que elegid la que prefir\u00e1is. Para todas estas, aseguraos primero de estar en modo de edici\u00f3n.<\/p>\n<p><code>:ZZ<\/code> (Nota: en may\u00fasculas). Guardar y salir.<\/p>\n<p><code>:q!<\/code> \u00a0Descartar todos los cambios desde el \u00faltimo guardar y salir.<\/p>\n<p><code>:w<\/code> Guardar el archivo pero no salir.<\/p>\n<p><code>:wq<\/code> Nuevamente, guardar y salir.<\/p>\n<p>La mayor\u00eda de los comandos dentro de <em>vi<\/em> se ejecutan tan pronto como se presiona una secuencia de teclas. Cualquier comando que comience con dos puntos (:) requiere que presion\u00e9is &lt;enter&gt; para completar el comando. Guardad y salvad el archivo que ten\u00e9is actualmente abierto.<\/p>\n<p>El editor<em> vi<\/em> permite editar archivos. Si quisi\u00e9ramos, tambi\u00e9n podr\u00edamos usarlo para ver archivos, pero hay otros m\u00e1s comandos que son un poco m\u00e1s convenientes para ese prop\u00f3sito. Probamos <em>cat<\/em>, que en realidad significa <em>concatenar<\/em> y su objetivo principal es unir archivos, pero en su forma m\u00e1s b\u00e1sica es \u00fatil para simplemente, como ya se ha visto, ver archivos.<\/p>\n<p><strong>Navegando en un fichero <em>vi<\/em><\/strong><\/p>\n<p>Ahora volvamos al archivo que acabamos de crear e ingresemos m\u00e1s contenido. En el modo de inserci\u00f3n, pod\u00e9is emplear las teclas de flecha para mover el cursor. Ingresad dos p\u00e1rrafos m\u00e1s de contenido y luego presionad <em>Esc<\/em> para volver al modo de edici\u00f3n.<\/p>\n<p>A continuaci\u00f3n, se muestran algunos de los muchos comandos que pod\u00e9is ingresar para moveros por el archivo. Jugad con ellos y observad c\u00f3mo funcionan.<\/p>\n<ul>\n<li>Teclas de flecha: mueve el cursor por el archivo.<\/li>\n<li><em>j<\/em>, <em>k<\/em>, <em>h<\/em>, <em>l<\/em>: mueve el cursor hacia abajo, arriba, izquierda y derecha (similar a las teclas de flecha).<\/li>\n<li><code>^<\/code> (acento circunflejo): mueve el cursor al principio de la l\u00ednea actual.<\/li>\n<li><code>$<\/code> : mueve el cursor al final de la l\u00ednea actual.<\/li>\n<li><code>nG<\/code>: mueve el cursor hasta la <em>n<\/em>-\u00e9sima l\u00ednea (por ejemplo, <em>5G<\/em> se mueve a la quinta l\u00ednea).<\/li>\n<li><code>G<\/code>: mueve el cursor hasta la \u00faltima l\u00ednea.<\/li>\n<li><code>w<\/code>: mueve el cursor al principio de la siguiente palabra.<\/li>\n<li><code>nw<\/code>: mueve el cursor <em>n<\/em> palabras hacia delante (por ejemplo, <em>2w<\/em> mueve dos palabras hacia delante).<\/li>\n<li><code>b<\/code>: mueve el cursor al principio de la palabra anterior.<\/li>\n<li><code>nb<\/code>: mueve el cursor hacia atr\u00e1s <em>n<\/em><\/li>\n<li><code>{ :<\/code> mueve un p\u00e1rrafo hacia atr\u00e1s, <code>}:<\/code> mueve un p\u00e1rrafo hacia delante.<\/li>\n<\/ul>\n<p>Si escrib\u00eds :<code>set nu<\/code> en el modo de edici\u00f3n dentro de <em>vi<\/em>, se habilitar\u00e1n los n\u00fameros de l\u00ednea. Descubrir\u00e9is que trabajar con archivos es mucho m\u00e1s f\u00e1cil con los n\u00fameros de l\u00ednea habilitados.<\/p>\n<p><strong>Eliminando contenido<\/strong><\/p>\n<p>Acabamos de ver que si queremos movernos dentro de <em>vi<\/em>, hay muchas opciones disponibles. Varias de ellas tambi\u00e9n nos permiten procesarlas con un n\u00famero para mover esa cantidad de veces. Eliminar funciona de manera similar al movimiento; de hecho, varios comandos de eliminaci\u00f3n nos permiten incorporar un comando de movimiento para definir lo que se va a eliminar. A continuaci\u00f3n, se muestran algunas de las muchas formas en que podemos eliminar contenido dentro de <em>vi<\/em>. Jugad con ellas ahora (consultad tambi\u00e9n la secci\u00f3n siguiente sobre c\u00f3mo deshacer para poder deshacer vuestras eliminaciones).<\/p>\n<ul>\n<li><code>x<\/code>: elimina un solo car\u00e1cter.<\/li>\n<li><code>nx<\/code>: elimina <em>n<\/em> caracteres (por ejemplo, <em>5x<\/em> elimina cinco caracteres).<\/li>\n<li><code>dd<\/code>: elimina la l\u00ednea actual.<\/li>\n<li><code>dn<\/code>: <em>d<\/em> seguido de un comando de movimiento. Elimina hasta donde el comando de movimiento te llevar\u00eda (por ejemplo, <em>d5w<\/em> significa eliminar cinco palabras).<\/li>\n<\/ul>\n<p><strong>Deshacer<\/strong><\/p>\n<p>Deshacer cambios en <em>vi<\/em> es bastante f\u00e1cil. Es el car\u00e1cter <em>u<\/em>.<\/p>\n<ul>\n<li><code>u<\/code>: deshace la \u00faltima acci\u00f3n (puedes seguir presionando <em>u<\/em> para seguir deshaciendo).<\/li>\n<li><code>U<\/code> (Nota: may\u00fascula): deshace todos los cambios en la l\u00ednea actual.<\/li>\n<\/ul>\n<p><strong>Llev\u00e1ndolo m\u00e1s all\u00e1<\/strong><\/p>\n<p>Ahora podemos insertar contenido en un archivo, movernos por el archivo, eliminar contenido y deshacerlo, luego guardar y salir. Inmediatamente, pod\u00e9is hacer ediciones b\u00e1sicas en <em>vi<\/em>. Sin embargo, esto es solo la introducci\u00f3n de lo que <em>vi<\/em> puede hacer. Hay m\u00e1s:<\/p>\n<ul>\n<li>copiar y pegar<\/li>\n<li>buscar y reemplazar<\/li>\n<li><em>buffers <\/em><\/li>\n<li>marcadores<\/li>\n<li>rangos<\/li>\n<li>configuraciones<\/li>\n<\/ul>\n<p>Aunque no es posible dedicarle m\u00e1s tiempo, se recomienda un tutorial para aprender a utilizar <em>vim<\/em> o bien acceder directamente a su tutorial interactivo a trav\u00e9s del comando <em>vimtutor<\/em> en el terminal.<\/p>\n<div id=\"gtx-trans\" style=\"position: absolute; left: 100px; top: 7336.8px;\">\n<div class=\"gtx-trans-icon\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Vim, tambi\u00e9n conocido como Vi Improved, es un editor programable altamente potente y vers\u00e1til que se encuentra presente en todos los sistemas GNU\/Linux. Una de sus principales caracter\u00edsticas es que dispone de diferentes modos (normal, visual, insert, command-line, select y ex), los cuales se alternan para llevar a cabo distintas operaciones. Esta particularidad lo diferencia [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/184"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=184"}],"version-history":[{"count":18,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/184\/revisions"}],"predecessor-version":[{"id":1359,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/184\/revisions\/1359"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}