Ayuda de vim
versión disponible en : en it ru zh ja de nl fr
fecha de creación : 20220618- fecha de actualización : 20220618- fecha de generación : 20250203_123633
vim vim_25_presentation_by_bram_moolenaar_on_2016_november_2 mastering_the_vim_language
Acabas de entrar en el editor vim.
Puede utilizar las teclas de flecha (flechas y paginación) para desplazarse por este texto.
Lo más importante que hay que saber que hace vim (vi) único es el hecho de que vim (vi) es un editor multimodo.
La principal característica del editor vim (vi) es operar principalmente en el . mode commande vi Podemos decir que hay dos tipos de editores los que funcionan por defecto y principalmente en modo de edición (escribes en el teclado y se escribe el texto) y los que operan por defecto y principalmente en modo comando (escribes en el teclado y hace cosas).
En el primero están todos los editores excepto vi y vim (emacs, ultraedit, notepad, ...cómo empezar con vim) en el segundo hay vi y vim.
vim es la extensión histórica, el desarrollo del vi original del sistema unix que no ha evolucionado sino por vim.
Los modos de vim son:
En vim el modo de entrada es idéntico al de un editor como el bloc de notas.
A este modo se accede desde el . mode commande vi introduciendo los siguientes comandos:
5.Modo de línea de comandos vi
Estos son en realidad los comandos del editor "teletype", el precursor de vi, el editor ^ed"..
Cuando la entrada del ordenador pudo verse en una pantalla en lugar de en un teletipo, "ed" evolucionó a "vi". (que es una abreviatura de "visual").
Esto significa que "vi" contiene los genes de "ed".
ed por cierto dio lugar al comando "sed" que podría significar "stream ed" por ejemplo.
A este modo se accede introduciendo el carácter ".:" de . mode commande vi .
En vim, es posible recuperar los comandos ya introducidos navegando con las flechas arriba y abajo.
Incluso puede introducir el principio de un comando y luego utilizar las flechas para seleccionar sólo los comandos correspondientes al prefijo introducido.
pedir note_es acción
:b nn hacer que el búfer sea efectivo (archivo) identificado como "nn", para la lista de buffers ver comando :ls
:e archivo edita el archivo cuya ruta se introduce :g/expr/ global : selecciona las líneas que contienen la expresión regular "exp" y : :g/expr/l - enumera las líneas :g/expr/d - destruye las líneas :g/expr/s/// - aplica el comando de sustitución "s" a las líneas seleccionadas :ls enumera los buffers ya editados durante la sesión y muestra su número (ver pedido :b nn) :n next - emite el siguiente búfer si se han solicitado varios archivos :q dejar el editor ":q!" forzar la salida sin guardar :r rewind - vuelve al primer buffer solicitado al abrir vi o al ordenar ":n archivo" :s . substitution de chaine :w guarda el archivo actual ":w!" forzar la reescritura en caso de aviso :x eXit guarda el buffer actual y sale de vi :map_es crea un nuevo . mode commande vi mediante la combinación de comandos de este modo ! . shell vi permite la interacción con el entorno externo del programa vi, ofrece posibilidades ilimitadas / o :/ búsqueda de un . expression régulière (los objetivos se muestran en amarillo) el comando "n" permite navegar por la búsqueda
específico
vim :gf go file,abre el archivo cuya ruta está bajo el cursor :sp split ,divide el espacio de trabajo en dos para abrir un segundo buffer switch por ctrl-W w :tabnew se ha añadido una pestaña de espacio de trabajo
5.1.Modo de línea de comandos vi
El uso del carácter "!" en diferentes contextos le permite emitir comandos del sistema.
En la línea de comandos de vi, por ejemplo, escriba ":!dir " para abrir un shell y ejecutar el comando dir.
o en . mode commande vi , "!" seguido de una orden de movimiento (ne
si sólo ENTER) muestra un aviso en el que puede introducir un comando
sistema. El búfer seleccionado por el movimiento se envía a la entrada estándar del (stdin)
y la salida estándar del (stdout) se recupera y coloca el resultado en el buffer delimitado
por el traslado (el antiguo buffer se pierde).
Así, podemos lanzar una consulta SQL con el comando isql, transformar un texto mediante un script perl,
escribir programas en C para crear nuevos comandos de edición, ... Las posibilidades son infinitas.
la orden :map le permite crear un nuevo comando.
Por ejemplo, el comando :"map ² j.
" crea el comando "²" que localiza el último comando en la siguiente línea.
5.3.1.Ejemplo de mapa de comandos analogía vim mq
No puedo evitar hacer una divertida analogía con el <mécanique_quantique_es_nweb>(fr.wikipedia.org/wiki/M%C30X0P+09canique_quantique) y el operador hamiltoniano H
responsable de la evolución en el tiempo. Este operador puede verse como la combinación de los operadores de creación y destrucción de estados energéticos (o partículas en la teoría del campo cuántico).
Las energías suelen ser H = energía potencial energía cinética = a² b² y con la factorización compleja o i²=-1 H = (a ib)(a-ib) = C * D, siendo C y D los operadores de creación y destrucción.
Si consideramos una línea de texto en vim y el comando "x" para borrar un carácter (destrucción),
el comando de inserción del contenido del buffer por defecto "p" (creación)
y su combinación "xp" en un comando ":mapa
habremos creado el nuevo comando ": evolución.
Pero aquí el espacio se simboliza con una línea de subrayado y, por ejemplo, el carácter o como partícula :
aplicando el comando ".
También puedes crear el operador inverso mediante ":mapa
__________________________________o___________________________________________________________________
- ejecutar las macros en el "o" (la partícula cuántica :-mecánica cuántica nweb)
- para compilar las macros sin copiarlas en la línea de comandos puede utilizar la macro [xlm_es] colocándose en la línea de la macro.
mapa
mapa
- Una trayectoria puede ser definida por
mapa #H
- Una trayectoria cíclica (oscilación) mediante la macro recursiva:
mapa #S #H#S
- Advertencia: esta macro resursiva sólo puede interrumpirse con CTRL-C
observamos que al detener la macro puede salir del sistema con la partícula destruida, el "o" ha desaparecido (ha vuelto al vacío cuántico) o creado, el "o" está presente pero probablemente en otro lugar que en su posición original.
Esto nos dice que cuando se interrumpe una macro se hace sobre un comando "atómico" y no sobre una macro llamada por una macro.
Creo que este ejemplo muestra muy bien la dinámica de las macros.
En Vim hay otra forma de grabar una secuencia de comandos.
Se trata del comando "q", que permite grabar la secuencia de comandos que luego se escribirán en el teclado (introducir otro "q" detiene el registro) y el comando "@" que permite ejecutar estos comandos.
Los comandos se almacenan en búferes cuyo nombre es un carácter alfanumérico que debe especificarse junto con los comandos "q" y "@"..
Por ejemplo q03dwj almacena en el buffer 0 el comando 3dwjbbb que borra 3 palabras y pasa a la siguiente línea retrocediendo 3 palabras mientras se ejecuta esta secuencia.
el comando @0 repite la secuencia.
El comando ":s/chaine1/chaine2/" de sustitución de cadena1 por cadena2 ofrece posibilidades muy potentes: Si desea realizar cambios en el carácter "/" debe utilizar ^\\/" para especificar este carácter o utilizar otro carácter delimitador de cadena ":s.
chaine1.
canal2.
"
:s/toto/titi/ sustituir "toto" por "titi" en la línea
:s/toto/titi/g sustituir todos los "toto" por "titi" en la línea :1,$/toto/titi/g sustituir todos los "toto" por "titi" en todo el archivo :., 10/toto/titi/g sustituye todos los "toto" por "titi" a partir de la línea actual en diez líneas :g/tata/s/to/titi/g sustituir todos los "toto" por "titi" en todas las líneas que contengan la cadena "tata" :'a,'bg/tata/s/to/titi/g sustituye todos los "toto" por "titi" en todas las líneas que contienen la cadena "tata" entre las líneas almacenadas por los índices "a" y "b"
5.4.1.. expression régulière : expresión regular
Las expresiones regulares pueden utilizarse para especificar cadenas de búsqueda complejas.
El carácter "." se utiliza para especificar cualquier carácter.
El carácter "*" se utiliza para especificar cualquier secuencia de caracteres.
El carácter ""^ se utiliza para especificar el comienzo de la línea
El carácter "$" se utiliza para especificar el final de la línea
Un bloque "" se utiliza para especificar un posible conjunto de caracteres en la expresión regular.
Por ejemplo :
Por ejemplo "toto.*titi" se refiere a la porción de líneas que comienzan con toto y terminan con titi.
Por ejemplo ".*esto.*titi.*" denota las líneas que contienen tanto toto como titi en este orden.
Por ejemplo "^toto.*titi$" denota las líneas que comienzan con toto y terminan con titi.
|" (barra diagonal inversa-pipe)
así que "toto.|titi.*toto" permite por ejemplo en un comando g//s//
realizar el cambio sólo en las líneas correspondientes al criterio.
Estamos casi al nivel de un solicitante en modo texto.
Es posible dividir una línea o una parte de una línea en subcampos en una expresión regular
en el comando ":s".
Ejemplo: cadena de objetivos: " Hermosa marquesa tus hermosos ojos me hacen morir de amor" (B.)(v.)()()()" que se llama \\1 \\2 \\3 \\4 \\5
El comando ":(B.)(v.)()()()/\\5 \\4\\3/" con todos las permutaciones de subcampos generan formas menos bellas de prosa de primera frase: de amor tus hermosos ojos muriendo me hacen Belle marquise
Es este modo el que explica el poder de vim.
Cada tecla es un comando.
Hay grandes tipos de comandos:
Se pueden combinar comandos de diferentes tipos: cambiar*mover, por ejemplo :
Los comandos de movimiento, ver tipo "d" en la lista . vimaz puede combinarse con otras órdenes de modificación para formar una nueva orden de modificación.
Las teclas de flecha son, por supuesto, operativas y funcionan junto con las teclas SHIFT, CTRL.
Los comandos de modificación, ver tipo "m" en la lista . vimaz
Comandos de búsqueda, ver tipo "r" en la lista . vimaz
6.4.Comando de gestión del buffer vi
Los comandos del buffer, ver tipo "g" en la lista . vimaz
6.5.. vimaz :Vine de la A a la Z
El alfabeto de vim.
Cuando estás en . mode commande vi cada letra es una orden :
columna descripción
. lettre
la carta de pedido. Puede ser una sola letra, duplicada, seguida de otra letra, seguida del tipo de orden
Doble letra mencionada por ² que no es utilizada por vim Letra seguida de cualquier otra letra, este último caso se indica con la presencia de un "subrayado", por ejemplo, f_ Seguido del tipo de comando "d" para el desplazamiento por ejemplo, en este caso todos los comandos de desplazamiento son operativos . commande type
tipo de pedido : d Mover, m Editar, r Buscar, g Gestión del buffer . note vim
utilidad o poder del orden mencionado por una serie de más ... o menos . mnemo
origen del uso de la letra para el comando, medios mnemotécnicos, en inglés por supuesto
. lettre . type cmd . mnemo . note vim acción
. caractère non alphabétique vi
. m repite la última orden de cambio ~ m mayúsculas-minúsculas inversas. Para usar con "g" : g~d ^ d va al principio de la línea $ d va al final de la línea * r vim busca la palabra bajo el cursor : todos los objetivos son de color amarillo . Ver aquí g* '_ d "cote" seguido de una letra mueve el cursor a la línea almacenada por esa letra ver m_ "_yd g "doble dimensión" seguido de una letra, seguido de "y" yank seguido de un comando move almacena el texto a mover en un buffer nombrado por esa letra "ayfo g ejemplo: "afo almacena en el buffer "a" desde el carácter actual hasta el siguiente "o" en la línea actual "y g "y almacena la línea actual en el buffer b "by'b g "b'b almacena en el buffer b desde la línea actual hasta la línea almacenada por el índice b . caractère alphabétique vi
a m adjuntar añade texto después del carácter actual y cambia a . mode de saisie vi A md Añada añade texto al final de una línea cambia a . mode de saisie vi b d volver mueve el cursor hacia atrás una palabra, si . majuscule las palabras sólo están separadas por espacios en blanco B d Volver ídem "b" si . majuscule palabras definidas por lo que están separadas por espacios en blanco y en blanco c_ m cambiar - "c" seguido de un . commande de déplacement vi cambia el texto desde el carácter actual hasta el final del movimiento C m Cambiar - cambia el texto desde el carácter actual hasta el final de la línea dd m borrar "d" seguido de un . commande de déplacement vi borra el texto desde el carácter actual hasta el final del movimiento d² m borrar "d" duplicado borra la línea actual D m borrar borra el texto desde el carácter actual hasta el final de la línea e d Finalizar mueve el cursor al final de la palabra actual E d Finalizar mueve el cursor al final del ".. mot large " actual f_ r encontrar "f" seguido de un carácter mueve el cursor hacia abajo en la línea hasta el carácter si existe F_ r encontrar "F" igual que "f" pero se mueve al principio de la línea g² d Ir a mueve el cursor al principio del archivo G d Ir a mueve el cursor al final del archivo g* r global (vim) igual que "*" pero no se busca la palabra sino la cadena (si aparece en una palabra) g~d m global invierte las letras mayúsculas y minúsculas hasta el movimiento gf d ir al archivo edita el archivo cuya ruta está bajo el cursor i m insertar inserta los caracteres escritos posteriormente antes de que el carácter actual cambie a . mode de saisie vi I md Insertar insertar los caracteres escritos posteriormente al principio de la línea pasa a . mode de saisie vi J m únase a concatena la línea actual con la siguiente (fusión de dos líneas) se inserta un espacio en blanco entre las dos líneas teclado de desplazamiento : hjkl jk:arriba abajo , hl izquierda derecha (que se utilizará en la macro en lugar de las flechas) teclado original sin trackpad . touches de déplacement vi
h d flecha izquierda j d flecha hacia arriba k d flecha hacia abajo l d flecha derecha m_ d memorizar "m" seguido de una letra memoriza la siguiente línea con esta letra como índice, la recuperación se hace con el carácter "cote": ' o m Abrir abre o inserta una línea después de la línea actual O m Abrir abre o inserta una línea ANTES de la línea actual p m poner inserta el contenido del búfer actual r_ m sustituir reemplaza el carácter actual permanece en . mode commande vi R m Sustituir reemplaza el texto de la posición actual cambia a . mode de saisie vi s m sustituir reemplaza el texto de la posición actual cambia a . mode de saisie vi S m Sustituto - sustituye la línea actual por los caracteres introducidos posteriormente pasa a . mode de saisie vi t_ r a "t" seguido de un carácter mueve el cursor a la línea inmediatamente anterior al carácter si existe T_ r A "T" igual que "t" pero se mueve al principio de la línea (utilidad en combinación con un control de doble clasificación u m deshacer "undo" deshace la última modificación. undo (deshacer) deshace todos los cambios desde el último cambio de archivo editado . "redo" ctrl-r es la inversa de deshacer v g (vim) entra en el modo de selección de texto (visión lineal del texto) ctrl-v en modo de selección de bloques rectangulares (vista superficial del texto) w d Finalizar mueve el cursor al final de la palabra actual W d Finalizar mueve el cursor al final del ".. mot large " actual x m borra la letra yd g yank "y" seguido de un . commande de déplacement vi almacena en el búfer por defecto el texto afectado por el movimiento, utilizado junto con los búferes denominados "_ z² "z." o "zz^ centra la ventana en la línea actual z. ENTER
sitúa la línea actual en la parte superior de la ventana z- posiciona la línea actual en la parte inferior de la ventana . commandes utilisant la touche CTRL
CTRL-R "redo" inverse de "u" "undo" CTRL-A incrementa el número bajo el cursor CTRL-X disminuye el número bajo el cursor
Cómo desplazarse fácilmente por un expediente en el que se está trabajando.
una palabra definida por lo que está separada sólo por espacios en blanco y en blanco.
ejemplo: ^desde el lunes por la mañana" es una sola palabra ^abreviada"
En vi la alteración de una tecla por el turno (mayúsculas) altera el comando correspondiente a la minúscula.
La alteración puede ser de varios tipos pero el orden resultante se acerca al inicial.
Posible modificación: