Vi vs vim, o, c'è qualche motivo per cui vorrei mai usare vi?


84

Conosco un po 'gli editor di testo * NIX (attualmente migrano da nanoa vim) e, dopo aver guardato un po' su Unix e Linux SE, ho notato che viviene usato al posto di 'vim' in un discreto numero di domande. So che 'vim' sta per 'Vi IMproved' e, con questo in mente, mi chiedo perché qualcuno preferisca usare vi invece di vim. Vi ha qualche vantaggio significativo rispetto a Vim?

Modifica: penso che la mia domanda sia stata male interpretata. So che vim è, per la maggior parte, significativamente più potente e completo di funzionalità rispetto a vi. Quello che voglio sapere è se ci sono possibili casi in cui vi ha un vantaggio rispetto a vim, come meno utilizzo della memoria, prevalenza su sistemi * nix, ecc.


25
La cosa bella viè che puoi aspettarti che si trovi su ogni sistema compatibile con POSIX.
Giordania,

1
In realtà, l'installazione standard di Ubuntu include vie non vim.. Ubuntu è una delle distro più
facili da

10
@amyassin Questo non è corretto, Ubuntu, come la maggior parte delle distribuzioni Linux, include vim. viè solo un collegamento simbolico che alla fine punta vimall'installazione predefinita.
jlliagre,

2
Il mio consiglio è: usa Vim, ma impara a viutilizzare le specifiche POSIX pervi . In questo modo hai una conoscenza portatile e conosci le estensioni di Vim.
Wildcard il

1
@DDK Ti sei perso "eventualmente" nella mia dichiarazione. "ls -l / etc / alternatives / vi" -> "lrwxrwxrwx 1 root root 17 genv. 1 2016 / etc / alternatives / vi -> /usr/bin/vim.tiny"
jlliagre

Risposte:


61

viè (anche) un editor standard POSIX . Ci sono molte implementazioni ed vimè probabilmente il più popolare almeno su Linux.

Mentre molti sistemi operativi tradizionali conformi a Unix forniscono viimplementazioni molto simili allo standard, vimha aggiunto molte funzionalità extra che lo rendono un'arma a doppio taglio.

Naturalmente, queste estensioni sono generalmente progettate per facilitare il processo di modifica e fornire utili funzionalità e funzionalità. Tuttavia, una volta che sei abituato ad alcuni di essi (non quelli cosmetici come la colorazione della sintassi ma quelli che cambiano il comportamento dell'editor) puoi facilmente dimenticare che sono specifici; e l'utilizzo di un'implementazione diversa, comprese quelle basate sul codice BSD originale, può essere molto frustrante. È anche vero il contrario.

Questo è abbastanza simile al problema che si verifica con gli script che usano bashismi non POSIX di fronte a implementazioni di shell più ortodosse come dasho ksh.


29

No vi non ha alcun vantaggio significativo rispetto a vim piuttosto che viceversa. Vim ha più vantaggi di Vi. Potresti essere interessato a: Perché, oh PERCHÉ, fare quei #? @! nuthead usa vi?

Modifica leggi anche: Imparare VIM vale la pena?


4
Sì. Non uso alcun IDE perché gli editor che ti costringono a usare non sono Vim.
Keith,

1
@Keith Uso sia Xcode che Eclipse e sono ancora in grado di fare editing solo con vi.
ott--

@Keith SlickEdit ha un'ottima emulazione di Vim e IDEA si sta avvicinando. Inoltre, Visual Studio ha ViEmu.
demonkoryu,

1
IntellIJ ha anche un bel plugin vim che sovrascrive il comportamento dell'editor standard.
Julien D,

24

Dopo aver trascorso gran parte della mia vita (esclusa l'infanzia) modificando comodamente con Vim, ho trascorso circa un mese usando solo vi. In tal modo, mi sono reso conto che ero stato dipendente da Vim per tutte le mie esigenze di modifica del testo. Prima del mio viaggio con vi, ogni volta che dovevo sostituire del testo o eseguire un'operazione simile in un grande gruppo di file, avrei semplicemente aperto i file in Vim ed eseguito un :bufdocomando, e ogni volta che dovevo rientrare o formattare alcuni file, Vorrei aprirli in Vim e utilizzare Vim =e gwcomandi. Ero dipendente da Vim. Dopo aver capito che vi non aveva questi comandi, sono stato costretto a eseguire trasformazioni di testo in blocco con sede ho imparato molto su altri programmi come awkeindent. Anche se alla fine sono tornato a utilizzare Vim, le conoscenze che ho acquisito utilizzando un editor meno descritto erano sostanziali e si sono rivelate estremamente utili. Oltre a conoscere strumenti al di fuori di un editor di testo, ho anche imparato a conoscere meglio vi. Ogni volta che sto lavorando su un nuovo sistema o un server che non ha Vim, mi sento molto più a mio agio con vi di quanto non fossi prima della mia escursione di un mese.

Inoltre, il mese scorso ho installato Linux su un tablet WM8650 economico e ho riscontrato una notevole differenza di prestazioni tra Vim e vi, quindi tendo a usare vi sul tablet.


3
Trovo che questo sia un problema comune nell'IT: gli strumenti che ci aiutano possono anche oscurare cose che faremmo meglio a imparare.
danno

In realtà, la manipolazione editing di file sul posto su molti file non può essere fatto con portabile Awk o Sed neanche . (L' -iinterruttore su entrambi è un'estensione GNU.) Ma puoi usarli in modo portatile con qualcosa del generefor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard,

12

Avrei difficoltà a vivere senza VIM ma non sopporto vi . Tuttavia, apprendere il primo ti lascerà almeno un'idea di come gestire il successivo quando questo è tutto ciò che è disponibile.

L'interfaccia di vim di default è in realtà abbastanza vicina a vi. Se sto lavorando su un sistema con VIM, la prima cosa che faccio è aggiungere queste cose a ~/.vimrc:

syntax enable
set nocp
set wildmenu

Ci sono un sacco di altre cose che preferisco - ora le funzioni e la numerazione, ecc. - ma non importa. "syntax enable" attiva solo l'evidenziazione della sintassi di base (un po 'più forte: filetype plugin onè fondamentale anche); "nocp" disattiva la compatibilità vi ed è questo che inizia a distinguere vim da te vecchio (ad esempio, abilita il showmodeche rende l'intera esperienza un po 'più umana, dal momento che ora hai qualche indizio sul fatto che tu sia al comando o ~ INSERT ~ modalità). "wildmenu" ti dà solo un menu di completamento orizzontale quando fai alcune cose, il che semplifica anche la vita.

Le funzionalità di modifica del testo di VIM non sono seconde a nessuno - a parte emacs, non ho mai visto o sentito parlare di un software che si avvicina. Non sono facili da imparare, ma una volta che li conosci, sono molto più veloci dei menu del mouse da usare e molto più dinamici delle semplici alternative macro chiave nelle interfacce basate sui menu del mouse. Per la programmazione, a volte utilizzo Vim insieme a un IDE come Eclipse, ma svolgo la maggior parte del lavoro in Vim.

Se prendi quel percorso, lol, guarda nei plugin di completamento automatico e taglist. E attenzione al lato oscuro.


Aggiungo sempre set mouse=aanche io .
ott--

Per quanto riguarda il tuo commento di programmazione, potresti trovare eclim interessante ...
ire_and_curses

@ire_and_curses: non l'ho provato. Eclipse e vim monitorano entrambi i file di origine e consentono di aggiornarli esternamente e passare da un desktop a un altro è passare da un desktop all'altro. Sembra piuttosto l'idea però.
Riccioli d'oro,

Anche se non credo che questa risposta dovrebbe essere la risposta scelta (poiché è di parte), è esattamente il tipo di prospettiva che è utile per comprendere le differenze. Grazie per aver preso una posizione.
geneorama,

8

Il vantaggio è che di solito preinstallato in UNIX enterprise come AIX o Solaris. Inoltre vim non è accessibile sul supporto di installazione.


1

Ho notato che ho solo scelto Visopra VIMquando sto copiando e incollando un documento di testo o un file di configurazione che ho usato catil comando. Questo perché quando cerco di ctrl-ce poi ctrl-vnel VIMdocumento aperto, che costringe tutte le linee per avere un commento Infront di loro. Così, quando io uso Viper ctrl-vo pastenel Vidocumento aperto, si incolla esattamente ciò che ho copiato da. A parte questo, lo uso VIMtutto il giorno.

Godere!


5
Prova:set paste
Patrick

3
set pastetoggle = <F2> in .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave,

1

Come già indicato nelle risposte precedenti, vi viene fornito con quasi tutti i sistemi UNIX disponibili.

Volevo solo aggiungere un esempio. Arch Linux è una distro particolarmente popolare e leggera che né l'Installer né la distro di base vengono forniti con vim per impostazione predefinita, tuttavia entrambi vengono con vi.

Questo non è un vantaggio per se stesso , perché puoi semplicemente installare vim manualmente e c'è poco che devi compiere nell'installazione che richiede un editor di testo, e nulla in cui vim è superiore a vi per lo scopo previsto. Ma capire la differenza e che vi è più onnipresente e leggero di Vim gli dà alcuni vantaggi di nicchia.

Inoltre, solo per essere completo, nessuno ha ancora dichiarato esplicitamente che vi è un precursore diretto di Vim. Vim era specificamente progettato per essere tutto ciò che vi era, e altro ancora.

Quindi, in un modo molto diretto, vim è superiore a vi, perché è stato progettato per essere .


1

L'unica ragione per usare vi su vim è quando non hai altra scelta.

Ci sono molte, molte ragioni per cui vim significa "vi migliorato"!

Prendendo in prestito da un post correlato ho risposto: -

  1. Finestre multiple: orizzontale, verticale e schede.
  2. Evidenziazione visiva.
  3. Guida in linea tramite il comando: help.
  4. Registrare le macro in un registro che è quindi possibile eseguire.
  5. Annulla (e ripristina) più volte, anziché la folle operazione di annullamento del vecchio vi.
  6. Cronologia della riga di comando, cronologia delle ricerche.
  7. Un intero linguaggio incorporato insieme a una serie di funzioni disponibili, ad esempio getcwd ()
  8. Corrispondenza del modello ampiamente ampliata.
  9. Completamento delle parole tramite ctrl-P & ctrl-N.
  10. Un navigatore di file integrato (un po 'goffo, ma può essere utile).
  11. Il tasto ESC in realtà chiude i comandi che stavi cercando, beh, di scappare invece di (follemente) eseguirli come vi.
  12. Possibilità di eseguire comandi su tutti i buffer, args o windows tramite bufdo, argdo e windo.

Probabilmente avresti potuto far emergere le "molte, molte" ragioni che hai citato nella risposta unix.stackexchange.com/a/425597/85039 qui. Ciò renderebbe questa risposta un po 'migliore; altrimenti sembra più un commento che una risposta effettiva
Sergiy Kolodyazhnyy,

Punto preso. Risposta aggiornata, prendendo in prestito da una risposta correlata che ho fatto ieri.
Paul T,

1

Questo è estratto da Vim Koans :

Master Wq e il master Unix

Un vecchio maestro Unix venne dal Maestro Wq. “Sono turbato, Wq. Insegni la via di Vim. vi è santo, ma Vim no; il suo codice si espande, le sue caratteristiche affollano la memoria; i suoi binari sono vasti, il suo comportamento incoerente. Questo non è il modo di Unix. Temo che indurre in errore i tuoi studenti. Cosa si può fare?"

Il Maestro Wq annuì. "Hai ragione", ha detto. “Vim è rotto. Risolviamolo. Iniziamo?"

Il vecchio maestro Unix fu d'accordo e aprì una shell. Ha scritto:

$ vi vim.c

Cominciò a programmare. Il Maestro Wq rimase a guardare per un po 'e poi gli chiese: “Quale implementazione di vi stai usando? Nvi? Vim? Elvis?”

"Non lo so", ha detto il maestro Unix. "Non importa."

Il Maestro Wq annuì. Il maestro Unix rimase sbalordito per un momento e chiuse il suo documento senza essere salvato.

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.