aide vim es aide vim

Ayuda de vim

volver a la página de inicio

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 : 20240612_171233

1.Gvim

vim vim_25_presentation_by_bram_moolenaar_on_2016_november_2 mastering_the_vim_language

2.Cómo empezar con vi

  • vi es el editor estándar en cualquier distribución UNIX. vi no ha evolucionado desde su creación, lo que lo convierte en un editor rústico.
    Pero su diseño original está muy en el espíritu de unix"^.
  • la evolución de vi es el editor vim (vi-mejorado de Bram Moolenar)ver más abajo.
  • lanzar el editor con el nombre del archivo a procesar como argumento "vi toto.txt"
  • el editor lanza una ventana a pantalla completa donde aparecen las líneas de texto. Líneas vacías que empiezan por "~" son visibles si el número de líneas en el archivo es menor que el número de líneas en la ventana.
  • por defecto estamos en el modo comando del editor, es decir, todas las teclas del teclado son un comando.
  • por ejemplo, para moverse, utilice las teclas h,j,k,l . touches de déplacement vi 
  • para insertar texto utilice, por ejemplo, la tecla "i" para ^insertar", "a para añadir", "R" para reemplazar
  • cuando haya terminado de editar el texto pulse la tecla "esc" para salir del modo de edición.
  • en vi, es necesario salir del modo de edición para cambiar la línea: tienes que volver a cambiar al modo de mando para hacer un movimiento Afortunadamente, en vim se elimina esta restricción.
  • para todos los pedidos ver . vimaz 
  • también hay un . mode ligne de commande vi  que se obtiene escribiendo la tecla ":" y que permite lanzar comandos globales en una selección de líneas del archivo.
  • para concluir esta introducción, bajo una apariencia rústica, incluso arcaica, vi es un editor único en su concepción, un tipo de editor por derecho propio por sí mismo. Es este diseño inicial el que hace que vim sea reconocido como el editor más potente disponible.

    3.Cómo empezar con vim

    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:

  • la . mode commande vi : este es el modo por defecto de vim, en este modo las teclas del teclado no se utilizan para introducir caracteres sino que son todo comandos.
    Estos mandos son, sorprendentemente, muy ergonómicos. . vimaz  De hecho, se memorizan fácilmente si se busca la palabra inglesa que provocó la elección de la letra.
    Si comparamos la ergonomía de WORD, ligada a las teclas de función con la combinación de las teclas de control SHIFT,CTRL,ALT, podemos ver inmediatamente que será muy difícil convertirse en un usuario experimentado de WORD, mientras que convertirse en un usuario experimentado de vim puede requerir un esfuerzo de adaptación al principio, pero luego se vuelve bastante fácil, porque hay un orden subyacente en la nomenclatura de los comandos.
  • la . mode ligne de commande vi : si escribes el carácter ":" vamos a la línea de comandos de vim donde podemos escribir los comandos.
    Para salir de este modo puede hacerlo . ENTER  que valida la orden introducida, o por . ESCAPE  que sale del modo comando sin ejecutar nada.
  • la . mode de saisie vi : este es el modo de introducir texto.
    Este modo está presente en todos los editores.
    Para entrar en este modo, debe introducir un comando . commande de modification vi  que le permite escribir, por ejemplo, escribiendo la tecla "i", entra en el modo de inserción.
    la entrada de . ESCAPE  permite salir de este modo y volver al modo básico en . mode commande vi .

    4.Modo de entrada vi

    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:

  • "a" para añadir texto (añade después del carácter actual)
  • "i" para la inserción de texto (inserta justo antes del carácter actual)
  • "R" para sustituir el texto (reemplaza el texto del carácter actual)
  • "o" para abrir una nueva línea ( "O" para abrirla por encima de la actual)
  • "s" para sustituir (equivalente a "R").
    Puede introducir texto con las teclas habituales, desplazarse con las teclas de dirección, utilizar las teclas de paginación, cambiar el modo "insertar" "reemplazar", borrar un carácter con . Suppr  y utilizar los comandos del menú para guardar los cambios, salir y buscar, seleccionar con el ratón, utilizar copiar y pegar.
    Por lo tanto, podemos considerar que vim es un superconjunto del bloc de notas.
    Así que no hay razón para seguir usando el bloc de notas si tienes vim.
    Salir del modo de entrada con la tecla de escape . ESCAPE  .

    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.

    específico
    pedirnote_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
    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 carácter de exclamación "!" indica :

    5.2.Shell 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.

    5.3.Mapa cmd

    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.

    5.4.Sustitución de la cadena

    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/gsustituye 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 :

  • a-zA-Z_es designa un único carácter alfabético en mayúsculas o minúsculas.
  • 0-9_es significa cualquier número
  • 1-2_es0-9_es0-9_es0-9_es denota una forma de año de "1000" "2999"

    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.

    5.4.1.1.En los campos

    Es posible dividir una línea o una parte de una línea en subcampos en una expresión regular en el comando ":s".

  • Los subcampos se definen en la cadena de destino mediante paréntesis "barra invertida". :(.)(..)
  • Los subcampos pueden ser utilizados en la cadena de sustitución por \\1 \\2 \\3 etc...

    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

    6.Modo de comando vi

    Es este modo el que explica el poder de vim.
    Cada tecla es un comando.

    Hay grandes tipos de comandos:

  • . commande de déplacement vi 
  • . commande de modification vi 
  • . commande de recherche vi 

    Se pueden combinar comandos de diferentes tipos: cambiar*mover, por ejemplo :

    Los macrocomandos pueden crearse combinando los comandos básicos con el botón . map cmd  de . mode ligne de commande vi .
    Nota: Los comandos de este modo pueden considerarse como operadores que pueden combinarse.
    Este mecanismo de combinación de operadores (¿podemos hablar de álgebra de operadores?) es muy potente.
    Los operadores pueden asociarse a cardinalidades que indican cuántas veces debe repetirse el comando.
    Por ejemplo, "5dw" elimina las cinco palabras siguientes.
    Los macrocomandos se pueden combinar e incluso recursivamente (el cese de la recursión debe estar previsto: provocada por la imposibilidad de ejecutar una orden)
  • Un nuevo modo disponible sólo en vim es la selección de texto con "v".

    6.1.Control de movimiento vi

    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.

    6.2.Cambiar el comando vi

    Los comandos de modificación, ver tipo "m" en la lista . vimaz 

    6.3.Orden de investigación vi

    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 :

    columnadescripció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  

    7.Método vim

    Cómo desplazarse fácilmente por un expediente en el que se está trabajando.

  • Uso de puntos de anclaje ("m a", "m b", ...
    "m z").
    Deben definirse puntos de anclaje estándar (letra del alfabeto) que se utilizará sistemáticamente para un fin específico.
    Así que definimos una especie de nomenclatura personal de puntos de anclaje.
    El primer punto de anclaje debe ser el punto principal de edición, los otros son los otros puntos donde se recupera la información para su edición.
    Por ejemplo, una plantilla de código similar.
  • Uso de la cadena de búsqueda (entrada o comando *, alt-*) y los comandos n y N (siguiente).
  • con Utags :

    7.1.Palabra amplia

    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"

    7.2.Mayúsculas

    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:

  • cambio de dirección - acción realizada al final o al principio de la línea