1. Introducción
Como el editor clásico y más utilizado en sistemas similares a Unix, vim/vi (vim se desarrolló a partir de vi) proporciona a los programadores funciones de edición enriquecidas y puede mejorar en gran medida la eficiencia de la edición después de un uso experto. Vim toma mucho tiempo para aprender a los desarrolladores que solo lo están usando. Aunque el vim oficial también ofrece una variedad de imágenes para facilitar la memoria, la operación de vim aún requiere un uso continuo y competencia para dominar esta herramienta. Realmente aprecio su eficiencia y conveniencia.
Este artículo resume brevemente las operaciones básicas comúnmente utilizadas en vim para ver cuando sea necesario. Algunos mapas de memoria oficiales son los siguientes:
2. modo de edición vi/vim
La edición de vi/vim generalmente se divide en tres modos: modo de comando, modo de inserción y modo de última línea. Los caracteres en diferentes modos tienen diferentes significados:
1. Modo de comando:
Después de iniciar vi/vim, primero ingresa al modo de comando. Los caracteres ingresados en este modo se reconocerán como comandos y se combinarán con los comandos para su ejecución. Los comandos utilizados en este modo se pueden ejecutar directamente sin la tecla Intro, por ejemplo , ingrese i para ingresar directamente al modo de edición.
2. Modo de entrada:
Ingrese al modo de entrada desde el modo de comando a través de i u otros comandos. En este modo, el texto se puede editar y modificar. La tecla ESC puede salir del modo de entrada y volver al modo de comando.
3. Modo de comando de línea inferior:
Use: u otros comandos para ingresar al modo de comando de línea inferior desde el modo de comando. En este modo, puede ingresar comandos de uno o varios caracteres, presionar la tecla Intro para ejecutar y volver automáticamente al modo de comando después de la ejecución; en el modo de comando de línea inferior, puede presionar la tecla ESC en cualquier momento Salir para volver al modo de comando.
3. Descripción del comando vi/vim
1. Modo de comando:
- Movimiento de cursores:
botón | Función |
---|---|
h o ← | Mover el cursor un carácter a la izquierda |
j o ↓ | Mover el cursor un carácter hacia abajo |
k o ↑ | Mover el cursor un carácter hacia arriba |
l o → | Mover el cursor un carácter a la derecha |
[num] + hjkl (o ←↓ ↑→) | El cursor mueve num caracteres en una determinada dirección (por ejemplo, 30j o 30↓ puede significar moverse 30 líneas hacia abajo) |
[ctrl] + f | Mover la pantalla una página hacia abajo |
[ctrl] + segundo | Mover la pantalla una página hacia arriba |
[ctrl] + re | Mover la pantalla media página hacia abajo |
[ctrl] + tu | Mover la pantalla media página hacia arriba |
+ | Mueva el cursor a la siguiente línea que no sea un carácter de espacio |
- | Mueva el cursor a la línea sobre un carácter que no sea un espacio |
0 o [Inicio] | Mover al primer carácter de la línea donde se encuentra el cursor |
$ o [Fin] | Mover al último carácter de la línea donde se encuentra el cursor |
g | El cursor se mueve a la primera línea del documento, lo que equivale a 1G |
H | El cursor se mueve al primer carácter en la línea superior de la pantalla |
METRO | El cursor se mueve al primer carácter de la línea en el centro de la pantalla |
L | El cursor se desplaza al primer carácter de la línea inferior de la pantalla donde se encuentra |
GRAMO | Mover el cursor a la última línea del documento |
[núm] + G | Mueva el cursor a la línea numérica del documento (por ejemplo, 20G moverá la línea 20 del documento) |
[número] + [Entrar] | Mueva el cursor hacia abajo en las líneas numéricas (por ejemplo, ingrese 20 y presione la tecla Enter [Enter], el cursor se mueve hacia abajo 20 líneas) |
[número] + [espacio] | Mueva el cursor a la derecha en números de caracteres (por ejemplo, presione la barra espaciadora [espacio] después de ingresar 20, y el cursor retrocederá 20 caracteres) |
- copiar y pegar:
botón | Función |
---|---|
X | cortar un carácter hacia atrás |
X | cortar un carácter hacia adelante |
[número] + x | Eliminar n caracteres hacia atrás (por ejemplo, 20x eliminará 20 caracteres hacia atrás) |
pag | Pegue los datos copiados en la línea debajo del cursor |
PAG | Pegue los datos copiados en la línea sobre el cursor |
j | Combine la fila donde se encuentra el cursor con los datos de la siguiente fila en una sola fila |
[núm] + cc/cj | Elimine num líneas hacia abajo (por ejemplo, 20cc o 20cj eliminará 20 líneas hacia abajo, nota: ingrese el modo de entrada después de la eliminación) |
dd | Cortar la línea donde está el cursor |
[numero] + dd | Reducir num líneas (por ejemplo, 20dd reducirá 20 líneas) |
DG | Eliminar todo desde la línea donde está el cursor hasta la última línea |
d1G | Eliminar todo, desde la línea donde está el cursor hasta la primera línea |
d$ | Eliminar todo, desde la línea donde está el cursor hasta el último carácter |
d0 | Eliminar todo, desde la línea donde está el cursor hasta el primer carácter |
yy | Copie la línea donde está el cursor. |
[num] + aa | Copie num filas hacia abajo (por ejemplo, 20yy copiará 20 filas hacia abajo) |
yG | Copie todo, desde la línea donde está el cursor hasta la última línea. |
y1G | Copie todo, desde la línea donde está el cursor hasta la primera línea. |
$ | Copie todo, desde la línea donde está el cursor hasta el último carácter. |
y0 | Copie todo, desde la línea donde está el cursor hasta el primer carácter. |
. | repetir la operación anterior |
tu | repetir la operación anterior |
[ctrl] + r | rehacer última acción |
ZZ | Guardar y forzar la salida del documento |
ZQ | No guarde y fuerce la salida del documento |
- Buscar y reemplazar:
botón | Función |
---|---|
norte | Repetir última operación de búsqueda |
norte | Invertir la última operación de búsqueda |
/palabra | 向光标之下寻找一个名称为 word 的字符串(例/cascatrix会向下寻找名为cascatrix字符串) |
?word | 向光标之上寻找一个名称为 word 的字符串(例/cascatrix会向上寻找名为cascatrix字符串) |
:n1,n2s/word1/word2/g | 在第 n1 与 n2 行之间寻找 word1 这个字符串并将该字符串取代为 word2(例:1,$s/carson/cascatrix/g 或 :%s/carson/cascatrix/g会从第一行到最后一行寻找名为carson的字符串并将该字符串取代为cascatrix) |
:n1,n2s/word1/word2/gc | 在第 n1 与 n2 行之间寻找 word1 这个字符串并将该字符串取代为 word2,取代前显示是否需要取代的确认提示(例:1,$s/carson/cascatrix/gc 或 :%s/carson/cascatrix/gc会从第一行到最后一行寻找名为carson的字符串并将该字符串取代为cascatrix,在取代前进行提示:是否需要取代) |
2. 输入模式:
命令模式与输入模式之间切换:
按键 | 功能 |
---|---|
i | 从当前光标所在位置开始输入 |
I | 从当前光标所在行的第一个非空格符号处开始输入 |
a | 从当前光标所在位置的下一个字符处开始输入 |
A | 从当前光标所在行的最后一个字符处开始输入 |
o | 从当前光标所在位置的下一行输入新的一行 |
O | 从当前光标所在位置的上一行输入新的一行 |
r | 取代当前光标所在位置的那一个字符一次 |
R | 取代当前光标所在位置的那一个字符,直到按下ESC退出替换 |
[ESC] | 退出输入模式,返回命令模式 |
输入模式编辑操作:
按键 | 功能 |
---|---|
[END] | 移动光标到行尾 |
[Home] | 移动光标到行首 |
[Enter] | 换行 |
[Delete] | 删除光标后一个字符 |
[Backspace] | 删除光标前一个字符 |
[Page Up] | 向上翻页 |
[Page Down] | 向下翻页 |
[Insert] | 切换光标为输入/替换模式,光标将变成竖线/下划线 |
方向键 | 移动光标 |
字符按键 | 输入字符 |
3. 底线命令模式:
按键 | 功能 |
---|---|
:w | 保存文档 |
:q | 退出文档 |
:w! | Forzar guardar el documento |
:q! | Forzar salida del documento |
:wq | Guardar y salir del documento |
:! dominio | Salga temporalmente de la interfaz vi y vaya al modo de línea de comando para ejecutar el comando y mostrar los resultados |
:r [nombre de archivo] | Lea los datos de otro documento en los datos editados y agregue el contenido del nombre de archivo del documento después de la fila donde se encuentra el cursor |
:w [nombre de archivo] | Guarde los datos editados como otro archivo llamado nombre de archivo |
:n1,n2 w [nombre de archivo] | Almacene el contenido de n1 a n2 como nombre de archivo de este documento |
:establecer no | Mostrar el número de línea Después de configurar, el número de línea de la línea se mostrará en el prefijo de cada línea |
:establecer nueve | Cancelar número de línea, cancelar el número de línea mostrado |