|
| 1 | +=============================================================================== |
| 2 | += B i e n v e n i d o a l t u t o r d e V I M - Versión 1.7 = |
| 3 | +=============================================================================== |
| 4 | += CAPÍTULO DOS = |
| 5 | +=============================================================================== |
| 6 | + |
| 7 | + Hic Sunt Dracones: si esta es tu primera vez usando vim y tienes la |
| 8 | + intención de aprovechar el capítulo de introducción, simplemente escribe |
| 9 | + :q!<ENTER> y ejecuta vimtutor para empezar por el Capítulo 1. |
| 10 | + |
| 11 | + El tiempo aproxiomado para completar este capítulo es de 8-10 minutos, |
| 12 | + dependiendo de cuanto tiempo dediques a experimentar. |
| 13 | + |
| 14 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 15 | + |
| 16 | + Lección 2.1.1: DOMINAR LOS OBJETOS DE TEXTO |
| 17 | + |
| 18 | +** Operar en bloques de texto lógicos con precisión usando objetos de texto. ** |
| 19 | + |
| 20 | + 1. Practica las operaciones con palabras: |
| 21 | + - Situa el cursor en cualquier palabra de la línea inferior |
| 22 | + - Escribe diw para eliminar la palabra DENTRO donde está el cursor |
| 23 | + (la palabra sin el espacio circundante) |
| 24 | + - Escribe daw para eliminar UNA PALABRA |
| 25 | + (incluyendo espacios en blanco al final) |
| 26 | + - Prueba con otras operaciones: ciw (cambiar), yiw (copiar), |
| 27 | + gqiw (formato) |
| 28 | + |
| 29 | +---> Practica aquí: "Vim's", (text_object), y aquí palabras 'poderosas'. |
| 30 | + |
| 31 | + 2. Trabaja con contenido entre paréntesis, corchetes o llaves: |
| 32 | + - Situa el cursor dentro de cualquier par de los símbolos () {} [] <> |
| 33 | + - Escribe di( o dib (eliminar dentro de los símbolos) |
| 34 | + - Escribe da( o dab (eliminar alrededor de los símbolos) |
| 35 | + - Prueba lo mismo con i"/a" para las comillas |
| 36 | + - Prueba con it/at para etiquetas HTML/XML |
| 37 | + |
| 38 | +---> Ejemplos de prueba: con {llaves}, [corchetes], <ángulos> y "comillas". |
| 39 | + |
| 40 | + 3. Manipulación de párrafos y frases: |
| 41 | + - Utiliza dip para eliminar el párrafo donde se encuentra el cursor |
| 42 | + - Utiliza vap para seleccionar visualmente el párrafo entero |
| 43 | + - Prueba das para eliminar una frase |
| 44 | + (funciona entre símbolos de puntuación .!?) |
| 45 | + |
| 46 | + 4. Combinaciones avanzadas: |
| 47 | + - ciwnuevo<ESC> - Cambiar la palabra actual por "nuevo" |
| 48 | + - yss"<ESC> - Encerrar la línea completa entre comillas |
| 49 | + (similar al comlemento vim-surround) |
| 50 | + - gUit - Convertir a mayúsculas el contenido de la |
| 51 | + etiqueta HTML donde esté el cursor |
| 52 | + - va"p - Seleccionar el texto entre comillas y pegarlo sobre él |
| 53 | + |
| 54 | +---> Ejercicio final: (Modificar "el" texto) al [aplicar {varias} operaciones]< |
| 55 | + |
| 56 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 57 | + |
| 58 | + Lección 2.1.2: LOS REGISTROS NOMINALES |
| 59 | + |
| 60 | + |
| 61 | + ** Almacenar dos palabras copiadas de manera consecutiva y después pegarlas ** |
| 62 | + |
| 63 | + 1. Mueve el cursor a la línea inferior marcada con ---> |
| 64 | + |
| 65 | + 2. Situa el cursor en cualquier parte de la palabra 'Edward' y escribe "ayiw |
| 66 | + |
| 67 | +REGLA NEMOTÉCNICA: dentro del registo (") llamado (a) (y)copia |
| 68 | + (i)entera la (w)palabra |
| 69 | + |
| 70 | + 3. Mueve el cursor a la palabra 'galletas' (ft o 2fg o $1b o /lle<ENTER>) |
| 71 | + y escribe "byiw |
| 72 | + |
| 73 | + 4. Situa el cursos en cualquier parte de la palabra 'Vince' |
| 74 | + y escribe ciw<CTRL-R>a<ESC> |
| 75 | + |
| 76 | +REGLA NEMOTÉCNICA: (c)ambia el (i)interior de la (w)palabra |
| 77 | + por el <contenido del (r)egistro> llamado (a) |
| 78 | + |
| 79 | + 5. Navega hasta cualquier punto de la palabra 'tarta' |
| 80 | + y escribe ciw<CTRL-R>b<ESC> |
| 81 | + |
| 82 | +---> a) Edward se encargará de las raciones de galletas |
| 83 | + b) En esta función, Vince solo tentrá poderes sobre la tarta |
| 84 | + |
| 85 | +NOTA: Eliminar también funciona dentro de los registros, por ejemplo: |
| 86 | + "sdiw eliminará la palabra bajo el cursor en el registro s. |
| 87 | + |
| 88 | +REFERENCIAS: Registros :h registers |
| 89 | + Registros nominales :h quotea |
| 90 | + Movimiento :h motion.txt<ENTER> /inner<ENTER> |
| 91 | + CTRL-R :h insert<ENTER> /CTRL-R<ENTER> |
| 92 | + |
| 93 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 94 | + |
| 95 | + Lección 2.1.3: EL REGISTRO DE EXPRESIÓN |
| 96 | + |
| 97 | + |
| 98 | + ** Insertar los resultados de los cálculos sobre la marcha ** |
| 99 | + |
| 100 | + 1. Situa el cursor sobre la línea inferior marcada con ---> |
| 101 | + |
| 102 | + 2. Navega hasta cualquier parte del número que se muestra |
| 103 | + |
| 104 | + 3. Escribe ciw<CTRL-R> seguido por =60*60*24<ENTER> |
| 105 | + |
| 106 | + 4. En la línea siguiente, entra en modo insertar y añade la fecha actual con |
| 107 | + <CTRL-R> seguido por =system('date')<ENTER> |
| 108 | + |
| 109 | +NOTA: Todas las llamadas al sistema dependen del sistema operativo utilizado. |
| 110 | + Por ejemplo en Windows hay que usar system('date /t') o :r!date /t |
| 111 | + |
| 112 | +---> He olvidado el número exacto de segundos en un días ¿son 84600? |
| 113 | + La fecha actual es: |
| 114 | + |
| 115 | +NOTA: se puede obtener el mismo resultado con :pu=system('date') |
| 116 | + o, usando menos pulsaciones de teclas :r!date |
| 117 | + |
| 118 | +REFERENCIA: Registro de expresión :h quote= |
| 119 | + |
| 120 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 121 | + |
| 122 | + Lección 2.1.4: LOS REGISTROS NUMERADOS |
| 123 | + |
| 124 | + |
| 125 | + ** Pulsa yy y dd para ser testigo de sus efectos en los registros ** |
| 126 | + |
| 127 | + 1. Situa el cursor sobre la línea inferior marcada con ---> |
| 128 | + |
| 129 | + 2. Copia la línea marcada con 0, |
| 130 | + después revisa los registros mediante :reg<ENTER> |
| 131 | + |
| 132 | + 3. Elimina la línea 0 mediante "cdd, después revisa los registros |
| 133 | + (¿Dónde esperas que esté la línea 0?) |
| 134 | + |
| 135 | + 4. Continúa eliminado cada línea sucesivamente, |
| 136 | + inspencciona :reg mientras lo haces |
| 137 | + |
| 138 | +NOTA: Deberías comprobar cómo las líneas completas eliminadas |
| 139 | + van bajando en la lista, cada vez que nuevas líneas eliminadas se añaden |
| 140 | + |
| 141 | + 5. Ahora (p)ega los siguiente registros en orden; 0, 7, 4, 2, 8. Así: "7p |
| 142 | + |
| 143 | +---> 0. Este |
| 144 | + 9. tambaleante |
| 145 | + 8. secreto |
| 146 | + 7. es |
| 147 | + 6. en |
| 148 | + 5. eje |
| 149 | + 4. un |
| 150 | + 3. guerra |
| 151 | + 2. mensaje |
| 152 | + 1. tributo |
| 153 | + |
| 154 | +NOTA: La eliminación completa de líneas (dd) persisten más en los registros |
| 155 | + numerados que las copias completas de lína o las eliminaciones que |
| 156 | + implican pequeños movimientos |
| 157 | + |
| 158 | +REFERENCIA: Registros numerados :h quote0 |
| 159 | + |
| 160 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 161 | + |
| 162 | + Lección 2.1.5: REGISTROS ESPECIALES |
| 163 | + |
| 164 | + ** Utilizar el portapappeles del sistema y los registros de agujero negro ** |
| 165 | + ** para una edición avanzada ** |
| 166 | + |
| 167 | + Nota: El uso del portapapeles del sistema requiere de bibliotecas X11/Wayland |
| 168 | + en sistemas Linux Y una compilación de Vim con la opción "+clipboard" |
| 169 | + (normalmente una compilación enorme). Se puede comprobar mediante |
| 170 | + ":version" o ":echo has('clipboard_working')" |
| 171 | + |
| 172 | + 1. Registros del portapapeles + and * : |
| 173 | + - "+y - Copiar al portapapeles del sistema |
| 174 | + (Por ejemplo: "+yy para copiar en el portapapeles la línea actual) |
| 175 | + - "+p - Pegar del portapapeles del sistema |
| 176 | + - "* es la selección principal de X11 (el botón central), |
| 177 | + "+ es el portapapeles |
| 178 | + |
| 179 | +---> Prueba: "+yy después pega la línea en otra aplicación |
| 180 | + mediante Ctrl-V o Cmd+V |
| 181 | + |
| 182 | + 2. El registro de agujero negro _ para texto descartado: |
| 183 | + - "_daw - Elimina una palabra sin guardarla en ningún registro |
| 184 | + - Útil cuando no quieres sobreescribir el registro predeterminado " |
| 185 | + - Ten en cuenta que utiliza el objeto de texto "una Palabra" visto |
| 186 | + en la lección anterior |
| 187 | + lession |
| 188 | + - "_dd - Elimina una línea sin guardarla |
| 189 | + - "_dap - Elimina un párrafo sin almacenarlo |
| 190 | + - Combinado con un conteo: 3"_dw |
| 191 | + |
| 192 | +---> Practica: Utiliza "_diw en cualquier palabra para eliminarla sin afectar |
| 193 | + al historial de copiado |
| 194 | + |
| 195 | + 3. Combinado con unas selecciones visuales: |
| 196 | + - Selecciona un texto con V y después pulsa "+y |
| 197 | + - Para pegarlo desde el portapapeles en el modo insertar pulsa: <CTRL-R>+ |
| 198 | + - Intenta abrir otra aplicación y péga el texto desde el portapapeles |
| 199 | + |
| 200 | + 4. Recuerda: |
| 201 | + - Los registros del portapapeles funcionan a través de diferentes |
| 202 | + instancias de Vim |
| 203 | + - El registro del portapapelesno siempre está funcional |
| 204 | + - El agujero negro previene el sobreescribir accidentalmente un registro |
| 205 | + - El registro predeterminado " todavía está disponible para una acción |
| 206 | + normal de copado/pegado |
| 207 | + - Los registros nominales (a-z) permanecen privados para cada sesión de Vim |
| 208 | + |
| 209 | + 5. Problemas con el portapapeles: |
| 210 | + - Comprueba que tu Vim lo admite mediante :echo has('clipboard_working') |
| 211 | + - Si el comando anterior devuelve un 1 significa que está disponible, |
| 212 | + Si devuelve un 0, significa que esa compilación de Vim no lo admite. |
| 213 | + - En Linux, se puede necesitar el paquete vim-gtk o vim-x11 package |
| 214 | + (comprueba :version output) |
| 215 | + |
| 216 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 217 | + |
| 218 | + Lección 2.1.6: LA BELLEZA DE LAS MARCAS |
| 219 | + |
| 220 | + ** El programador que rehuye de la aritmética ** |
| 221 | + |
| 222 | +NOTA: Un dilema común cuando se está creando código es mover grandes porciones |
| 223 | + de código. |
| 224 | + La siguiente técnica ayuda a evitar los cálculos asociados a los números |
| 225 | + de línea con operaciones como "a147d o :945,1091d a o o incluso peor |
| 226 | + i<CTRL-R> seguido por =1091-945<ENTER> |
| 227 | + |
| 228 | + 1. Mueve el cursor hasta la línea inferior marcada con ---> |
| 229 | + |
| 230 | + 2. Ve a la primera línea de la función marcada con ma |
| 231 | + |
| 232 | +NOTA: ¡La posición exacta dentro de la línea NO es importante! |
| 233 | + |
| 234 | + 3. Navega hasta el final de la línea y después hasta el final del |
| 235 | + bloque del código mediante $% |
| 236 | + |
| 237 | + 4. Elimina el bloque y guárdalo dentro del registro a mediante "ad'a |
| 238 | + |
| 239 | +REGLA NEMOTÉCNICA: dentro del registro(") llamado (a) coloca lo que he |
| 240 | + (d)eliminado desde el cursor hasta la LÍNEA que |
| 241 | + contiene la marca(') (a) |
| 242 | + |
| 243 | + 5. Pega el contenido del bloque entre BBB y CCC mediante "ap |
| 244 | + |
| 245 | +NOTA: practica esta operación varias veces hasta que tengas soltura ma$%"ad'a |
| 246 | + |
| 247 | +---> AAA |
| 248 | + function itGotRealBigRealFast() { |
| 249 | + if ( somethingIsTrue ) { |
| 250 | + doIt() |
| 251 | + } |
| 252 | + // La taxonomía de nuestra función ha cambiado y |
| 253 | + // Ya no tiene sentido alfabético en su posición actual |
| 254 | + |
| 255 | + // imagina que aquí hay cientos de líneas de código |
| 256 | + |
| 257 | + // de manera ingenua podrías navegar hasta el comienzo y hasta el final y |
| 258 | + // apuntar o recordar cada número de la línea |
| 259 | + } |
| 260 | + BBB |
| 261 | + CCC |
| 262 | + |
| 263 | +NOTA: Las marcas y los registros no comparten sus nombres. Así pues el |
| 264 | + registro a es completamente independiente de la marca a. |
| 265 | + Esto no se cumple con los registros y las macros. |
| 266 | + |
| 267 | +REFERENCIA: Marcas :h marks |
| 268 | + Movimientos con las marcas :h mark-motions |
| 269 | + (diferencia entre ' y `) |
| 270 | + |
| 271 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 272 | + |
| 273 | + Lección 2.1 RESUMEN |
| 274 | + |
| 275 | + 1. Los objetos de texto ofrecen precisión a la hora de editar: |
| 276 | + - iw/aw - dentro/alrededor de una palabra |
| 277 | + - i[/a[ - dentro/alrededor de un paréntesis, corchete, etc |
| 278 | + - i"/a" - dentro/alrededor de unas comillas quotes |
| 279 | + - it/at - dentro/alrededor de una etiqueta |
| 280 | + - ip/ap - dentro/alrededor de un párrafo |
| 281 | + - is/as - dentro/alrededor de una frase |
| 282 | + |
| 283 | + 2. Para almacenar (copiar o eliminar) un texto dentro y volverlo a utilizar |
| 284 | + (pegarlo), existen un total de 26 registros nominales (a-z) |
| 285 | + 3. Copiar una palabra complete con el cursor situado en cualquierparte |
| 286 | + dentro de esa palabra mediante: yiw |
| 287 | + 4. Cambiar una palabra completa con el cursor en cualquier parte de esa |
| 288 | + palabra mediante: ciw |
| 289 | + 5. Insertar texto directamente desde los registros en el modo insertar |
| 290 | + mediante el comando: <CTRL-R>a |
| 291 | + |
| 292 | + 6. Insertar los resultado de una simple operación aritmética |
| 293 | + en el modo insertar mediante: <CTRL-R> seguido por =60*60<ENTER> |
| 294 | + 7. Insertar los resultado de una llamada del sistema en el modo insertar |
| 295 | + mediante: <CTRL-R> seguido por =system('ls -1')<ENTER> |
| 296 | + |
| 297 | + 8. Inspeccionar el contenido de los registros con :reg |
| 298 | + 9. Aprender el destino final al que va a parar la eliminación de |
| 299 | + una línea complete: dd en los registros numerados. |
| 300 | + Por ejemplo: descendiendo desde el registro 1 al 9. i.e. descending from register 1 - 9. |
| 301 | + Ten en cuenta cómo las eliminaciones completas de las líneas son preservadas en |
| 302 | + los registros numerado y permanecen más que cualquier otra operación realizada |
| 303 | + 10. Aprender cual es el destino final de todos los objetos que copiamos |
| 304 | + en los registros numerados y cómo son de efímeros |
| 305 | + |
| 306 | + 11. Ubicar marcas desde el modo de comandos m[a-zA-Z0-9] |
| 307 | + 12. Mover de manera inteligente una línea a una marca con ' |
| 308 | + |
| 309 | + 13. Registros especiales: |
| 310 | + - "+/"* - Portapapeles del sistema (depende el sistema operativo utilizado) |
| 311 | + - "_ - El agujero negro (descarta texto eliminado/copiado) |
| 312 | + - "= - Registro de expresión |
| 313 | + |
| 314 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 315 | + |
| 316 | + Con esto concluye el capítulo dos del Tutor de Vim. |
| 317 | + Este es un trabajo en progreso. |
| 318 | + |
| 319 | + Este capítulo fue traducido por Paul D. Parker y Christian Brabandt. |
| 320 | + Traducido por Victorhck. |
| 321 | + |
| 322 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
0 commit comments