vim
Movimiento
Buscar..
buscando
Saltando a los personajes
f {char} : pasa a la siguiente aparición de {char} a la derecha del cursor en la misma línea
F {char} : se mueve a la siguiente aparición de {char} a la izquierda del cursor en la misma línea
t {char} : muévete a la izquierda de la siguiente aparición de {char} a la derecha del cursor en la misma línea
T {char} : muévete a la derecha de la siguiente aparición de {char} a la izquierda del cursor en la misma línea
Salta hacia adelante / hacia atrás entre los 'resultados' a través de ; y,.
Además, puede buscar palabras completas a través de /<searchterm>
Enter .
Buscando cuerdas
* - pasar a la siguiente aparición de la palabra debajo del cursor
# - pasar a la aparición anterior de la palabra debajo del cursor
/ searchterm
Enter te lleva a la siguiente coincidencia (búsqueda hacia adelante). Si usas ? En lugar de / , la búsqueda va hacia atrás.
Salta entre los partidos vía n (siguiente) y N (anterior).
Para ver / editar sus búsquedas anteriores, escriba / y presione la tecla de flecha hacia arriba .
También son útiles estas configuraciones: (nota :se
es igual a :set
)
-
:se hls
HighLightSearch, resalta todas las coincidencias de búsqueda; use:noh
para desactivar temporalmente la búsqueda / marca resaltada (:set noh
o:set nohls
se desactiva). -
:se is
o:set incs
activa la Búsqueda incremental, el cursor salta a la siguiente coincidencia automáticamente. (:se nois
se apaga.) -
:se ic
IgnoreCase, desactiva la sensibilidad a mayúsculas. (:se noic
enciende de nuevo.) -
:se scs
SmartCaSe, se puede usar cuando se establece IgnoreCase; hace que la sensibilidad de la caja (in) sea inteligente ! por ejemplo,/the
buscaráthe
,The
,ThE
, etc. mientras que/The
only buscaráThe
.
Movimiento basico
Observaciones
- Cada movimiento puede usarse después de un comando de operador, por lo que el comando opera en el texto que comprende el alcance del movimiento.
- Al igual que los comandos del operador, los movimientos pueden incluir un conteo, por lo que puede moverse por 2w ords, por ejemplo.
Flechas
En Vim, las teclas de flecha / cursor normales ( ← ↓ ↑ → ) funcionan como se espera. Sin embargo, para los tecleadores táctiles, es más fácil usar las teclas alternativas de h j k l . En un teclado típico, están ubicados uno al lado del otro en la misma fila y son fácilmente accesibles con la mano derecha. La técnica mnemotécnica para recordar cuál es cuál de ellas va así:
- h / l : están ubicadas "más a la izquierda / derecha" entre las cuatro letras del teclado, por lo que son equivalentes a "ir a la izquierda / derecha" respectivamente;
- j - en minúscula "j" tiene su cola "abajo" debajo de las letras típicas, como una pequeña flecha, por lo que es equivalente a "bajar";
- k : a la inversa, la "k" minúscula tiene su "ascendente" arriba "encima de las letras típicas, como un pequeño puntero - por lo que es equivalente a" subir ".
Movimientos basicos
Todos los comandos a continuación deben hacerse en modo normal .
Mando | Descripción |
---|---|
h o izquierda | ir [contar] caracteres a la izquierda |
j o abajo | ir [contar] los caracteres a continuación |
k o arriba | ir [contar] los caracteres de arriba |
l o derecho | ir [contar] caracteres a la derecha |
gg | ir a la primera línea, o [contar] 'th línea, si se da |
H | Ir a la primera línea en la pantalla visible. |
METRO | ir a la línea media en la pantalla visible |
L | Ir a la última línea en la pantalla visible. |
sol | ir a la última línea, o [contar] 'th línea, si se da |
Casa o 0 | ir al primer carácter de la línea |
^ | ir al primer carácter no en blanco de la línea |
+ | bajar una línea hasta el primer carácter no en blanco |
- | subir una línea al primer carácter que no esté en blanco |
$ o fin | ir al final de la línea (si se da [cuenta] , vaya [contar - 1] líneas hacia abajo) |
| | vaya al carácter [count] 'th o vaya al principio de la línea si no se ha especificado count |
f {char} | vaya a [contar] 'la ocurrencia de {char} a la derecha inclusive |
F {char} | vaya a [contar] 'la ocurrencia de {char} a la izquierda inclusive |
t {char} | vaya a [contar] 'la ocurrencia de {char} a la derecha exclusiva |
T {char} | ir a [contar] 'la ocurrencia de {char} a la izquierda exclusiva |
; | repetir los últimos tiempos f , t , F o T [contar] |
, | repita la última f , t , F o T , en la dirección opuesta, [cuenta] veces |
w | ir al comienzo de la siguiente palabra |
segundo | ir al principio de la palabra anterior |
mi | ir al final de la siguiente palabra |
ge | ir al final de la palabra anterior |
% | ir a pares coincidentes, por ejemplo (), [], {} , /* */ o #if, #ifdef, #else, #elif, #endif |
{ } | párrafo anterior / siguiente |
[{ ]} | principio / final del bloque |
'{carbonizarse} | Ir a la marca (marcar con m {char} ) |
<CB> <CF> | página anterior / siguiente |
<CO> <CI> | Regresa o avanza en la "lista de salto" (requiere la función jumplist , ver :help jumps ) |
Nota: b , e , y w consideramos que una palabra son letras, números y guiones bajos de forma predeterminada (esto se puede configurar con la configuración de iskeyword
). Cada uno de estos también puede ser capitalizado, haciendo que se salte todo lo que no sea un espacio en blanco también.
Nota: Vim reconoce dos tipos de movimiento: movimiento del operador ( :help movement
) y saltos ( :help jumplist
). Los movimientos como los ejecutados con g
( gg
, G
, g,
) cuentan como saltos, al igual que los cambios. Los cambios obtienen su propio jumplist, que es navegable como se mencionó anteriormente a través de g,
g;
(ver :help changelist
). Los saltos no son tratados como comandos de movimiento por Vim
Cuando se mueve hacia arriba o hacia abajo a través de las líneas, el cursor retiene su columna como se esperaría. Si la nueva línea es demasiado corta, el cursor se mueve al final de la nueva línea. Si la columna está más allá del final de la línea, el cursor se muestra al final de la línea. El número de columna inicial aún se conserva hasta que se realiza una acción para modificarlo (como editar texto o mover la columna explícitamente).
Si la longitud de una línea excede el ancho de la pantalla, el texto se ajusta (bajo la configuración predeterminada, se puede configurar este comportamiento). Para moverse a través de líneas como se muestra en la pantalla, en lugar de líneas dentro del archivo, agregue g delante del comando usual. Por ejemplo, gj moverá el cursor a la posición que se muestra una línea debajo de su posición actual, incluso si está en la misma línea del archivo.
Buscando patrón
Vim admite el uso de expresiones regulares al buscar en un archivo.
El carácter para indicar que desea realizar una búsqueda es /
.
La búsqueda más simple que puedes realizar es la siguiente
/if
Esto buscará el archivo completo para todas las instancias de if
. Sin embargo, nuestra búsqueda if
es en realidad una expresión regular que coincidirá con cualquier ocurrencia de la palabra if
incluyendo los que están dentro de otras palabras.
Por ejemplo, nuestra búsqueda diría que todas las siguientes palabras coinciden con nuestra búsqueda: if
, spiffy
, endif
, etc.
Podemos hacer búsquedas más complicadas usando expresiones regulares más complicadas.
Si nuestra búsqueda fuera:
/\<if\>
entonces nuestra búsqueda solo devolvería coincidencias exactas a la palabra completa if
. El spiffy
y el endif
antedichos no serían devueltos por la búsqueda, solamente if
.
También podemos utilizar rangos. Dado un archivo:
hello1
hello2
hello3
hello4
Si queremos buscar aquellas líneas que contienen "hola" seguidas de un dígito entre 1 y 3, diríamos:
/hello[1-3]
Otro ejemplo:
/(?:\d*\.)?\d+
encontraría todos los números enteros y decimales en el archivo.
Navegando al principio de una palabra específica
Al editar texto, una tarea común es navegar a una palabra en particular en la pantalla. En estos ejemplos, exploramos cómo podemos navegar hasta la palabra updated
. En aras de la coherencia en los ejemplos, nuestro objetivo es aterrizar en la primera letra de la palabra.
Salto a mitad de pantalla
M $ B
Este enfoque es rápido, utilizando solo 3 pulsaciones. La desventaja, sin embargo, es que no es muy general, ya que no es común que nuestra línea objetivo quede justo en el centro de la pantalla. Aún así, es un movimiento útil cuando se realizan movimientos menos granulares.
Usando una cuenta
3j f u ; ;
A primera vista, esto puede parecer un paso atrás desde el primer enfoque debido a la cantidad de pulsaciones de teclas. Pero como usamos un conteo aquí en lugar de M , es más flexible. Podemos identificar rápidamente el recuento correcto para usar si relativenumber está habilitado. Para moverse a la palabra objetivo, usando f en combinación con ; puede ser sorprendentemente efectivo, y ciertamente mejor que presionar w repetidamente. Si sobrepasas tu objetivo con ; , Se puede ir hacia atrás con,.
Búsqueda explícita
/ arriba Entrar n n
Navegar a través de / puede ser muy potente. A menudo podemos saltar directamente a nuestra palabra objetivo al escribirla. Aquí solo escribimos los dos primeros caracteres con la esperanza de que coincidan de forma única con nuestra palabra. Desafortunadamente, hay varias coincidencias, pero podemos saltar rápidamente a la próxima coincidencia con n .
Búsqueda implícita
/ y Espacio ingrese w
En algunos casos, puede ser más eficiente saltar cerca de nuestro objetivo en lugar de ir directamente a él. Aquí observamos que hay una letra que aparece con poca frecuencia, y
, justo al lado del objetivo. Podemos añadir un espacio en nuestro término de búsqueda para disminuir las posibilidades de que hubiera ganado algún otro y
carácter a lo largo del camino. Esto también se puede usar con gran efecto con f {char} , como en el ejemplo Usando un conteo .
Usando marcas para moverse
Las marcas son como marcadores; Te ayudan a encontrar lugares en los que ya has estado.
TLDR
Configúrelos en modo normal con m{a-zA-Z}
, y salte a ellos en modo normal o visual con '{a-zA-Z}
(comilla simple) o `{a-zA-Z}
(marca inversa). Las letras minúsculas son para las marcas dentro de un búfer, y las letras mayúsculas y los dígitos son globales. Vea sus marcas establecidas actualmente con :marks
, y para más información vea :help mark
.
Establecer una marca
La ayuda incorporada de Vim dice:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
La marca mantendrá un registro de en qué línea y columna se colocó. No hay confirmación visual de que se haya establecido una marca, o si una marca tenía un valor anterior y se ha sobrescrito.
Saltar a una marca
La ayuda incorporada de Vim dice:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtick usa la posición de la columna, mientras que Single-quote no lo hace. La diferencia entre simplemente le permite ignorar la posición de la columna de su marca si así lo desea.
Puede saltar entre marcas no globales en modo visual además del modo normal, para permitir la selección de texto basado en marcas.
Marcas globales
Las marcas globales (letras mayúsculas) permiten saltar entre archivos. Lo que eso significa es que si, por ejemplo, la marca A
se establece en foo.txt
, luego desde bar.txt
(en cualquier lugar de mi sistema de archivos), si salto a la marca A
, mi búfer actual se reemplazará con foo.txt
. Vim le pedirá que guarde los cambios.
Saltar a una marca en otro archivo no se considera un movimiento, y las selecciones visuales (entre otras cosas) no funcionarán como saltar a marcas dentro de un búfer.
Para volver al archivo anterior ( bar.txt
en este caso), use :b[uffer] #
(es decir :b[uffer] #
:b#
o :buffer#
).
Nota:
Marcas especiales
Hay ciertas marcas que Vim establece automáticamente (que puede sobrescribir usted mismo, pero probablemente no será necesario).
Por ejemplo (parafraseado de la ayuda de Vim):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
Más, de la ayuda incorporada de Vim:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
Además, los caracteres (
, )
, {
y }
son marcas que saltan a la misma posición que sus comandos en modo normal, es decir, '}
hace lo mismo en modo normal que }
.
Saltar a la línea específica.
Para saltar a una línea específica con número de dos puntos. Para saltar a la primera línea del uso de un archivo.
:1
Saltar a la linea 23
:23