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
|
---
category: tool
tool: vim
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["Ivan Alburquerque", "https://github.com/AlburIvan"]
lang: es-es
filename: LearnVim-es.txt
---
[Vim](http://www.vim.org)
(Vi IMproved) es un clón del popular editor vi para UNIX. Es un editor de texto
diseñado para ser veloz e incrementar la productividad, es ubicuo en la mayoría
de los sistemas basados en UNIX. Cuenta con numerosas combinaciones de teclas
para la navegación rápida a puntos especificos en un archivo y para rápida edición.
## Fundamentos de la navegación en Vim
```
vim <archivo> # Abre <archivo> en vim
:q # Salir de vim
:w # Guardar archivo actual
:wq # Guardar archivo y salir de vim
:q! # Salir de vim sin guardar el archivo
# ! *forza* :q a ejecutarse, por lo tanto sale de vim sin guardar
:x # Guardar el archivo y salir de vim, versión corta de :wq
u # Deshacer
CTRL+R # Rehacer
h # Desplazarse un carácter hacía la izquierda
j # Desplazarse una línea hacía abajo
k # Desplazarse una línea hacía arriba
l # Desplazarse un carácter hacía la derecha
# Desplazarse dentro de la línea
0 # Desplazarse hacia el inicio de la línea
$ # Desplazarse al final de la línea
^ # Desplazarse al primer carácter no blanco en la línea
# Buscando en el texto
/word # Resalta todas las ocurrencias de la palabra después del cursor
?word # Resalta todas las ocurrencias de la palabra antes del cursor
n # Desplaza el cursor a la siguiente ocurrencia de la palabra después de una búsqueda
N # Desplaza el cursor a la anterior ocurrencia de la palabra
:%s/foo/bar/g # Cambia 'foo' a 'bar' en cada línea en el archivo
:s/foo/bar/g # Cambia 'foo' a 'bar' en la línea actual
# Saltando caracteres
f<carácter> # Salta adelante y aterriza en <carácter>
t<carácter> # Salta adelante y aterriza antes de <carácter>
# Por ejemplo,
f< # Salta adelante y aterriza en <
t< # Salta adelante y aterriza justo antes de <
# Desplazarse por palabras
w # Desplazarse hacia adelante por una palabra
b # Desplazarse hacia atrás por una palabra
e # Desplazarse al final de la palabra actual
# Otros caracteres para desplazarse
gg # Ir al principio del archivo
G # Ir al final del archivo
:NUM # Ir a la línea número NUM (NUM es cualquier número)
H # Desplazarse al principio de la pantalla
M # Desplazarse a la mitad de la pantalla
L # Desplazarse al final de la pantalla
```
## Modos
Vim se basa en el concepto de **modos**.
Modo Comando - Vim se pone en marcha en éste modo, se usa para navegar y escribir comandos
Modo Inserción - Utilizado para realizar cambios en el archivo
Modo Visual - Utilizado para resaltar texto y operar en ellos
Modo Ex - Utilizado para ir hacia la parte inferior con ':' para introducir comandos
```
i # Pone a Vim en modo de inserción, antes de la posición del cursor
a # Pone a Vim en modo de inserción, después de la posición del cursor
v # Pone a Vim en modo de visual
: # Pone a Vim en modo Ex
<esc> # Sale de cualquier modo en que se encuentre, al modo comando
# Copiando y pegando texto
y # Copia lo que se encuentre seleccionado
yy # Copia la linea actual
d # Elimina lo que se encuentre seleccionado
dd # Elimina la linea actual
p # Pega el texto copiado después de la posición del cursor
P # Pega el texto copiado antes de la posición del cursor
x # Elimina el carácter debajo de la posición del cursor
```
## La "Gramática" de vim
Vim puede ser pensado como un conjunto de comandos en un
formato "verbo-sustantivo-modificador ', donde:
Verbo - La acción a realizar
Modificador - Como vas hacer la acción
Sustantivo - el objeto al que se le va a aplicar la acción
Algunos ejemplos importantes de "Verbos", "Modificadores" y "Sustantivos":
```
# 'Verbos'
d # Eliminar
c # Cambiar
y # Copiar
v # Seleccionar visualmente
# 'Modificadores'
i # Dentro
a # Alrededor
NUM # Número (NUM es cualquier número)
f # Busca algo y aterriza sobre el
t # Busca algo y se detiene antes de
/ # Encuentra una cadena desde el cursor en adelante
? # Encuentra una cadena antes del cursor
# 'Sustantivos'
w # Palabra
s # Oración
p # Párrafo
b # Bloque
# "Frases" de ejemplo o comandos
d2w # Elimina 2 palabras
cis # Cambia dentro de una oración
yip # Copia dentro de un párrafo (copia el párrafo donde estás)
ct< # Cambia para abrir un paréntesis
# Cambie el texto desde donde está a la siguiente paréntesis abierto
d$ # Eliminar hasta el final de la línea
```
## Algunos accesos directos y trucos
```
> # Sangrar la selección por un bloque
< # Desangrar la selección por un bloque
:earlier 15m # Devuelve el documento de nuevo a como era hace 15 minutos
:later 15m # Deshace el comando anterior
ddp # Intercambia la posición de las lineas consecutivas, dd después p
. # Repite la acción previa
```
## Macros
Las macros son, básicamente, las acciones que se pueden grabar.
Cuando comienzas a grabar un macro, registra **todas** las acciones y comandos
que se utilizan hasta que detenga la grabación. En la invocación de un macro,
se aplica exactamente la misma secuencia de acciones y comandos de nuevo
en la selección de texto.
```
qa # Comienza a grabar un macro llamada 'a'
q # Detiene la grabación
@a # Comienza la reproducción del macro
```
### Configurando ~/.vimrc
El archivo .vimrc puede ser usado para configurar Vim en el arranque.
Aquí está un ejemplo de un archivo ~ / .vimrc:
```vim
" Ejemplo ~/.vimrc
" 2015.10
" Se requiere para que vim sea 'mejor'
set nocompatible
" Determina la extensión del archivo por el nombre para permitir el auto-indentado inteligente, etc...
filetype indent plugin on
" Habilita el resaltado de sintaxis
syntax on
" Mejor terminación de línea de comandos
set wildmenu
" Usa búsqueda sensible a mayúsculas excepto cuando se utilizan letras mayúsculas
set ignorecase
set smartcase
" Al abrir una nueva línea, si la sangría especifica del archivo no está habilitada,
" mantén la misma sangría que la línea que estás actualmente
set autoindent
" Despliega el número de línea a la izquierda
set number
" Opciones de sangría, cambialas de acuerdo a tus preferencias personales
" Número de espacios visuales por tabulación
set tabstop=4
" Número de espacios de las tabulaciones al editar
set softtabstop=4
" Número de espacios sangrados cuando las operaciones de resangrado (>> y <<) son usadas
set shiftwidth=4
" Convertir tabulaciones en espacios
set expandtab
" Habilitar la tabulación inteligente y el espaciamiento para el sangrado y la alineación
set smarttab
```
### Referencias
[Vim | Home (EN)](http://www.vim.org/index.php)
`$ vimtutor` Command
[A vim Tutorial and Primer (EN)](https://danielmiessler.com/study/vim/)
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) (EN)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about)
[Arch Linux Wiki (EN)](https://wiki.archlinux.org/index.php/Vim)
|