Come confronteresti questi editor? Quali sono i pro ed i contro di ognuno?
[ nota ] Non si intende rispondere a chi "odia e ama un altro" o chi non ha usato entrambi.
Come confronteresti questi editor? Quali sono i pro ed i contro di ognuno?
[ nota ] Non si intende rispondere a chi "odia e ama un altro" o chi non ha usato entrambi.
Risposte:
Uso entrambi, anche se se dovessi sceglierne uno, so quale sceglierei. Cercherò comunque di fare un confronto oggettivo su alcune questioni.
Disponibile ovunque? Se sei un amministratore di sistema professionale che lavora con i sistemi Unix o un utente esperto su dispositivi incorporati (router, smartphone con Busybox, ...), devi conoscere vi (non Vim), perché è disponibile su tutti i sistemi Unix e la maggior parte Sistemi simili a Unix, desktop, server o integrati. Per un normale utente, questo argomento è irrilevante: Emacs è facilmente disponibile per ogni sistema operativo desktop / server e, poiché supporta l'editing remoto, è comunque sufficiente averlo sul computer desktop.
Gonfio? Emacs una volta rappresentava ironicamente "Otto Megabyte e scambia costantemente". In questo momento, sul mio computer, Google Chrome ha bisogno di circa la RAM per scheda di Emacs per 100 file aperti e non menzionerò nemmeno Firefox. Nel 21 ° secolo, Emacs bloat è solo un mito.
Anche il gonfiamento delle funzionalità non è un problema. Se non lo usi, non devi sapere che è lì. Le funzionalità di Emacs si tengono alla larga quando non le si utilizza e la documentazione è molto ben organizzata.
Tempo di avvio : i proponenti Vi (m) si lamentano del tempo di avvio di Emacs. Sì, Emacs si avvia lentamente, ma questo non è un grosso problema: si avvia Emacs una volta per sessione, quindi ci si connette al processo in esecuzione emacsclient
. Quindi l'avvio lento di Emacs è principalmente un mito.
C'è un'eccezione, che è quando si accede a un computer remoto e si desidera modificare un file lì. L'avvio di un Emacs remoto è (generalmente) più lento rispetto all'avvio di un Vim remoto. In alcune situazioni puoi tenere un Emacs in esecuzione all'interno dello schermo. Puoi anche modificare i file remoti dall'interno di Emacs, ma interrompe il flusso se sei in una sessione ssh in un terminale. (Da XEmacs 21 o GNU Emacs 23, puoi aprire una finestra Emacs da un'istanza X in esecuzione all'interno di un terminale.)
Girando le tabelle, ho osservato che Vim impiegava notevolmente più tempo a caricarsi di Emacs ( vim -u /dev/null
vs. emacs -q
). Certamente questo era su una strana piattaforma (Cygwin).
Curva di apprendimento iniziale: varia da persona a persona. Il grafico di Michael Mrozek mi ha fatto ridere. Scherzi a parte, concordo sul fatto che la curva di apprendimento di Vim inizia in modo ripido, più ripido di qualsiasi altro editor, sebbene ciò possa essere ridotto usando gvim.
Da quando ho dissipato un paio di miti di Emacs, lasciami sfatare un mito vi: un editor modale non è difficile o doloroso da usare. Ci vuole un po 'di abitudine, ma dopo un po' sembra molto naturale. Se dovessi ridisegnare vi (m), terrei sicuramente le modalità.
Curva di apprendimento asintotica: sia Vim che Emacs hanno molte funzionalità e continuerai a scoprirne di nuove dopo anni di utilizzo.
Produttività : questo è un argomento estremamente difficile. I sostenitori di vi (m) sostengono che puoi fare praticamente tutto senza uscire dalla fila di casa, e questo ti rende più efficiente quando ne hai più bisogno. I sostenitori di Emacs ribadiscono che Emacs ha molti comandi che non vengono usati frequentemente, quindi non garantiscono un'associazione chiave, ma sono dannatamente convenienti quando ne hai bisogno ( riferimento obbligatorio xkcd ).
La mia opinione personale è che Emacs alla fine vince a meno che tu non abbia una disabilità di battitura (e anche allora puoi configurare Emacs per richiedere solo sequenze di tasti e non combinazioni come Ctrl+ lettera). I tasti della fila in casa sono belli, ma spesso non sono una vittoria perché devi cambiare modalità. Non penso che ci sia qualcosa che Vim possa fare in modo significativo più efficace di Emacs, mentre è vero il contrario.
Personalizzazione : entrambi gli editor sono programmabili e per entrambi esiste un ampio corpus di pacchetti disponibili. Tuttavia, Vim è un editor con un linguaggio macro; Emacs è un editore scritto in Lisp con alcune primitive ad hoc. Emacs vince in modo spettacolare quando provi a fare qualcosa a cui gli autori non hanno pensato. Questo non succede tutti i giorni, ma si accumula nel corso degli anni.
Più che un editore : Vim è un editore. Emacs non è solo un editor: è anche un IDE, un file manager, un emulatore di terminale, un browser web, un client di posta, un client di notizie, ... Che si tratti di una cosa positiva o negativa è una questione di dibattito. Ma puoi usare Emacs come un semplice editor (vedi "gonfiore delle funzionalità" sopra).
Come IDE : sia Vim che Emacs supportano molti linguaggi di programmazione e altri formati di testo. Oltre alle nozioni di base come la colorazione sintattica e il rientro automatico, entrambi hanno funzionalità IDE avanzate come ricerche di riferimenti incrociati di codice e documentazione, inserimenti e refactoring assistiti, controllo di versione integrato e la possibilità di avviare una compilazione e passare al primo errore.
Un dominio in cui Emacs è chiaramente migliore di Vim è l'interazione con sottoprocessi asincroni . Questo è quando inizi una lunga compilation e vuoi fare qualcos'altro all'interno della stessa istanza dell'editor mentre il compilatore sta agitando. O quando vuoi interagire con un ciclo di lettura-eval-stampa - Emacs brilla davvero in questo, Vim ha solo hack goffi da offrire. Tuttavia, un nuovo fork di vim, Neovim ha dimostrato di aver risolto questo problema e implementato altre varie correzioni di bug non implementate in stock vim.
Pubblicherò quali ritengo siano i principali vantaggi di ciascuno:
Emacs ha molte più estensioni per permetterti di svolgere attività che sono solo vagamente correlate all'editor di testo, come navigare nel filesystem o fare confusione con il controllo della versione, ed estensioni che non sono in alcun modo correlate all'editor di testo, come leggere i feed RSS. Se vuoi un ambiente invece di un semplice editor di testo, Emacs sarà migliore di Vim. Penso anche che Emacs sia molto più facile da imparare, nonostante ciò che alcuni vorrebbero farti credere:
In particolare, penso che un utente Emacs alle prime armi sarà più veloce di un utente Vim alle prime armi
D'altra parte, Vim è innegabilmente più veloce. Sembra che questa sia una parte fondamentale dell'argomento, ma a mio avviso non vi è alcun contest; Mi considero un utente fluente di Emacs e non posso competere con le persone di coppia che conosco che hanno una pari conoscenza di Vim. Il problema è che il numero di persone che hanno una padronanza sufficiente di Vim per essere così veloce è incredibilmente piccolo (delle ~ 30 persone con cui parlo regolarmente che usano Vim, penso che solo una sia eccezionalmente brava). C'è un grande divario tra il possibile guadagno di velocità e l' effettivo guadagno di velocità che si ottiene; Gli utenti di Emacs saranno quasi veloci quanto il 99% degli utenti di Vim e (come ho detto nella sezione Emacs) probabilmente gli utenti di Emacs all'inizio saranno più veloci degli utenti di Vim
C'è un vi
disponibile su ogni sistema unix (o quasi), tuttavia non puoi dirlo su nessun altro editor. Questo è il motivo numero 1, imo, per imparare e familiarizzare con te vi
(nota 'vi' non 'vim'). Non ho mai visto Emacs disponibile in un'installazione predefinita.
Non sto dicendo di non usare Emacs o questo è l'unico motivo per usare Vim, ma quando vuoi essere in grado di usare sistemi Unix che non sono tuoi ... vi
fa parte del linguaggio universale.
vim
utente, ma spesso lo trovo difficile da usare vi
, molto probabilmente a causa della chiave END (vim lo supporta, ma vi non lo fa, o almeno non lo fa di default)
nano
con un sacco di ijkloOah nel mio file ... fino a quando non mi rendo conto che non posso usare quelli per la navigazione. Non uso i tasti freccia per navigare.
vim
:)
Penso che siano entrambi fantastici. Penso che uno dei due possa fare qualsiasi cosa tu possa immaginare, ed entrambi sono così personalizzabili, che quando finisci di personalizzarli, entrambi sono esattamente esattamente ciò che vuoi che siano, niente di più o di meno.
Emacs mi distingue per essere un po 'più vicino (anche se non soddisfa ancora) agli standard ISO / IEC di usabilità e coerenza per le interfacce utente, e quindi non gioca così tanti trucchi con i tuoi "istinti" su quel vim. La durata degli istinti che hai sviluppato lavorando con altri programmi non funzionerà contro di te.
Vim è un modello completamente diverso, e per molti versi è superiore da solo in quanto si basa molto meno sulle sequenze Cntrl / Alt e invece solo sulle sue modalità, permettendoti di mantenere i tuoi hard sulla riga iniziale e digitando Più veloce. Ma vim è praticamente unico e, a meno che non si installi un software di accompagnamento molto insolito (ad es. Vimperator, Jumanji / Zathura, ecc.), L'istinto che si sviluppa lavorando con vim non passerà ad altri programmi e viceversa. Detto questo, ho optato per Vim me stesso. Devi accontentarti di uno prima o poi, nel bene o nel male, dal momento che è difficile padroneggiare entrambi.
Uso entrambi su base regolare. Vedo Emacs come un editor "live in", mentre utilizzo Vim per compiti rapidi e unici. A livello superficiale, Emacs è molto più gonfio di Vim, e quindi non è molto conveniente "accendere" come Vim, ma trovo anche che le filosofie dell'interfaccia utente dall'una all'altra supportino questo paradigma. Emacs è molto più costruito per tenerti dentro, rendendo le cose belle e comode in modo da non dover andartene, mentre Vim è molto più "Unixy" e si vede come parte di una maggiore cintura degli attrezzi.
Molte persone fuggono da Emacs a causa della sua forte dipendenza da frammenti , ma questa è una ragione piuttosto sciocca per me. Il vero potere che Emacs ha su Vim è la personalizzazione, e con il potere di Viper ecc., Questo non è davvero un problema. Certamente Vim-Script offre il proprio livello di personalizzazione e se, per esempio, il tuo linguaggio di programmazione preferito non fosse dotato di un evidenziatore di sintassi appropriato, potresti sicuramente crearne uno, ma Emacs è in definitiva un lisp-machine self-hosting, e in alla fine puoi fare molto, molto più armeggiare con esso. Semplicemente non ci sono strumenti come gnus o org-mode in Vim, per citarne alcuni. In breve, Emacs non è solo un editor, è praticamente un maledetto sistema operativo.
Per manipolare il testo, direi che sono esattamente alla pari.
Metterò il mio valore di $ 0,02 in quanto ho trascorso parecchi anni usando emacs e XEmacs e poi sono passato a vim. Per essere onesti, avevo effettivamente usato vi un po 'tra il 1990 e il 1992, quindi avevo familiarità con la sua interfaccia utente.
Emacs
Emacs è stato descritto come un sistema lisp appena usato per scrivere un editor, e in questo c'è un granello di verità. È possibile implementare praticamente tutto ciò che si desidera in elisp se si desidera prendere il proprio tempo per comprendere l'ambiente. Non posso dire di averlo mai saputo così bene, ma ho fatto cose occasionali. Emacs e Xemacs non sono totalmente compatibili a questo livello, quindi gli script di terze parti possono essere eseguiti su uno ma non sull'altro.
È stato osservato che RMS e alcuni altri eminenti hacker Emacs hanno dovuto ritirarsi dalla programmazione a causa di problemi con OOS, dove Bill Joy, Bram Moolenaar e vari altri luminari vi sono ancora. Emacs è duro per le tue dita mignolo.
Emacs è un sistema molto più cattolico di vi ed è visto come un esempio canonico dell'involucro del software . Insieme a Netscape, questo è uno dei contributi di jwz per dimostrare questa legge.
Una cosa unica che ho fatto una volta con xemacs è stata farla funzionare su una macchina e aprire una sessione x su un xterminal (in realtà un vecchio Sun 3/60 riproposto) in una stanza diversa contro lo stesso buffer sulla stessa istanza in esecuzione.
Pro: estensibile, più potente di qualsiasi altro editor conosciuto dall'uomo, integrazione matura con praticamente tutti i principali strumenti di programmazione del software libero.
Contro: ergonomia discutibile, elisp non è facile da imparare.
Vim
Disclamer - Sono passato dall'uso di emacs a vim circa 10 anni fa e uso abitualmente vim su sistemi basati su Windows e Unix / Linux.
Vi e i suoi discendenti hanno un'ottima funzione di macro della tastiera per automatizzare le attività di modifica. La funzione di scripting in vim non è sofisticata come elisp, ma puoi costruirla con il supporto per Python, Tcl, Perl e forse altri sistemi. Di tanto in tanto ho scritto script (al di fuori dei file .vimrc) per vim.
Vim ha un'impronta più piccola di emacs, ma al giorno d'oggi non è un gran problema.
La documentazione di Vim e l'aiuto in linea sono abbastanza buoni. Emacs ha una buona documentazione online, ma non credo sia completa come quella di VIM.
Vim eredita la bizzarra interfaccia utente modale di vi, ma ora ha la capacità di comportarsi in modo molto simile a un editor modless, poiché puoi navigare nella modalità di inserimento. Su Windows può comportarsi in modo simile a un'applicazione Windows.
Pro: buona funzionalità per la macro della tastiera, estensibilità e script accettabili, ma non buoni come emacs. Gli editor Vim o vi sono standard nella maggior parte se non in tutte le distribuzioni linux unix o generiche. Ergonomia probabilmente migliore.
Contro: l'interfaccia utente modale sembra strana alle persone abituate alle interfacce utente di Windows. Meno problemi con vim in questi giorni.
Normalmente uso Vim, ma sono entrambi ottimi editor.
Imparare a usare vi è stato brutto, ma ci sono riuscito e ho imparato a piacermi. I miei momenti più frustranti sono stati quando la chiave di blocco maiuscole era attiva. Potresti provare con gVim, ma uno dei maggiori vantaggi di vi ed Emacs è la capacità di fare cose ordinate mantenendo le mani sulla tastiera, e gVim probabilmente ti farà continuare a usare il mouse. (Imparare a giocare a giochi roguelike allo stesso tempo mi ha dato pratica con i tasti di spostamento del cursore, ma a volte mi ha fatto provare a muovermi diagonalmente nei documenti.)
Emacs è probabilmente più accessibile. È modale e non ti rovinerai premendo il tasto BLOC MAIUSC. L'idea di controllare l'editor digitando lettere con il tasto di controllo premuto non dovrebbe essere troppo estranea ai moderni utenti esperti, sebbene le chiavi effettive per fare le cose sembreranno selvagge e arbitrarie per il tipico utente di Windows / Mac OS X. Ancora una volta, le versioni che ti consentono di usare il mouse ti fanno pochi favori a lungo termine.
Entrambi richiedono un certo livello di esperienza per utilizzare in modo efficace. A differenza, diciamo, Blocco note, non puoi semplicemente sederti e modificare.
Entrambi sono configurabili, anche se per i miei soldi scrivere estensioni nella stessa Lisp in cui è scritto l'editor rende l'esperienza più fluida. (Emacs, come normalmente distribuito, non è in realtà un editor. È un ambiente Lisp su misura per l'elaborazione del testo, con molti software pre-scritti, incluso un editor. Da qui la battuta "Emacs crea una shell decente, ma potrebbe usare un editor migliore. ")
Di solito uso Vim perché, dopo un lungo allenamento, mi sembra più facile. Ciò può essere dovuto ai vantaggi del sistema di modalità, in cui sono disponibili immensi numeri di comandi usando un dito vicino alle file di casa, o "sindrome di baby duck", che si applica molto agli editor: una volta che ne apprendi uno buono, generalmente ti attieni ad esso.
Non ti sbaglierai nemmeno usando.
Il motivo principale per cui non uso vi / vim è che è modale. Il motivo principale per cui utilizzo vi è che è disponibile quasi ovunque.
Mi capita di pensare che il commento "vim is modal" sopra non sia corretto. Vim ha dei comandi. Puoi fare "11aOra è il momento di tutti gli uomini buoni .." e finire con 11 nuove identiche righe di testo nel tuo file. Questo è un comando, non una modalità. Ma in realtà c'è una differenza di base nei comandi Vim rispetto ai comandi Emacs. Non sono del tutto sicuro di poterlo descrivere, ma Eric Fischer ha incorporato l'editing di linea in stile Emacs in un driver TTY 10+ anni fa e ha pubblicato un articolo a riguardo:
http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf
Scoprì che la modifica delle linee in stile Emacs era sostanzialmente diversa da quella in stile vi.
Quindi Emacs ha il vantaggio che molte altre cose (bash, gnuplot, zsh, ksh alcune altre a cui non riesco a pensare dalla parte superiore della mia testa) finiscono per implementare la modifica delle linee in stile Emacs.
Devo notare che uso personalmente Vim per tutto il tempo. Sono solo un utente Emacs molto occasionale.
set -o vi
a mio avviso, bash
o zsh
non è troppo difficile da eseguire (o inserire un rc
file).
gnuplot
Postgresql psql
, MySQL mysql
e molte altre interfacce fanno più o meno la modalità Emacs per impostazione predefinita. Se solo Oracle fosse in grado sqlplus
di eseguire la modifica della riga di comando ... no, no. Sarebbe troppo chiedere a una grande società. Hanno tendenze da seguire!
inputrc
fa la cosa per gli strumenti di shell, ma poi mi sorprendo a chiedermi per mezzo secondo perché j
non scorra verso il basso, diciamo, Mendeley Desktop dopo essere passato dal terminale, e sono stati chiesti collegamenti VIM troppo più volte. Purtroppo non è possibile coprire tutto e avere un ambiente coerente.
mysql(1)
, psql(1)
, gnuplot(1)
, anche python(1)
, perlconsole(1)
, lftp(1)
, smbclient(1)
e in effetti un sacco di programmi interattivi sono stati interessati circa keybindings per la linea di modifica. Tutti questi software usano solo GNU Readline e la modalità predefinita per GNU Readline è (non sorprende) simile a GNU Emacs. set editing-mode vi
in your ~/.inputrc
e voilà - tutti questi strumenti hanno combinazioni di tasti simili a vi.
Poiché non è stato esplicitamente dichiarato, aggiungerò che non esiste un ambiente di programmazione migliore (Lisp in a box, SLIME, ecc.) Di una distribuzione Emacs leggermente modificata. Tutte le mie esigenze di programmazione (99%) sono gestite da Vim, ma per tutte quelle librerie e routine Lisp che scrivo, devo avviare Emacs per ottenere risultati produttivi.
Uso Vim / gVim.
Usavo Emacs, ma ho scoperto che gVim funziona generalmente più velocemente su macchine più lente, inoltre, a causa del suo requisito POSIX, vi è disponibile quasi ovunque.
Quando uso Vim o gVim, uso molto il mouse, credo che il supporto sia ottimo.
Ho iniziato a usare Emacs, perché era più facile da usare per un utente alle prime armi. Ho trovato che l'uso di nano è piuttosto soggetto a errori per qualche motivo, e ad un certo punto mi sono reso conto che mi sento molto più a mio agio con l'uso di vi.
In questo momento, è un miscuglio. Uso anche Eclipse e gedit abbastanza spesso. Vim, tuttavia, è ancora il mio editor preferito e più usato.
Uso sia gVim che Emacs abbastanza bene per essere produttivo, anche se non sono esperto in nessuno dei due. Una cosa che posso dire con certezza è che Vim e gVim funzionano più velocemente sul mio laptop Windows 7 (che devo usare al lavoro). Emacs, sulla finestra di Windows, ha la strana abitudine di "mettere in pausa" per un minuto e di non rispondere, anche se continua ad accettare l'input da tastiera, prima di sputare tutto accumulato nel buffer della tastiera in fretta. Ciò non accade in Mac OS o Linux. Tuttavia, mi ritrovo a usare Vim o gVim la maggior parte delle volte su tutte le piattaforme, quindi non devo fermarmi a pensare a quale editor sto usando e adattare. Detto questo, in un ambiente puramente * nix, probabilmente starei con Emacs perché trovo il montaggio non modale leggermente più naturale.
In conclusione: secondo me entrambi gli editor sono abbastanza potenti da gestire qualsiasi esigenza di modifica del testo. La scelta dovrebbe basarsi su considerazioni pratiche (come specifiche di implementazione della piattaforma) e stile di lavoro.
La differenza principale tra Emacs e Vim è ergonomica. C'è la sindrome del tunnel carpale, CTS, come sai. Emacs è molto "pericoloso" se hai CTS e provoca CTS. Vim - no, puoi leggere questa differenza in molti posti. Ad esempio, in Vim puoi modificare il testo solo con un dito. In Emacs - non puoi :)
Uso vi
/ nvi
(NOT vim
) perché è semplice e discreto.
vim
ama tanto i bip che è più difficile e in qualche modo invisibile essere chiuso. Ho dovuto
rimuovere fisicamente l'altoparlante interno del PC prima che alla fine ho trovato quel sepolto-ref su come farlo :)
set vb t_vb=
Inoltre non uso la colorazione della sintassi, il grigio sul nero per me è il più bello.
E forse sono troppo stupido per capire in che modo il groviglio-tasto multiplo premuto emacs
l'unica combinazione di tre tasti che ricordo è CTRL-ALT-CANC.
"Quali sono i pro e i contro di Vim ed Emacs?" - ah!
Per lo più lascerò i professionisti ad altri.
I contro di entrambi sono che sono entrambi vecchia scuola. Ho usato probabilmente 50 diversi editor nel corso degli anni dai redattori di linea di base, ai redattori con codifica di assemblaggio superveloci (VEDIT per uno), ai fantasiosi editor di GUI, alcuni migliori di altri. Ho anche scritto il mio editore speciale chiamato ForthStar e l'ho adattato per modificare un albero di foglie btrieve, con più indici per una ricerca potente, come trovare istantaneamente le ultime foglie che ho appena modificato, o trovare rapidamente componenti di codice o foglia genitori o bambini.
Penso che sia vi che emacs siano più religione che muscoli. Le menti creative che le hanno costruite sono in gran parte andate avanti e il nuovo supporto non ha il coraggio e l'abilità di reinventarle.
Sì, Emacs può fare molto, ma è rallentato da lisp, un linguaggio bellissimo e ora in gran parte obsoleto.
Entrambi sono bloccati in layout di tastiera difficili. Emacs potrebbe adattarsi un po 'all'utente, almeno riconoscendo che esiste un tasto Alt anziché il Meta antico. E come WordStar riconoscere che mantenere CA CB direttamente da CA B quando la digitazione rapida non vale la distinzione. Meglio semplicemente averne uno che viene attivato da una combinazione di tasti. Sì, puoi modificare le combinazioni di tasti, ma poi che casino hai dopo.
Vi è intelligente, ma manca di una potente ricerca e sostituisce come in Notepad ++ che ti mostra cosa è stato trovato, ti consente di espanderlo e applicarlo selettivamente, a colori, solo per citare un'innovazione.
Quasi ogni altra app della GUI in questi giorni consente lo zoom con la rotellina del mouse. La GUI di Emacs non sembra funzionare. E dov'è il bel greeking come quello che ha Kate?
Il mio layout di tastiera preferito negli anni è stato il cursore diamante di Wordstar. Almeno è stato facile da imparare e ha immediatamente senso. Quello che odiavo di più era WordPerfect che aumentava la complessità e sembra essere stato in qualche modo basato su emacs.
Ammettiamolo, la maggior parte del mondo ha la GUI in questi giorni. E che piaccia o no, gli editor di testo sono piuttosto bloccati nella loro età.
Penso che sarebbe meglio avere un editor universale che possa facilmente passare tra emacs, vi, wordstar o qualunque layout di chiave, e senza perdere i comandi più potenti che ha da offrire. I veri programmatori devono utilizzare una varietà di strumenti di modifica. Perché non avere un editore che soddisfi le nostre esigenze per svolgere il lavoro piuttosto che per forzarci nel loro modo di fare le cose?
M-! emacs RET
È come cercare "google" su Google