fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 1 | =============================================================================== |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 2 | = B e n v i d o a o t u t o r d o V I M - Versión 1.7 = |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 3 | =============================================================================== |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 4 | = C A P Í T U L O D O U S = |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 5 | =============================================================================== |
| 6 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 7 | Hic Sunt Dracones: se este é o súa primeira exposición ao vim, e |
| 8 | prefire iniciarse no capítulo introducturio, pode saír premendo |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 9 | :q <ENTER> . |
| 10 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 11 | O tempo aproximado requerido para completar este capítulo é de |
| 12 | 8-10 minutos, dependendo de canto tempo use na experimentación. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 13 | |
| 14 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 15 | Lección 2.1.1: OS REXISTROS CON NOME |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 16 | |
| 17 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 18 | ** Almacene dúas palabras copiadas de xeito consecutivo, e logo pégueas. ** |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 19 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 20 | 1. Mova o cursor ata a liña inferior sinalada con --->. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 21 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 22 | 2. Navegue ata calquera carácter da palabra 'Xoán' e escriba "ayiw . |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 23 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 24 | NEMÓNICO: |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 25 | dentro do rexistro(") |
| 26 | chamado (a) |
| 27 | pega (y)ank |
| 28 | o interior (i)nner |
| 29 | da palabra (w)ord |
| 30 | |
| 31 | 3. Navegue cara a adiante ata a palabra 'galetas' |
| 32 | ( fl ou 4fe ou $b ou /gal <ENTER> ) e teclee "byiw . |
| 33 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 34 | 4. Navegue ata calquera carácter da palabra 'Uxío' e teclee |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 35 | ciw <C-r>a<ESC> |
| 36 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 37 | NEMÓNICO: |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 38 | cambia (c)hange |
| 39 | o interior (i)nner |
| 40 | da palabra (w)ord |
| 41 | co <contido do rexistro (r)egister> |
| 42 | chamado (a) |
| 43 | |
| 44 | 5. Navegue ata calquera punto da palabra 'tartas' e teclee |
| 45 | ciw<C-r>b<ESC> |
| 46 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 47 | ---> a) De eiquí en adiante, Xoán ficará encarregado das racións de galetas. |
| 48 | b) Xa que logo, Uxío somentes terá poderes no que respecta ás tartas. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 49 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 50 | NOTA: O borrado tamén funciona nos rexistros, é dicir: |
| 51 | "sdiw borrará a palabra baixo o cursor e ficaráa no rexistro s. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 52 | |
| 53 | REFERENCIAS: Rexistros :h registers |
| 54 | Rexistros con come: :h quotea |
| 55 | Movemento :h motion.txt<enter> /inner<enter> |
| 56 | CTRL-R :h insert<enter> /CTRL-R<enter> |
| 57 | |
| 58 | |
| 59 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 60 | Lección 2.1.2: O REXISTRO DE EXPRESIÓN |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 61 | |
| 62 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 63 | ** Insira o resultado dos cáculos sobre a marcha. ** |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 64 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 65 | 1. Mova o cursor ata a liña sinalada con --->. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 66 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 67 | 2. Navegue ata calquera carácter do número que aparece na liña. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 68 | |
| 69 | 3. Teclee ciw<C-r>=60*60*24<ENTER> . |
| 70 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 71 | 4. Na seguinte liña, entre no modo Inserir e engada a data de hoxe con: |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 72 | <C-r>=system('date')<ENTER> |
| 73 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 74 | NOTA: Tódalas chamadas a sistema son dependentes do sistema operativo. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 75 | Por exemplo, en Windows pode usar: |
| 76 | system('date /t') ou :r!date /t |
| 77 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 78 | ---> Esquecín o número exacto de segundos que ten un día; son 84600? |
| 79 | ---> A data de hoxe é: |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 80 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 81 | NOTA: O mesmo pódese obter con :pu=system('date') |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 82 | ou, premendo menos teclas, con :r!date . |
| 83 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 84 | REFERENCIAS: Rexistro de experesión :h quote= |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 85 | |
| 86 | |
| 87 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 88 | Lección 2.1.3: OS REXISTROS NUMERADOS |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 89 | |
| 90 | |
| 91 | ** Prema yy e mais dd para ve-lo seu efecto nos rexistros. ** |
| 92 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 93 | 1. Mova o cursor ata a liña sinalada con --->. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 94 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 95 | 2. Copie a liña 0, e logo inspeccione os rexitros con :reg<enter> . |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 96 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 97 | 3. Borre a liña 0 con "cdd, e logo inspeccione os rexistros. |
| 98 | (Onde espera que estea o contido da liña 0?) |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 99 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 100 | 4. Continúe borrando cada liña sucesivamente, inspeccionando os rexistros |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 101 | sobre a marcha. |
| 102 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 103 | NOTA: Debería decatarse de que as liñas borradas máis antigas móvense cara a |
| 104 | embaixo na lista, consonte se engaden as novas liñas borradas. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 105 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 106 | 5. Agora, poña (p) os seguintes rexistros en orde: c, 7, 4, 8, 2. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 107 | Por exemplo, usando "7p . |
| 108 | |
| 109 | ---> 0. Esta |
| 110 | 9. cambalear |
| 111 | 8. mensaxe |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 112 | 7. é |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 113 | 6. en |
| 114 | 5. eixo |
| 115 | 4. unha |
| 116 | 3. guerra |
| 117 | 2. secreta. |
| 118 | 1. tributo |
| 119 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 120 | NOTA: O borrado de liñas enteiras (dd) permanece máis tempo nos rexistros |
| 121 | numerados có copiado de liñas enteiras ou de texto máis pequeno. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 122 | |
| 123 | REFERENCIAS: Rexistros numerados :h quote00 |
| 124 | |
| 125 | |
| 126 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 127 | Lección 2.1.4: A BELEZA DAS MARCAS |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 128 | |
| 129 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 130 | ** Evitando conta-las liñas de código ** |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 131 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 132 | NOTA: Un problema frecuente que acontece cando se programa é o desprazamento |
| 133 | entre pedazos de código. A seguinte técnica axuda a evita-lo cálculo |
| 134 | de números de liña asociados a operacions coma "a147d ou |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 135 | :945,1091d a ou, incluso peor, usando primeiro |
| 136 | <C-r>=1091-945<ENTER> . |
| 137 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 138 | 1. Mova o cursor ata a liña sinalada con --->. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 139 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 140 | 2. Vaia á primeira liña da función e márquea con ma . |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 141 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 142 | NOTA: A posición exacta na liña NON é importante! |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 143 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 144 | 3. Navegue ata a fin da liña, e deseguido ata a fin do bloque de código |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 145 | con $% . |
| 146 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 147 | 4. Borre o bloque e póñao no rexistro 'a' con "ad'a . |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 148 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 149 | NEMÓNICO: |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 150 | Dentro do rexistro(") |
| 151 | con nome de rexistro (a) |
| 152 | pon o borrado (d)eletion |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 153 | dende o cursor ata a liña que contén a marca(') |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 154 | de nome de marca (a) |
| 155 | |
| 156 | 5. Pegue o bloque entre BBB e CCC con "ap . |
| 157 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 158 | NOTA: Practique esta operación múltiples veces, |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 159 | ata chegar a facelo fluidamente: ma$%"ad'a |
| 160 | |
| 161 | ---> AAA |
| 162 | function itGotRealBigRealFast() { |
| 163 | if ( somethingIsTrue ) { |
| 164 | doIt() |
| 165 | } |
| 166 | // the taxonomy of our function has changed and it |
| 167 | // no longer makes alphabetical sense in its current position |
| 168 | |
| 169 | // imagine hundreds of lines of code |
| 170 | |
| 171 | // naively you could navigate to the start and end and record or |
| 172 | // remember each line number |
| 173 | } |
| 174 | BBB |
| 175 | CCC |
| 176 | |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 177 | NOTA: As marcas e mailos rexistros non comparten un espazo común de nomes, |
| 178 | de xeito que un rexistro 'a' é completamente independente dunha |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 179 | marca 'a'. En troques, isto non acontece entre os rexistros |
| 180 | e mailas macros. |
| 181 | |
| 182 | REFERENCIAS: Marcas :h marks |
| 183 | Movemento de marcas :h mark-motions (diferencia entre ' e `) |
| 184 | |
| 185 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 186 | Lección 2.1 RESUMO |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 187 | |
| 188 | 1. Gardar texto (por medio de copiar ou borrar), e recuperalo (pegar) dende |
| 189 | un total de 26 rexistros (a-z). |
| 190 | 2. Pegar unha palbra enteira dende calquer sitio dentro dunha palara: yiw |
| 191 | 3. Cambiar unha palabra enteira dende calquer punto de palabra: ciw |
| 192 | 4. Inserir texto directamente dende os rexistros en modo Inserir: (C-r)a |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 193 | 5. Inseri-lo resultado de operacións aritméticas simples no modo |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 194 | Inserir: (C-r)=60*60<ENTER> |
| 195 | 6. Inseri-los resultados de chamadas ao sistema no modo Inserir: |
| 196 | (C-r)=system('ls -1') |
| 197 | 7. Inspecciona-los rexistros con :reg . |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 198 | 8. Aprende-lo destino final do borrado de liñas enteiras (dd) nos |
| 199 | rexistros numerados, é dicir, descendendo dende o reistro 1 ao 9. |
| 200 | Decatarse de que o borrado de liñas enteiras presérvase nos rexistros |
| 201 | numerados máis tempo que calquera outra operación. |
| 202 | 9. Aprende-lo destino final de tódalas copias feitas nos rexistros |
| 203 | numerados e cómo son de efímeros. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 204 | 10. Situar marcas dende o modo de comandos m[a-zA-Z0-9] . |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 205 | 11. Moverse a una liña cunha marca con ' . |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 206 | |
| 207 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 208 | Isto conclúe o capítulo dows do Vim Tutor. Este é traballo en progreso. |
| 209 | Este capítulo foi escrito por Paul D. Parker. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 210 | |
| 211 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Damien Lejay | 8d9d2b2 | 2025-06-22 19:39:04 +0200 | [diff] [blame] | 212 | Traducido do inglés ao galego por Fernando Vilariño. |
| 213 | Correo electrónico: fernando@cvc.uab.es. |
fernandovilarino | 951d025 | 2025-05-03 19:07:35 +0200 | [diff] [blame] | 214 | |
| 215 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |