salir cómo con comandos archivo vim keyboard-shortcuts macvim

vim - cómo - salir del editor vi



¿Cuáles son los comandos/pulsaciones de teclas vim más utilizados? (10)

No me puedo imaginar que todos usen las 20 pulsaciones de tecla diferentes para navegar el texto, 10 o más teclas para comenzar a agregar texto y 18 formas de seleccionar visualmente un bloque interno. ¿O lo haces?

Hago.

En teoría, una vez que tenga eso y empiece a ser tan competente en VIM como lo estoy en Textmate, entonces puedo comenzar a aprender los miles de otros comandos VIM que me harán más eficiente.

Esa es la forma correcta de hacerlo. Comience con los comandos básicos y luego seleccione los que mejoren su productividad. Me gusta seguir este blog para obtener consejos sobre cómo mejorar mi productividad con vim.

Soy una programadora de Ruby que intenta cambiar de Textmate a MacVim, y tengo problemas para leer las enormes listas de cosas que puedes hacer en VIM y todas las pulsaciones de teclas para ellas. Estoy cansado de escuchar "Puedes usar ''I'' para insertar texto, o ''a'' para agregar texto después del personaje, o ''A'' para agregar texto al final de la línea, o ..." No me lo puedo imaginar todos usan las 20 pulsaciones de teclas diferentes para navegar el texto, 10 o más teclas para comenzar a agregar texto, y 18 formas de seleccionar visualmente un bloque interno. ¿O lo haces?

Mi hoja de trucos ideal serían las 30-40 pulsaciones de teclas o comandos más utilizados por todos para escribir código a diario, junto con los complementos esenciales que los rubyistas usan a diario y los 10 comandos más utilizados para ellos. En teoría, una vez que tenga eso y empiece a ser tan competente en VIM como lo estoy en Textmate, entonces puedo comenzar a aprender los miles de otros comandos VIM que me harán más eficiente.

O, ¿estoy aprendiendo VIM del modo equivocado?


¿Has reparado en el tutorial incorporado de Vim? Si no, baja a la línea de comandos y escribe vimtutor . Es una excelente forma de aprender los comandos iniciales.

Vim tiene una increíble cantidad de flexibilidad y potencia y, si usted es como la mayoría de los usuarios de vim, aprenderá muchos comandos nuevos y olvidará los antiguos, y luego volverá a aprenderlos. La ayuda incorporada es buena y digna de exploración periódica para aprender cosas nuevas.

Hay varias buenas preguntas frecuentes y hojas de prueba para vim en Internet. Recomiendo buscar vim + faq y vim + cheatsheet . Cheat-Sheets.org#vim es una buena fuente, al igual que la wiki de Vim Tips .



Aquí hay una hoja de consejos que escribí una vez, con los comandos que realmente uso regularmente:

Referencias

General

  • Casi todos los comandos pueden ir precedidos de un número para un conteo repetido. p.ej. 5dd elimina 5 líneas
  • <Esc> lo saca de cualquier modo y regresa al modo comando
  • Los comandos precedidos por : se ejecutan en la línea de comando en la parte inferior de la pantalla
  • : ayuda con cualquier comando

Navegación

  • Movimiento del cursor: ← hjk l →
  • Por palabras:
    • w siguiente palabra (por puntuación); W siguiente palabra (por espacios)
    • b palabra retrospectiva (por puntuación); B palabra atrás (por espacios)
    • e palabra final (por puntuación); E fin palabra (por espacios)
  • Nombre del autor:
    • 0 inicio de línea; ^ primer espacio no blanco
    • $ fin de línea
  • Por párrafo:
    • { línea en blanco anterior; } siguiente línea en blanco
  • Por archivo:
    • gg inicio del archivo; G final del archivo
    • 123G vaya a un número de línea específico
  • Por marcador:
    • mx set mark x ; ''x ir a marcar x
    • ''. ir a la posición de la última edición
    • '''' volver al último punto antes de saltar
  • Desplazamiento:
    • ^ F reenviar pantalla completa; ^ B pantalla completa hacia atrás
    • ^ D abajo de la mitad de la pantalla; ^ U arriba media pantalla
    • ^ E desplazarse una línea hacia arriba; ^ S desplazarse una línea hacia abajo
    • zz cursor línea central

Edición

  • deshaces; ^ R rehacer
  • . repite el último comando de edición

Insertar

Todos los comandos de inserción terminan con <Esc> para regresar al modo de comando.

  • inserto texto en el cursor; Inserté texto al inicio de la línea
  • un texto adjunto después del cursor; Un texto adjunto después del final de la línea
  • o abra una nueva línea a continuación; O abre una nueva línea arriba

Cambiando

Todos los comandos de cambio excepto r y R terminan con <Esc> para regresar al modo de comando.

  • r reemplazar un solo carácter; R reemplaza varios caracteres
  • s cambiar solo carácter
  • cw cambio de palabra; C cambiar al final de la línea; cc cambiar toda la línea
  • c <motion> cambia el texto en la dirección del movimiento
  • ci ( cambie entre paréntesis (vea la selección de objetos de texto para más ejemplos)

Eliminando

  • x eliminar char
  • dw borrar palabra; D eliminar hasta el final de la línea; dd borrar toda la línea
  • d <motion> elimina en la dirección del movimiento

Cortar y pegar

  • yy copia la línea en el buffer de pegar; dd corta la línea en el buffer de pasta
  • p pegar el búfer debajo de la línea del cursor; P pega el buffer por encima de la línea del cursor
  • xp intercambia dos caracteres ( x para eliminar un carácter, luego p para volver a colocarlo después de la posición del cursor)

Bloques

  • v flujo de bloque visual; V línea de bloque visual; ^ V columna de bloque visual
    • la mayoría de los comandos de movimiento extienden el bloque a la nueva posición del cursor
    • o mueve el cursor al otro extremo del bloque
  • Bloque d o x cortado en el buffer de pasta
  • y copia el bloque en el buffer de pegar
  • > bloqueo de sangría; < bloque de unindent
  • gv vuelve a seleccionar el último bloque visual

Global

  • :% s / foo / bar / g substitute todas las apariciones de "foo" por "bar"
    • % es un range que indica cada línea en el archivo
    • / g es un indicador que cambia todas las ocurrencias en una línea en lugar de solo la primera

buscando

  • / buscar hacia adelante; ? buscar hacia atrás
  • * buscar palabra por debajo del cursor; # búsqueda hacia atrás para la palabra debajo del cursor
  • n siguiente partido en la misma dirección; N siguiente partido en dirección opuesta
  • fx reenviar al siguiente carácter x ; Fx hacia atrás al personaje anterior x
  • ; mover de nuevo al mismo personaje en la misma dirección; , muévete de nuevo al mismo personaje en dirección opuesta

Archivos

  • : w escribir archivo en el disco
  • : w name escribir archivo en el disco como name
  • ZZ escribe el archivo en el disco y abandona
  • : n edita un nuevo archivo; :¡norte! edite un nuevo archivo sin guardar los cambios actuales
  • : q deja de editar un archivo; : q! dejar de editar sin guardar los cambios
  • : e edita el mismo archivo nuevamente (si se cambia fuera de vim)
  • : e. explorador de directorios

Windows

  • ^ Wn nueva ventana
  • ^ Wj a la siguiente ventana; ^ Wk hasta la ventana anterior
  • ^ W_ maximiza la ventana actual; ^ W = hacer que todas las ventanas tengan el mismo tamaño
  • ^ W + aumentar el tamaño de la ventana; ^ W- disminuir tamaño de ventana

Navegación de origen

  • % saltar a paréntesis / bracket / corchete coincidentes, o bloque de idioma si el módulo de idioma está cargado
  • gd vaya a la definición del símbolo local debajo del cursor; ^ O volver a la posición anterior
  • ^] saltar a la definición de símbolo global (requiere archivo de tags ); ^ T volver a la posición anterior (pila arbitraria de posiciones mantenidas)
  • ^ N (en modo inserción) terminación automática de palabras

Mostrar cambios locales

Vim tiene algunas características que hacen que sea fácil resaltar las líneas que se han cambiado desde una versión base en el control de fuente. He creado un pequeño script de vim que hace esto fácil: http://github.com/ghewgill/vim-scmdiff


La trampa de Greg Hewgill es muy buena. Comencé mi cambio de TextMate hace unos meses. Ahora soy tan productivo como lo era con TM y constantemente sorprendido por el poder de Vim.

Así es como cambié . Tal vez te pueda ser útil.

Grosso modo, no creo que sea una buena idea hacer un cambio radical. Vim es muy diferente y lo mejor es ir progresivamente.

Y para responder a su pregunta, sí, utilizo toda la información de iaIAoO cada día para ingresar al modo de inserción. Al principio parece extraño al principio, pero en realidad no piensas en ello después de un tiempo.

Algunos comandos increíblemente útiles para cualquier tarea relacionada con la programación:

  • r y R para reemplazar caracteres
  • <Ca> y <Cx> para aumentar y disminuir los números
  • cit para cambiar el contenido de una etiqueta HTML y sus variantes ( cat , dit , dat , ci( , etc.)
  • <Cx><Co> (mapeado a ,, ) para omnicompleción
  • selección de bloque visual con <Cv>
  • y así…

Una vez que está acostumbrado a la forma de Vim, es muy difícil no presionar o o x todo el tiempo cuando edita texto en otro editor o campo de texto.


Lo que la mayoría de la gente hace es comenzar con lo básico, como quizás i , yw , yy , y p . Puede continuar usando las teclas de flecha para desplazarse, seleccionar texto con el mouse, usar los menús, etc. Luego, cuando algo le está ralentizando, busca la forma más rápida de hacerlo, y gradualmente agrega más y más comandos. Es posible que aprenda un nuevo comando por día durante un tiempo, luego se acumulará a uno por semana. Te sentirás bastante productivo en un mes. Después de un año, tendrás un repertorio bastante sólido, y después de 2-3 años ni siquiera pensarás conscientemente en lo que escriben tus dedos, y se verá raro si tienes que deletrearlo para alguien. Aprendí vi en 1993 y todavía recojo 2 o 3 nuevos comandos al año.


Pon esto en tu .bashrc para abrir vim con el último archivo editado en la última línea editada

alias vil="vim +/"''/"0"


Vaya a Efficient Editing con vim y sepa lo que necesita para comenzar. No todo lo que hay en esa página es esencial para empezar, así que elige lo que quieras.

A partir de ahí, use vim para todo. "hjkl", "y" y "p" le ayudarán mucho, incluso si no es la forma más eficiente. Cuando te topas con una tarea para la que no conoces la llave mágica para hacerlo de manera eficiente (o no) y te das cuenta de que lo haces más de unas pocas veces, ve a buscarla. Poco a poco se convertirá en una segunda naturaleza.

Encontré vim desalentador hace muchas lunas (cuando no tenía la "m" al final), pero solo tardó una semana de uso constante para ser eficiente. Todavía lo encuentro el editor más rápido para hacer las cosas.


tuxfiles.org contiene una muy buena hoja de trucos. Creo que hay un par de puntos para aprender los comandos:

  • Lea la página de trucos regularmente. No te preocupes por usarlos todos, o recordar todas las claves, solo debes saber que el comando existe. Busca el comando y úsalo cuando te encuentres haciendo algo repetitivo.
  • Si te encuentras haciendo algo con regularidad (como eliminar una línea completa después de un personaje en particular d$ ), ve a una búsqueda rápida en Google para ver si puedes encontrar un comando para ello.
  • Escriba los comandos que cree que le resultarán útiles y conserve esa lista donde pueda verla mientras escribe su código. Discutiría en contra de imprimir algo y en su lugar lo animo a usar notas post-it para unos pocos comandos a la vez.
  • Si es posible, vea a otros programadores usar vim y pregúnteles qué comandos están usando, ya que los ve haciendo algo interesante.

Además de estos consejos, hay algunos conceptos básicos que debes entender.

  • vim usará el mismo caracter para representar la misma función. Por ejemplo, para eliminar una línea después de un personaje, use d$ . Para resaltar una línea después de un personaje en particular, use v$ . Así que observe que $ indica que estará haciendo algo al final de la línea desde donde se encuentra actualmente su cursor.
  • u está deshaciendo, y ctrl+r es rehacer.
  • poner un número delante de un comando lo ejecutará repetidamente. 3dd borrará la línea donde está el cursor y las dos líneas que siguen, de manera similar 3yy copiarán la línea en la que se encuentra el cursor y las dos líneas que siguen.
  • comprender cómo navegar a través de los buffers use :ls para listar los buffers, y :bn :bp para recorrerlos.
  • lea el tutorial que se encuentra en :help Esta es probablemente la mejor manera de ''aprender las cuerdas'', y el resto de los comandos los aprenderá a través del uso.