Vi vs vim, o, ¿hay alguna razón por la que quisiera usar vi?

84

Sé un poco sobre * NIX editores de texto (actualmente migrando de nanoa vim), y, después de mirar un poco en el SE de Unix y Linux, he notado que vise usa en lugar de 'vim' en una buena cantidad de preguntas. Sé que 'vim' significa 'Vi IMproved' y, con eso en mente, me pregunto por qué alguien preferiría usar vi en lugar de vim. ¿Vi tiene alguna ventaja significativa sobre vim?

Editar: creo que mi pregunta se está malinterpretando. Sé que vim es, en su mayor parte, significativamente más potente y completo que Vi. Lo que quiero saber es si hay posibles casos en los que vi tenga una ventaja sobre vim, como menos uso de memoria, prevalencia en sistemas * nix, etc.

fouric
fuente
25
Lo bueno vies que puede esperar que esté en todos los sistemas compatibles con POSIX.
jordanm
1
En realidad, la instalación estándar de Ubuntu incluye viy no vim... Ubuntu es una de las distribuciones más fáciles de usar por cierto ;-)
amyassin
10
@amyassin Esto es incorrecto, Ubuntu, como la mayoría de las distribuciones de Linux, incluye vim. vies solo un enlace simbólico que eventualmente apunta a vimla instalación predeterminada.
jlliagre
2
Mi consejo es: use Vim, pero aprenda a viusar las especificaciones POSIX paravi . De esa manera, usted tiene conocimiento portátil , así como conocer las extensiones de Vim.
Comodín el
1
@DDK Te perdiste "eventualmente" en mi declaración. "ls -l / etc / alternative / vi" -> "lrwxrwxrwx 1 root root 17 ene. 1 2016 / etc / Alternatives / vi -> /usr/bin/vim.tiny"
jlliagre

Respuestas:

61

vies (también) un editor estándar POSIX . Hay muchas implementaciones y vimes probable que sea la más popular al menos en Linux.

Si bien muchos sistemas operativos tradicionales que cumplen con Unix proporcionan viimplementaciones muy cercanas al estándar, vimha agregado muchas características adicionales que lo convierten en un arma de doble filo.

Por supuesto, estas extensiones generalmente están diseñadas para facilitar el proceso de edición y proporcionar características y funcionalidades útiles. Sin embargo, una vez que esté acostumbrado a algunos de ellos (no a los cosméticos, como la coloración sintáctica, sino a los que cambian el comportamiento del editor), puede olvidar fácilmente que son específicos; y usar una implementación diferente, incluidas las basadas en el código BSD original, puede ser muy frustrante. Lo opuesto también es cierto.

Esto es bastante similar al problema que ocurre con los scripts que utilizan bashismos no POSIX frente a implementaciones de shell más ortodoxas como dasho ksh.

jlliagre
fuente
29

Ningún vi no tiene ninguna ventaja significativa sobre vim, sino que es al revés. Vim tiene más ventajas que Vi. Te puede interesar: ¿Por qué, oh POR QUÉ, esos #? @! los tontos usan vi?

Editar también lea: ¿Vale la pena aprender VIM?

abhixec
fuente
44
Sí. No uso ningún IDE porque los editores que te obligan a usar no son Vim.
Keith el
1
@Keith Uso Xcode y Eclipse y todavía puedo editar solo con vi.
ott--
@Keith SlickEdit tiene una gran emulación de Vim, e IDEA se está acercando a ella. Además, Visual Studio tiene ViEmu.
demonkoryu
1
IntellIJ también tiene un buen complemento vim que anula el comportamiento del editor estándar.
JulienD
24

Después de pasar una gran parte de mi vida (sin incluir la infancia) editando cómodamente con Vim, pasé aproximadamente un mes solo usando vi. Al hacerlo, me di cuenta de que había dependido de Vim para todas mis necesidades de modificación de texto. Antes de mi viaje con vi, cada vez que tenía que sustituir algún texto o realizar una operación similar en un gran grupo de archivos, simplemente abría los archivos en Vim y ejecutaba un :bufdocomando, y cada vez que tenía que sangrar o formatear algunos archivos, Los abriría en Vim y usaría Vim =y sus gwcomandos. Yo dependía de Vim. Después de darme cuenta de que vi no tenía estos comandos, me vi obligado a realizar transformaciones de texto masivo con sedy aprendí mucho sobre otros programas como awkyindent. Aunque finalmente volví a usar Vim, el conocimiento que obtuve al usar un editor menos destacado fue sustancial y ha demostrado ser extremadamente útil. Además de aprender sobre herramientas fuera de un editor de texto, también me familiaricé mejor con vi. Cada vez que estoy trabajando en un nuevo sistema o un servidor que no tiene Vim, me siento mucho más cómodo usando vi que antes de mi excursión de un mes.

Además, el mes pasado instalé Linux en una tableta WM8650 barata y descubrí que hay una notable diferencia de rendimiento entre Vim y vi, por lo que tiendo a usar vi en la tableta.


fuente
3
Me parece que este es un problema común en TI: las herramientas que nos ayudan también pueden ocultar cosas que sería mejor aprender.
danno
En realidad, el manejo de la edición de archivos in situ en muchos archivos no puede hacerse de forma portátil con Awk o Sed bien . (El -iinterruptor en ambos es una extensión GNU). Pero puede usarlos de forma portátil con algo comofor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
comodín,
12

Me resultaría difícil vivir sin vim, pero no soporto vi . Sin embargo, aprender lo primero al menos te dejará con una idea de cómo lidiar con lo último cuando eso es todo lo que está disponible.

La interfaz vim por defecto es bastante parecida a vi. Si estoy trabajando en un sistema con vim, lo primero que hago es agregar esto a ~/.vimrc:

syntax enable
set nocp
set wildmenu

Hay un montón de otras cosas que prefiero, ahora, numeración, etc., pero no importa. "habilitar sintaxis" solo activa el resaltado de sintaxis básica (algo más robusto: también filetype plugin ones fundamental); "nocp" desactiva la compatibilidad de vi y es esto lo que comienza a distinguir vim de vuestro viejo vi (por ejemplo, permite showmodeque toda la experiencia sea algo más humana, ya que ahora tienes alguna pista sobre si estás al mando o si INSERTAR) modo). "wildmenu" simplemente le ofrece un menú de finalización horizontal al hacer algunas cosas, lo que también facilita la vida.

Las funciones de edición de texto de vim son insuperables, aparte de emacs, nunca he visto ni oído hablar de un software que se acerque. No son fáciles de aprender, pero una vez que los conoce, son mucho más rápidos de usar que los menús del mouse y mucho más dinámicos que las simples alternativas de macro clave en las interfaces basadas en el menú del mouse. Para la programación, a veces uso vim junto con un IDE como Eclipse, pero hago la mayor parte del trabajo en vim.

Si tomas ese camino, jajaja, mira los complementos de autocompletado y taglist. Y cuidado con el lado oscuro.

encerrada dorada
fuente
Yo siempre agrego set mouse=atambién.
ott--
En cuanto a su comentario de programación, se puede encontrar eclim interesante ...
ire_and_curses
@ire_and_curses: no lo he probado. Eclipse y vim supervisan los archivos de origen y permiten que se actualicen externamente, y cambiar de un escritorio a otro es cambiar de un escritorio a otro. Parece una buena idea aunque.
Ricitos de oro
Aunque no creo que esta respuesta deba ser la respuesta elegida (ya que está sesgada), es exactamente el tipo de perspectiva que es útil para comprender las diferencias. Gracias por tomar una posición.
geneorama
8

La ventaja es que vi generalmente está preinstalado en UNIX empresarial como AIX o Solaris. Además vim no es accesible en los medios de instalación.

dchirikov
fuente
1

Me he dado cuenta de que sólo se elija Vimás VIMcuando estoy copiando y pegando un documento de texto o un archivo de configuración que he utilizado catcomandos. Esto se debe a que cuando intento ctrl-cacceder ctrl-val VIMdocumento abierto, obliga a todas las líneas a tener un comentario enfrente de ellas. Entonces, cuando uso Vien ctrl-vo pasteen el Vidocumento abierto, pega exactamente lo que copié. Aparte de eso, uso VIMtodo el día.

¡Disfrutar!

Tony-Caffe
fuente
55
Prueba:set paste
Patrick
3
set pastetoggle = <F2> en .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave
1

Como las respuestas anteriores ya han mencionado, vi viene con casi todos los sistemas UNIX que existen.

Solo quería agregar un ejemplo. Arch Linux es una distribución particularmente popular y liviana que ni el instalador ni la distribución base viene con vim por defecto, sin embargo, ambos vienen con vi.

Esto no es una ventaja para vi per se , ya que simplemente puede instalar vim manualmente, y hay poco que necesite lograr en la instalación que requiera un editor de texto, y nada donde vim sea superior a vi para el propósito previsto. Pero entender la diferencia y que vi es más ubicuo y liviano que vim le da algunas ventajas de nicho.

Además, para ser exhaustivo, nadie ha mencionado explícitamente que vi es un precursor directo de vim. Vim fue diseñado específicamente para ser todo lo que era vi, y más.

Entonces, de una manera muy directa, vim es superior a vi, porque fue diseñado para serlo .

StatGenGeek
fuente
1

La única razón para usar vi sobre vim es cuando no tienes otra opción.

¡Hay muchas, muchas razones por las cuales vim significa "vi mejorado"!

Tomando prestado de una publicación relacionada, respondí:

  1. Múltiples ventanas: horizontal, vertical y pestañas.
  2. Destacamiento visual.
  3. Ayuda en línea a través del comando: ayuda.
  4. Grabe macros en un registro que luego puede ejecutar.
  5. Deshacer (y rehacer) varias veces, en lugar de alternar la locura de deshacer del viejo vi.
  6. Historial de línea de comando, historial de búsqueda.
  7. Un lenguaje completo incrustado junto con una gran cantidad de funciones disponibles, por ejemplo, getcwd ()
  8. Amplia coincidencia de patrones expandida.
  9. Completar palabras a través de ctrl-P y ctrl-N.
  10. Un navegador de archivos incorporado (un poco torpe, pero puede ser útil).
  11. La tecla ESC realmente cierra los comandos de los que estaba tratando de escapar, en lugar de ejecutarlos (locamente) como lo hace vi.
  12. Capacidad para ejecutar comandos en todos los buffers, args o ventanas a través de bufdo, argdo y windo.
Paul T
fuente
Probablemente podrías haber traído las "muchas, muchas" razones que mencionaste en la respuesta de unix.stackexchange.com/a/425597/85039 aquí. Eso haría que esta respuesta fuera un poco mejor; de lo contrario, se lee más como un comentario que como una respuesta real
Sergiy Kolodyazhnyy
Punto a favor. Respuesta actualizada, tomando prestado de una respuesta relacionada que hice ayer.
Paul T
1

Este es un extracto de Vim Koans :

Master Wq y el maestro Unix

Un viejo maestro de Unix llegó al Maestro Wq. “Estoy preocupado, Wq. Enseñas el camino de Vim. vi es santo pero Vim no lo es; su código se extiende, sus características aglomeran la memoria; Sus binarios son vastos, su comportamiento es inconsistente. Este no es el camino de Unix. Me temo que engañas a tus alumnos. ¿Qué se puede hacer?"

El maestro Wq asintió. "Tienes razón", dijo. “Vim está roto. Vamos a arreglarlo ¿Deberíamos empezar?"

El viejo maestro de Unix estuvo de acuerdo y abrió una concha. Él tecleó:

$ vi vim.c

Él comenzó a codificar. El Maestro Wq observó por un momento y luego le preguntó: “¿Qué implementación de vi estás usando? Nvi? ¿Empuje? ¿Elvis?

"No sé", dijo el maestro de Unix. "No importa."

El maestro Wq asintió. El maestro de Unix se quedó atónito por un momento y cerró su documento sin guardar.

modlin
fuente