Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/vim73/doc/usr_04.esx
blob: 742a9ee102294de5aa3a3df55af0d78d7204c60b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
*usr_04.esx*	Para Vim versión 7.3.  Último cambio: 7/6/2008

		MANUAL DE USUARIO DE VIM - por Bram Moolenaar

			   Hacer cambios pequeños


Este capítulo le muestra diferentes formas de hacer correcciones y moverse
en el texto. Le muestra los tres modos básicos de cambiar texto:
operador-movimiento, modo Visual y objetos de texto.

|04.1|	Operadores y movimiento
|04.2|	Cambiar texto
|04.3|	Repetir un cambio
|04.4|	Modo Visual
|04.5|	Mover texto
|04.6|	Copiar texto
|04.7|	Uso del portapapeles
|04.8|	Objetos de texto
|04.9|	Modo reemplazar
|04.10|	Conclusión

 Capítulo siguiente: |usr_05.esx|  Configuración
  Capítulo anterior: |usr_03.esx|  Desplazamiento
Tabla de contenidos: |usr_toc.esx|

==============================================================================
*04.1*	Operadores y movimiento

En el capítulo 2 aprendió que la orden «x» elimina un único carácter. Y
que usar un multiplicador: «4x» elimina cuatro caracteres.
   La orden «dw» elimina una palabra. Reconocerá la orden «w» como el de
movimiento sobre palabras. De hecho, la orden «d» se ha completar con
una orden de movimiento, y elimina desde la posición actual hasta donde
marque el movimiento.
   La orden «4w», por ejemplo, mueve el cursor cuatro palabras. La orden
d4w elimina cuatro palabras.

	Errar es humano.  Para liarla de verdad necesitas un ordenador. ~
			  ---------------------->
				 d4w

	Errar es humano.  necesitas un ordenador. ~

Vim sólo elimina hasta la posición donde la orden de movimiento le lleva.
Eso es porque Vim sabe que probablemente no desea eliminar la primera letra
de una palabra. Si usa la orden «ex para desplazarse hasta el final de una
palabra, Vim adivina que quiere incluir el último carácter:

	Errar es humano.  necesitas un ordenador. ~
			------------->
			   d2e

	Errar es humano. ordenador. ~

El que el carácter bajo el cursor se incluya o no depende de la orden de
movimiento empleado. El manual de referencia llama a esto «exclusivo» cuando
el carácter no se incluye e «inclusivo» en caso contrario.

La orden «$» le desplaza hasta el final de la línea. La orden «d$» elimina
desde el cursor hasta el final de la línea. Este es un movimiento inclusivo,
por lo que el último carácter de la línea se incluye en la operación:

	Errar es humano. ordenador. ~
		       ----------->
			    d$

	Errar es humano ~

Esto sigue siempre la misma estructura: operador-movimiento. Primero
introduce el operador. Por ejemplo, «d» es el operador de eliminación. Luego
introduce una orden de movimiento «4l» o «w». De esta manera, puede operar
sobre cualquier texto en el que se pueda desplazar.

==============================================================================
*04.2*	Cambiar texto

Otro operador es «c», cambiar (change). Actúa justo como el operador «d»,
excepto que le deja en modo Insertar. Por ejemplo «cw» cambia una palabra.
Es decir, elimina una palabra y le deja en modo Insertar.

	Errar es humano ~
	--------->
	 c2wEl ser<Esc>

	El ser humano ~

Este «c2wEl ser<Esc>» contiene las siguientes partes:

	c	el operador de cambio
	2w	moverse dos palabras (se eliminan y va al modo Insertar)
	El ser	inserta el siguiente texto
	<Esc>	de vuelta al modo Normal

Si ha prestado atención, se habrá dado cuenta de que hay algo raro: El
espacio antes de «humano» no se ha eliminado. Hay un dicho: para cada
problema hay una solución que es simple, clara y errónea. Este es el caso
con el ejemplo usado aquí con la orden «cw». El operador «c» funciona justo
como el operador «d», con una excepción: «cw». De hecho, funciona justo
igual que «ce», cambiar hasta el final de la palabra. El espacio después de
la palabra no se incluye. Esta excepción data de Vi. Ya que mucha gente se
ha acostumbrado a ella, ha permanecido con Vim.


MÁS CAMBIOS

Del mismo modo que «dd» elimina una línea completa, «cc» la cambia. Además,
mantiene la sangría (los espacios en blanco precedentes).

Así como «d$» elimina hasta el final de la línea, «c$» la cambia hasta el
final.  Es como pulsar «d$» para eliminar el texto y luego «a» para activar
el modo Insertar y añadir más texto.


ACCESOS DIRECTOS

Algunas órdenes de operación-movimiento se usan tan a menudo que se les ha
asignado una orden de una sola letra:

	x  equivale a  dl  (eliminar carácter bajo el cursor)
	X  equivale a  dh  (eliminar carácter a la izquierda del cursor)
	D  equivale a  d$  (eliminar hasta el final de la línea)
	C  equivale a  c$  (cambiar hasta el final de la línea)
	s  equivale a  cl  (cambiar un carácter)
	S  equivale a  cc  (cambiar una única línea)


DÓNDE PONER EL CONTADOR

Las órdenes «3dw» y «d3wx eliminan tres palabras. Si quiere ponerse
detallista, la primera ordem, «3dw», elimina una palabra tres veces; la
orden «d3w» elimina tres palabras de una vez. Esta diferencia no se puede
distinguir. Sin embargo, puede poner dos multiplicadores. Por ejemplo «3d2w»
elimina dos palabras y lo repite 3 veces, un total de seis palabras.


REEMPLAZAR CON UN CARÁCTER

La orden «r» no es un operador. Espera a que introduzca un carácter, y
reemplazará el carácter bajo el cursor con él. Puedes hacer lo mismo con la
orden «cl» o con «s», pero con «r» no tendrá que pulsar <Esc>

	aquí hay algo tue esná mal ~
	rA	      rq    rt

	Aquí hay algo que está mal ~

Usar un multiplicador con «r» causa que se reemplacen muchos caracteres con
el mismo carácter. Por ejemplo:

	Aquí hay algo que está mal ~
			   5rx

	Aquí hay algo que exxxxxal ~

Para reemplazar un carácter con un salto de línea use «r<Entrar>». Esto
elimina un carácter e inserta un salto. Usar un multiplicador aquí sólo
afecta al número de caracteres eliminados: «4r<Entrar>» reemplaza cuatro
caracteres con un salto.

==============================================================================
*04.3*	Repetir un cambio

La orden «.» es uno de los más sencillos pero más potentes de Vim. Repite el
último cambio. Por ejemplo, suponga que está editando un archivo HTML y
desea eliminar todas las etiquetas <B>. Para ello, coloque el cursor sobre
el primer < y luego elimine el <B> con la orden «df>». Entonces va al < del
</B> y lo elimina con la orden «.». La orden «.» ejecuta el último cambio
(en este caso «df>»). Para eliminar otra etiqueta, coloque el cursor sobre
el < y vuelve a pulsar la orden «.».

			      Para <B>generar</B> una tabla de <B>contenidos ~
	f<   ir al primer  <    --->
	df>  elimina hasta >       -->
	f<   ir al segundo <	   ---------->
	.    repetir df>		     --->
	f<   ir al siguiente <		     ------------------>
	.    repetir df>				       -->

La orden «.» funciona para todos los cambios que haga excepto para la orden
«u» (deshacer), CTRL-R, (rehacer) y todos los que comienzan con «:».

Otro ejemplo: Desea cambiar la palabra «cuatro» por «cinco». Aparece varias
veces en su texto. Puede hacer esto rápidamente en una secuencia de órdenes:

	/cuatro<Entrar>	encuentra la primera cadena «cuatro»
	cwcinco<Esc>	cambia la palabra a «cinco»
	n		encuentra la siguiente cadena «cuatro»
	.		repite el cambio a «cinco»
	n		encuentra la siguiente cadena «cuatro»
	.		repite el cambio
			etc.

==============================================================================
*04.4*	Modo visual

Los cambios operador-movimiento funcionan bastante bien para eliminar
elementos sencillos. Pero a menudo, no es fácil decidir que orden de
movimiento le desplazará hasta el texto que quiere modificar.  Es el momento
de usar el modo Visual.

Puede iniciar el modo Visual pulsando «v». Puede mover el cursor sobre el
texto que desea modificar. Mientras haces esto, el texto se resalta.
Finalmente, teclee la orden del operador.
   Por ejemplo, para eliminar de la mitad de una palabra a la mitad de otra:

		Esto es una muestra cualquiera del modo Visual ~
				 ---------->
				 veehhd

		Esto es una muestra del modo Visual ~

Cuando hace esto, no tiene que contar cuántas veces pulsa «e» o «h» para
llegar a la posición deseada. Puede verlo de forma inmediata antes de pulsar
«d».

Si en cualquier momento decide que no quiere hacer nada con el texto
resaltado, simplemente pulse <Esc> y el modo Visual parará sin hacer nada.


SELECCIONAR LÍNEAS

Si quiere trabajar con líneas completas, use «V» para iniciar el modo
Visual. Verá que toda la línea se resalta, sin ni siquiera mover el cursor.
Cuando mueva el cursor a la izquierda o derecha, nada cambiará. Si lo mueve
hacia arriba o hacia abajo, la selección se extenderá a líneas completas.
   Por ejemplo, seleccione tres líneas con «Vjj»:

			  +------------------------+
			  | texto más texto	   |
		       >> | más texto más texto    | |
  líneas seleccionadas >> | texto texto texto	   | | Vjj
		       >> | texto más		   | V
			  | más texto más	   |
			  +------------------------+


SELECCIONAR BLOQUES

Si desea trabajar en un bloque rectangular de caracteres, use CTRL-V para
iniciar el modo Visual. Esto es muy útil si trabaja con tablas.

		nombre		Q1	Q2	Q3
		pedro		123	455	234
		juan		0	90	39
		estéban		392	63	334

Para eliminar la columna central «Q2» desplaze el cursor a la «Q» de
«Q2». Pulse CTRL-V para iniciar el modo Visual de bloques. Ahora mueva el
cursor tres líneas abajo con «3j» y a la siguiente palabra con «w». Puede
comprobar que el primer carácter de la última columna se ha incluido. Para
excluirlo, use «h».  Si ahora pulsa «d» la columna central desaparecerá.


IR AL OTRO LADO

Si ha seleccionado algo de texto en modo Visual, y descubre que necesita
cambiar el otro lado de la selección, use la orden «o» (Truco: o para el
«otro» lado). El cursor irá hasta el otro final de la selección, y podrá
modificar dónde comienza la selección. Pulsa «o» de nuevo para volver al
otro lado.

Cuando usa el modo Visual de bloques, tiene cuatro esquinas. «o» le llevará
a una de las otras líneas diagonalmente. Use «O» para moverse hacia el otro
final de la misma línea.

Observe que «o» y «O» en el modo Visual funcionan de forma muy diferente a
cómo lo hacen en el modo Normal, donde abririán una nueva línea.

==============================================================================
*04.5*	Mover texto

Cuando elimina algo con «d», «x», u otra orden, el texto se guarda.
Puede pegarlo usando la orden «p».  (El nombre de Vim para esto es «poner»,
del inglés «put»).
   Échale un vistazo a cómo funciona esto. Elimine primero una línea
completa poniendo el cursor en la línea y pulsando «dd». Mueva ahora el
cursor allá donde quiera poner la línea y use la orden «p». La línea se
insertará en la línea siguiente a donde se encuentra el cursor.

	una línea	una línea     una línea
	línea 2	   dd	línea 3	   p  línea 3
	línea 3			      línea 2

Ya que eliminó una línea completa, la orden «p» colocó la línea de texto
debajo del cursor. Si elimina parte de una línea (una palabra, por ejemplo),
la orden «px la pone justo después del cursor.

	Más de lo para mismo probar órdenes ~
		  ---->
		  dw

	Más de lo mismo probar órdenes ~
		  ----->
		  whp

	Más de lo mismo para probar órdenes ~


MÁS SOBRE LA ORDEN PONER

La orden «P» pone una línea como «p», pero antes del cursor. Cuando elimine
una línea con «dd», «P» lo pondrá de vuelta sobre el cursor. Cuando elimine
una palabra con «dw», «P» lo pondrá antes del cursor.

Puede repetir la orden tantas veces como quiera. Se usará el mismo texto.

Puede usar un multiplicador con «p» y «P». El texto se repetirá tantas veces
como especifique con el multiplicador. Por ejemplo, usar «dd» y luego «3p»
pone tres copias de la misma línea eliminada.


INTERCAMBIAR DOS CARACTERES

Más de una vez, mientras teclea, sus dedos irán por delante de su cerebro
(¿o al revés?). El resultado es un error del tipo «uqe» en lugar de
«que». Vim hace que corregir estos problemas sea sencillo. Simplemente ponga
el cursor sobre la «u» de «uqe» y ejecute la orden «xp». Esto funciona del
siguiente modo: «x» elimina el carácter «u» y lo coloca en un registro. «p»
pone el texto después del cursor, justo después de la «q».

	uqe     qe     que ~
	x       p

==============================================================================
*04.6*	Copiar texto

Para copiar texto de un lugar a otro, puede eliminarlo, usar «u» para
deshacer la eliminación y después usar «p» para colocarlo en otro lugar. Hay
un modo mejor: «yank» (dar un tirón). El operador «y» copia texto en un
registro. Puede usar una orden «p» para ponerlo.
   «Yanking» es simplemente el nombre de Vim para copiar. La letra «c» ya
estaba en uso por el operador «cambiar», y la «y» estaba aún disponible.
Llamar a este el operador «yank» hizo que fuera más fácil recordar la «y».

Ya que «y» es un operador, se usa «yw» para copiar una palabra. Se puede
usar un multiplicador. Para copiar dos palabras usa «y2w». Por ejemplo:

	let sqr = LongVariable * ~
		 -------------->
		       y2w

	let sqr = LongVariable * ~
			       p

	let sqr = LongVariable * LongVariable ~

Observe que «yw» incluye el espacio en blanco después de la palabra. Si no
quiere que esto ocurra, us «ye».

La orden «yy» copia una sola línea, al igual que «dd» la elimina. Sin
embargo, mientras que «D» elimina desde el cursor hasta el final de la
línea, «Y» funciona como «yy», copiando la línea completa. ¡Cuidado con esta
inconsistencia! Use «y$» para copiar sólo hasta el final.

	línea de texto   yy	línea de texto         línea de texto
	línea 2			línea 2		p      línea 2
	última línea		última línea	       línea de texto
						       última línea

==============================================================================
*04.7*	Uso del portapapeles

Si está usando la versión GUI de Vim (gvim), puede usar la opción «Copiar»
del menú «Edit». Seleccione primero el texto en modo Visual, use después el
menú Editar/Copiar. Así, el texto seleccionado se copia al portapapeles.
Ahora puede pegarlo en otros programas o en el propio Vim.

Si ha copiado texto en el portapapeles desde otra aplicación, puede pegarlo
en Vim con el menú Editar/Pegar. Esto funciona en modo Normal y en modo
Insertar. En modo Visual el texto seleccionado es reemplazado.

La opción «Cortar» del menú elimina el texto antes de ponerlo en el
portapapeles. Las opciones «Cortar», «Copiar» y «Pegar» están también
disponibles en el menú popup (sólo cuando esté disponible). Si su Vim tiene
barra de tareas, puede encontrar estos botones allí también.

Si no usa la GUI o no te gusta usar el menú, tiene otro modo. Use la orden
«y» normal (copiar) y «p» (poner), pero antes escriba «"*» (comillas dobles,
asterisco). Para copiar una línea en el portapapeles: >

	"*yy

Para poner texto desde el portapapeles en el texto: >

	"*p

Esto sólo funciona en versiones de Vim que incluyen soporte para
portapapeles.  Más sobre el portapapeles en la sección |09.3| y aquí:
|clipboard|.

==============================================================================
*04.8*	Objetos de texto

Si el cursor está en medio de una palabra y la quiere eliminar, tiene que
desplazarse hasta su comienzo antes de que pueda hacer «dw». Hay un modo más
sencillo de hacer esto: «daw».

	esto es texto de ejemplo. ~
		 daw

	esto es de ejemplo. ~

La «d» de «daw» es el operador de eliminación. «aw» es el objeto de texto.
Truco: «aw» viene de «A Word». Por lo que «daw» es «Delete A Word». Para ser
más precisos, el espacio después de la palabra se elimina también (el
espacio antes de la palabra si ésta se encuentra al final de una línea).

Usar objetos de texto es la tercera manera de hacer cambios en Vim: 
el operador-movimiento, el modo Visual, y ahora el operador-objeto de texto.
   Es muy similar al operador-movimiento, pero en lugar de operar en el texto
entre la posición inicial y final del cursor, el objeto de texto se emplea en
su totalidad. No importa en que lugar del objeto se encontraba el cursor
antes de la orden.

Para cambiar una oración completa use «cis». Suponga este texto:

	¿Qué tal?  Esto ~
	es un ejemplo.  Algo ~
	de texto. ~

Vaya al comienzo de la segunda línea, sobre el «es un». Ahora, use «cis»:

	¿Qué tal?    Algo ~
	de texto. ~

El cursor está entre los espacios de la primera línea. Escriba ahora la
nueva frase «Otra línea.»:

	¿Qué tal?  Otra línea.  Algo ~
	de texto. ~

«cis» consiste del operador «c» (cambiar) y el objeto de texto «is». Esto
viene de «Inner Sentence». También hay un objeto «as» (a sentence). La
diferencia es que «as» incluye el espacio en blanco después de la frase e
«is» no. Si desea eliminar la frase y quiere eliminar al mismo tiempo el
espacio en blanco posterior, use entonces «das». Si quiere escribir otro
texto, el espacio puede permanecer, con lo que puedes usar «cis».

También puede usar los objetos de texto on modo Visual. Incluirá el objeto
de texto en la selección. El modo Visual permanece, así que puede hacerlo
varias veces. Por ejemplo, inicie el modo Visual con «v» y seleccione una
frase con «as». Ahora puede repetir «as» para incluir más frases.  Por
último, use un operador para hacer algo con las frases seleccionadas.

Puede encontrar una larga lista de objetos de texto aquí: |text-objects|.

==============================================================================
*04.9*	Modo reemplazar

La orden «R» hace que Vim entre en modo reemplazar. En este modo, cada
carácter que introduzca reemplaza al que está debajo del cursor. Esto
continúa hasta que pulse <Esc>.
   En este ejemplo, Ud. comienza el modo Reemplazar en la primera «t» de «texto»:

	Esto es texto. ~
		Rinteresante.<Esc>

	Esto es interesante. ~

Puede que haya notado que ha reemplazado 5 caracteres en la línea con otros
doce. La orden «R» extiende automáticamente la línea si se queda sin
caracteres que reemplazar. Esto no ocurrirá en la siguiente línea.

Puede alternar el modo Insertar y Reemplazar con la tecla <Insert>.

Cuando use <Retroceso> para hacer una corrección comprobará que el texto
anterior reaparece. Por lo tanto, funciona como la orden deshacer para el
último carácter tecleado.

==============================================================================
*04.10*	Conclusión

Los operadores, órdenes de movimiento y los objetos de texto le dan
múltiples posibilidades para hacer muchas combinaciones.  Ahora que sabe
cómo funciona, puede usar N operadores con M órdenes de movimiento para
hacer M * N órdenes!

Puede usar la lista completa de operadores aquí: |operator|

Por ejemplo, hay otras muchas maneras de eliminar porciones de texto.  Aquí
tiene algunas de las más empleadas:

x	elimina el carácter bajo el cursor (abreviado de "dl")
X	elimina el carácter antes del cursor (abreviado de "dh")
D	elimina desde el cursor hasta el final de línea (abreviado de "d$")
dw	elimina desde el cursor hasta el próximo comienzo de palabra
db	elimina desde el cursor hasta el anterior comienzo de palabra
diw	elimina la palabra bajo el cursor (excluyendo el espacio en blanco)
daw	elimina la palabra bajo el cursor (incluyendo el espacio en blanco)
dG	elimina hasta el final del archivo
dgg	elimina hasta el final del archivo

Si usa «c» en lugar de «d»,estos se convierten en órdenes de cambio.  Y con
«y» copias el texto. Y así en adelante.


Hay algunas otras órdenes que no encajan en ningún otro lugar, por lo tanto
se explican a continuación:

	~	cambia el carácter bajo el cursor de minúsculas a mayúsculas y
		al revés, moviéndose al siguiente carácter. No es un operador
		(a menos que 'tildeop' esté activado), por lo que no lo puede
		usar con un movimiento. Sí funciona en modo Visual y cambia
		todo lo que está seleccionado.

	I	Inicia el modo insertar y desplaza el cursor al primer
		carácter no vacío de la línea.

	A	Inicia el modo insertar y desplaza el cursor al último
		carácter de la línea.

==============================================================================

Capítulo siguiente: |usr_05.esx| Configuración

Copyright: véase |manual-copyright| vim:tw=78:ts=8:ft=help:norl:

==============================================================================

Traducción del capítulo: Álvaro Castro Castillo 

Proyecto: |vim-doc-es|