vscode - ¿Qué puedo hacer en VIM que no pueda hacer en Visual Studio?
vscode surround with tag (13)
Escuché que toma 30 días como mínimo para sentirse cómodo con vi. Estoy en el día 2 jeje. En este momento, parece que simplemente estoy memorizando diferentes accesos directos para cosas que ya hice en Visual Studio (búsqueda incremental, palabra anterior / siguiente, etc.).
Hasta ahora, el aspecto más poderoso parece ser las teclas numéricas combinadas con comandos (5 * línea siguiente) y la idea de los modos normal / de inserción.
Hay algunas cosas que extraño de Visual Studio. Ctrl-Click''ing el mouse para copiar y pegar rápido es probablemente el más grande.
Para no desanimarme, ¿pueden ustedes explicarme algunas cosas en vi que hacen regularmente y que no se pueden hacer en Visual Studio? Me ayudará a concentrarme en qué aprender y me ayudará a desarrollar mejores hábitos.
Acabo de dejar un enlace a esta respuesta SO aquí.
Editar documentos a través de SSH. Vim es realmente bueno para eso.
Edición: parece que mucha gente ya ha dicho eso :)
Edite un archivo en una máquina Solaris que solo permita el acceso SSH.
Este artículo es lo que me hizo comenzar con Vim, y nunca miré atrás:
http://www.viemu.com/a-why-vi-vim.html
Tiene algunos grandes ejemplos sobre el poder de Vim.
Hay muchas diferencias.
- Bloque (y columna) para copiar, pegar, editar
- ¡El comando punto! (Después de la cinta de pato, la segunda herramienta más poderosa del planeta, en serio)
Le sugiero que vea algunos screencasts en http://vimcasts.org/ para tener una idea del poder de vim.
p.ej:
Las expresiones regulares de Visual Studio son un poco de Mickey Mouse. Vim tiene el lenguaje completo de expresiones regulares POSIX a su alcance.
Por lo que puedo decir (en Visual C # express 2010), ctrl-click simplemente selecciona la palabra en la que se hace clic. Para hacer lo mismo en VIM, puede combinar el comando yank con un comando de movimiento.
Así que presiona "y" para tirar (copiar) y luego "e" o "w" para copiar hasta el final de la palabra.
Siempre puede usar el emulador / complemento Vim para Visual Studio y obtener algo del poder de vim mezclado con las características de VS. Si ya está utilizando Visual Studio, asumo que está utilizando un lenguaje .NET, que sin VS sería mucho más doloroso de usar.
Tenga en cuenta que no uso Visual Studio y que conozco poco sobre las funciones disponibles en él. Los siguientes son ejemplos de lo que encuentro útil en Vim, no una lista de características faltantes en Visual Studio.
Macros
Es fácil crear macros para operaciones complejas (pero repetitivas). Para ilustrar con un ejemplo simple, digamos que comenzamos con:
Line1
Line2
Line3
Line4
Line5
Ahora queremos envolver cada línea en una print("");
declaración.
Coloque el cursor en la primera línea y escriba:
-
qx
para comenzar a grabar una macro al registrox
- Shift + I
print("
Esc para insertar texto al principio de la línea - Shift + A
");
Esc para agregar texto al final de la línea -
j
para bajar una linea -
q
para dejar de grabar la macro -
4@x
para ejecutar la macro en el registrox
4 veces
Ver :help complex-repeat
para obtener más información sobre las macros Vim.
Objetos de texto
Tenga en cuenta que esta es una de las mejoras que Vim tiene sobre el Vi tradicional. Si no funciona, probablemente estés ejecutando en modo de compatibilidad Vi; uso :set nocompatible
para habilitar la funcionalidad completa de Vim.
Los objetos de texto le permiten seleccionar fácilmente regiones de texto. Digamos que comenzamos con el siguiente texto y colocamos el cursor en un texto :
<b><i>some text</i></b>
Ahora queremos eliminar todo entre <i>
y </i>
. Esto se puede hacer simplemente escribiendo el comando dit
( d ''elete i '' nner t ''ag)! O si queremos incluir las etiquetas en nuestra selección, use dat
( d ''elete a t '' ag). Para eliminar todo lo que se encuentra dentro de las etiquetas <b>
, use d2it
( d ''elete two i '' nner t ''ags).
De manera similar, puede usar daw
(eliminar una palabra), dap
(eliminar un párrafo), di"
(eliminar dentro de comillas dobles), etc.; consulte :help text-objects
de :help text-objects
para obtener la lista completa.
Otro ejemplo útil de objetos de texto:
v2ap"+y
-
v
cambia el modo visual. Esto hace que sea más fácil ver lo que está seleccionando y le permite ajustar su selección con una serie de movimientos múltiples antes de ejecutar un comando. -
2ap
selecciona este párrafo y el siguiente. -
"+
selecciona el portapapeles del sistema como registro para la siguiente operación -
y
yanks la selección al registro dado.
En otras palabras, ese comando copiaría dos párrafos de su texto al portapapeles del sistema (por ejemplo, para pegarlos aquí en ).
Edición global
El comando global
se usa para aplicar un comando Ex a todas las líneas que coincidan con una expresión regular dada. Ejemplos:
-
:global/test/print
o:g/test/p
imprimiría todas las líneas que contienen la prueba de frase -
:global/test/delete
o:g/test/d
eliminaría dichas líneas -
:global/test/substitute/^/#/
o:g/test/s/^/#/
buscará líneas que contengan la frase test , y las comentará sustituyendo el ancex regexp anchor^
(principio de línea) por el símbolo#
.
También puede hacer algunas cosas interesantes pasando los movimientos /pattern
búsqueda o ?pattern
como rangos:
-
:?test?move .
busca hacia atrás una línea que contiene la prueba y la mueve a su posición actual en el archivo -
:/test/copy .
busca una línea que contenga la prueba y la copia a la posición actual en el archivo
Buena suerte y diviértete aprendiendo Vim!
Use la pantalla para mantener una sesión en ejecución en una máquina remota a la que se accede a través de ssh
VI significa nunca tener que quitarte los dedos del teclado.
teco es tu respuesta ¡Solo necesita un PDP-10 y un ASR-33 y está en camino!
Vim Essentials es un buen conjunto de diapositivas.
Personalmente, me acostumbré a vi hace mucho tiempo, cuando no teníamos el lujo de un mouse en las terminales Unix de los estudiantes. Desde entonces, usé vi / vim para todo lo que es seguro para escribir correos electrónicos.
Hasta el día de hoy, probablemente use solo 1/20 de los comandos, pero nunca sentí la necesidad de escribir código con otro editor de texto, y buscar un mouse en un IDE me parece muy torpe.
El uso de lenguajes de alto nivel y expresivos, que no requieren un IDE (principalmente python, sql, javascript) realmente ayuda. Supongo que no sería tan fácil con Java o C ++.
No tener que mover y apuntar con el mouse al codificar (seguro para usar el navegador) también ayuda a prevenir el síndrome del túnel carpiano.
Por cierto, supongo que Vim se integra mejor con Unix que con Windows ... y quien dijo que 30 minutos fue un poco optimista :)