Las mayores diferencias entre Vim y VI


25

Hoy, decidí probar Vi en lugar de Vim, quería ver qué tan diferente es. No noté muchas diferencias en absoluto, lo más importante que noté fue cómo Vi no dijo -- INSERT --cuando entré en modo de inserción, y hubo algunas diferencias menores en la interfaz.

Esto me hizo preguntarme, ¿cuáles son las mayores diferencias entre Vi y Vim?


1
Obviamente no estás usando muchas características avanzadas de vim. selección de bloque, búsqueda de palabra debajo del cursor, número de incremento debajo del cursor, resaltado de sintaxis, etc.
Jim

2
RBT

Respuestas:


25

En realidad, hay un comando de ayuda en vim para informarle sobre las diferencias: :help vi_diff

Desde el sitio de Vim , los más grandes son:

deshacer ilimitado

Puede hacer xxxx y deshacer cada una de las cuatro eliminaciones. ¿Cuándo fue la última vez que escribiste "jjjj" y luego descubriste que la tecla de bloqueo de mayúsculas estaba activada? Accidentalmente uniste cinco líneas y Vi solo puede deshacer el último comando. En Vim puede deshacer los cuatro comandos "J" y recuperar su texto original.

portabilidad

Vi solo está disponible en Unix. Vim funciona en MS-Windows, Macintosh, Amiga, OS / 2, VMS, QNX y otros sistemas. Y también en todos los sistemas Unix.

resaltado de sintaxis

Vim se puede programar para resaltar partes del búfer en diferentes colores o estilos, según el tipo de archivo que se está editando. Hay cientos de conjuntos de reglas de resaltado de sintaxis incluidos en Vim.

GUI

Vim funciona bien en una consola, pero puede ejecutarse de forma nativa en muchas GUI, incluidas X Windows, Mac OS y Microsoft Windows. Utiliza widgets GUI nativos para desplazarse, dividir buffers y menús. También puede hablar con el portapapeles.


44
Algunos más diferencias se mencionan en el FAQ
Cristiano Brabandt

Según el archivo Léame , algunos de esos sistemas operativos ya no son compatibles.
Rolf

7

Vim tiene muchas características que Vi no tiene, incluso características que obviamente no son características "avanzadas".

En la práctica, esto significa que si está acostumbrado a Vi, es probable que encuentre muy pocas diferencias si comienza a usar Vim (o algún otro clon de Vi), pero si está acostumbrado a Vim y si sus "reflejos" incluyen características como resaltado del modo visual, cualquier acción de tecla que comience con "g" o "z", cualquier acción de texto con "i" o "a" [por ejemplo, "daw" para eliminar una palabra debajo del cursor], navegando con las teclas de flecha en modo de inserción , etc., encontrará que esos no funcionan en Vi.

También está la cuestión de qué estaba usando exactamente cuando dice que "probó Vi". En muchos sistemas, "vi" en realidad ejecuta Vim, en un modo en el que se aplican algunas de estas diferencias (modo de presentación predeterminado como observó, las teclas de flecha no funcionan en el modo de inserción) y otras no (el modo visual y las teclas g / z funcionan) ), y algunas características dependen de una opción de tiempo de compilación que a veces está deshabilitada en el "Vim pequeño" que se usa para esto (los objetos de texto, como "aw" una palabra, son uno de estos). No obtendrá estos si ejecuta el Vi real , o si "vi" es algún otro clon con menos o diferentes características que Vim, como nvi o VILE.

Y, en el lado oscuro, mientras que el "pequeño Vim en modo Vi" obviamente no tiene ninguna característica que no tenga un Vim completo, hay algunas características del Vi original genuino que carece de vim. Estos están documentados en :help vi-differences.


2
Apostaría fuertemente que OP en realidad tiene un "pequeño vim" vi.
Kevin

2

La mayoría de las comparaciones le dan más funcionalidad a vim que a vi, pero hay una excepción. Había modo "abierto" en vi, y vim realmente no tiene este modo.

El modo abierto es un modo de una sola línea que se usaba en el pasado con terminales que no tenían pantallas electrónicas, es decir, teletipos, impresoras de letras y similares, y también con pantallas donde el cursor permanece solo en la parte inferior.

Sé que hay documentación que dice que vim simula el modo abierto, pero mi experiencia es que no lo hace, porque he visto que se usa con vi con mis propios ojos, y nunca he visto a vim hacerlo. Parece que vim solo usa el opencomando simplemente para abrir y editar un archivo en modo visual. Creo que la documentación oficial de vim establece que no admite el modo abierto.


Tengo instalado ex-vi.sourceforge.net , que es un puerto del Vi original. ¿Cómo inicio este modo abierto? La página de manual lo menciona cuando se habla ^R, pero no brinda ninguna otra ayuda. :open some/filevuelve open: No such command from open/visual.
muru

@muru Qpara ingresar al modo ex, entonces open. zpara mostrar el contexto de la línea actual una vez que esté en modo abierto. Para retroceder, Qentonces vi.
Antony

0

Creo que es muy difícil hacer la comparación, debido a los cambios en vi que han sucedido con el tiempo.

Cuando estaba en la universidad, utilicé plain-vanilla vi en una terminal tonta (y también en un emulador de terminal en una Mac) que se conectaba a mainframes usando el Sistema V. Ya ni siquiera puedes encontrar eso.

Pero ni siquiera estoy seguro de que eso fuera cierto vi. Alrededor de ese tiempo, se hicieron muchos clones y puertos porque vi no era de código abierto en ese momento. Y cuando los vendedores hicieron clones, agregaron características que no estaban en vi. La historia es algo complicada. Puedes leerlo en Wikipedia y en otros lugares.

Entonces, si no estaba usando ciertos proveedores / hardware, no estaba usando vi, sino algo como vi.

Pero sí recuerdo que vi (o el clon que estaba usando) era muy minimalista en su interfaz (sin colores, sin etiquetas INSERT, sin múltiples deshacer, etc.) pero poderoso en lo que realmente podía lograr. Muy practico.


0

Las preguntas frecuentes de Vim tienen una lista bien formateada: https://vimhelp.org/vim_faq.txt.html#faq-1.4

Extracto de las preguntas frecuentes:

  • Deshacer multinivel
  • Pestañas, múltiples ventanas y buffers
  • Modo de inserción flexible (puede usar las teclas de flecha en el modo de inserción)
  • Macros
  • Modo visual (seleccionar visualmente secciones de texto)
  • Operadores de bloque
  • Sistema de ayuda en línea
  • Edición de línea de comandos e historial
  • Línea de comando completada (pestaña completada)
  • Desplazamiento horizontal (líneas largas)
  • Mejoras Unicode e internacionalización.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.