Le maggiori differenze tra Vim e VI


25

Oggi, ho deciso di provare Vi invece di Vim, volevo vedere quanto è diverso. Non ho notato molte differenze, la cosa più importante che ho notato è stato il modo in cui Vi non ha detto -- INSERT --quando sono entrato in modalità di inserimento, e c'erano alcune differenze di interfaccia minori.

Questo mi ha fatto meravigliare, quali sono le maggiori differenze tra Vi e Vim?


1
Ovviamente non stai usando molte funzionalità avanzate di vim. selezione blocco, ricerca di parole sotto il cursore, incremento del numero sotto il cursore, evidenziazione della sintassi ecc.
Jim,

Risposte:


25

In realtà c'è un comando di aiuto in vim per parlarti delle differenze: :help vi_diff

Dal sito di Vim , i più grandi sono:

annullamento illimitato

Puoi fare xxxx e annullare ciascuna delle quattro eliminazioni. Quando è stata l'ultima volta che hai digitato "jjjj" e poi hai scoperto che il tasto BLOC MAIUSC era attivo? Hai unito accidentalmente cinque righe insieme e Vi può annullare solo l'ultimo comando. In Vim puoi annullare tutti e quattro i comandi "J" e recuperare il testo originale.

portabilità

Vi è disponibile solo su Unix. Vim funziona su MS-Windows, Macintosh, Amiga, OS / 2, VMS, QNX e altri sistemi. E anche su ogni sistema Unix.

evidenziazione della sintassi

Vim può essere programmato per evidenziare parti del buffer in diversi colori o stili, in base al tipo di file che si sta modificando. Esistono centinaia di sintassi che evidenziano i set di regole in bundle con Vim.

GUI

Vim funziona bene su una console, ma può funzionare in modo nativo in molte GUI, tra cui X Windows, Mac OS e Microsoft Windows. Utilizza i widget GUI nativi per lo scorrimento, la divisione dei buffer e i menu. Può anche parlare con gli appunti.


4
Alcune altre differenze sono menzionate nella FAQ
Christian Brabandt,

Secondo il readme , alcuni di questi sistemi operativi non sono più supportati.
Rolf,

7

Vim ha molte funzionalità che Vi non ha, anche funzionalità che non sono ovviamente "avanzate".

In pratica, ciò significa che se sei abituato a Vi, probabilmente incontrerai pochissime differenze se inizi a usare Vim (o qualche altro clone Vi), ma se sei abituato a Vim e se i tuoi "riflessi" includono funzionalità come evidenziazione della modalità visiva, qualsiasi azione chiave che inizia con "g" o "z", qualsiasi azione di testo con "i" o "a" [es. "daw" per eliminare una parola sotto il cursore], navigando con i tasti freccia in modalità inserimento , ecc., scoprirai che quelli non funzionano in Vi.

C'è anche la domanda su cosa stavi usando esattamente quando hai detto di aver "provato Vi". Su molti sistemi, "vi" esegue effettivamente Vim, in una modalità in cui si applicano alcune di queste differenze (modalità di visualizzazione predefinita come hai osservato, i tasti freccia non funzionano in modalità inserimento) e altri no (modalità visiva e tasti g / z funzionano ) e alcune funzionalità dipendono da un'opzione di compilazione che a volte è disabilitata nel "tiny Vim" che viene utilizzato per questo (gli oggetti di testo, come "aw" una parola, sono uno di questi). Non otterrai questi se esegui il vero Vi o se "vi" è un altro clone con meno o diverse funzionalità rispetto a Vim, come nvi o VILE.

E, dal lato oscuro, mentre "la minuscola Vim in modalità Vi" ovviamente non ha alcuna funzionalità che non ha una Vim completa, ci sono alcune caratteristiche della Vi originale originale che vim manca. Questi sono documentati in :help vi-differences.


2
Scommetto fortemente che OP ha in realtà un "piccolo vim" vi.
Kevin,

2

La maggior parte dei confronti fornisce più funzionalità a vim che a vi, ma c'è un'eccezione. C'era la modalità "aperta" in vi, e vim non ha davvero questa modalità.

La modalità aperta è una modalità a riga singola che è stata utilizzata in passato con terminali che non avevano display elettronici, ad esempio teletipi, stampanti per lettere e simili, e anche con display in cui il cursore rimane solo nella parte inferiore.

So che c'è della documentazione là fuori che dice che Vim simula la modalità aperta, ma la mia esperienza è che non lo fa, perché l'ho visto usato con vi con i miei occhi e non ho mai visto Vim farlo. Sembra che vim usi semplicemente il opencomando semplicemente per aprire e modificare un file in modalità visiva. Credo che la documentazione ufficiale di Vim affermi che non supporta la modalità aperta.


Ho installato ex-vi.sourceforge.net , che è una porta del Vi originale. Come posso avviare questa modalità aperta? La manpage ne parla quando parla ^R, ma non dà altro aiuto. :open some/fileritorna open: No such command from open/visual.
muru,

@muru Qper entrare in modalità ex, quindi open. zper mostrare il contesto della riga corrente quando si è in modalità aperta. Di ritirarsi, Qquindi vi.
Antony,

0

Penso che sia molto difficile fare il confronto, a causa dei cambiamenti in vi che sono avvenuti nel tempo.

Quando ero al college, ho usato vi-vanilla su un terminale stupido (e anche su un emulatore di terminale su un Mac) che si collegava ai mainframe usando System V. Non riesci più a trovarlo.

Ma non sono nemmeno sicuro che fosse vero vi. A quel tempo c'erano molti cloni e porte realizzati perché al momento non era open-source. E quando i venditori hanno creato cloni, hanno aggiunto funzionalità che non erano presenti in vi. La storia è piuttosto contorta. Puoi leggerlo su Wikipedia e altrove.

Quindi se non stavi usando determinati fornitori / hardware, non stavi usando vi, ma qualcosa come vi.

Ma ricordo che vi (o il clone che stavo usando) essendo molto minimalista nella sua interfaccia (nessun colore, nessuna etichetta INSERT, nessuna cancellazione multipla, ecc.) Ma potente in ciò che poteva effettivamente realizzare. Molto pratico.


0

Le FAQ di Vim hanno un elenco ben formattato: https://vimhelp.org/vim_faq.txt.html#faq-1.4

Estratto dalle FAQ:

  • Annulla multi-livello
  • Schede, finestre multiple e buffer
  • Modalità di inserimento flessibile (può utilizzare i tasti freccia in Modalità inserimento)
  • Macro
  • Modalità visiva (seleziona visivamente sezioni di testo)
  • Operatori di blocco
  • Sistema di guida in linea
  • Modifica e cronologia della riga di comando
  • Completamento riga di comando (completamento scheda)
  • Scorrimento orizzontale (linee lunghe)
  • Miglioramenti Unicode e internazionalizzazione.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.