Un programmatore deve imparare editori di testi come Emacs e Vim? Quanto sono importanti? [duplicare]

43

Ho scritto codice fino ad ora in editor di testo convenzionali che arrivano fino ad ora con il sistema operativo o in alcuni casi utilizzano un IDE. So che ci sono alcuni editor di testo avanzati come Emacs e Vim disponibili esclusivamente ai fini dei programmatori. Quanto sono importanti davvero? Un programmatore che si occupa di PHP , Python ecc. Impara questi editor? Quali sono i vantaggi che offrono rispetto agli editor convenzionali come Notepad++ , Scribes ecc.?

    
posta David Halter 17.04.2011 - 17:26
fonte

12 risposte

30

Vim è uno strumento davvero valido una volta acquisito familiarità con esso.

Si avvia più velocemente di qualsiasi IDE o editor di testo che ho usato, e ha l'evidenziazione della sintassi e fa rientrare il codice correttamente nella maggior parte dei casi.

Ti aiuta anche a concentrarti sul processo di codifica stesso, non utilizzerai affatto il mouse per affrontarlo, il che ti farà risparmiare un sacco di tempo quando scrivi solo codice.

Ha una ricchezza di plugin per qualunque cosa tu stia facendo,

.

Non ho usato emacs per essere onesto, ma sono sicuro che qui ci sono persone a cui piace, personalmente non mi piace dover premere Ctrl o Alt continuamente.

Modifica

L'utilità di Vim dipende anche da cosa stai scrivendo.

Se sei uno sviluppatore di API (Java, C # ... ecc.) probabilmente sarai più a tuo agio con un IDE.

Ma se scrivi script (Bash, Perl ... ecc.), Vim potrebbe essere la strada da percorrere, dal momento che devi scrivere qualcosa velocemente, Vim è veloce e fa tutto il necessario.

    
risposta data 17.04.2011 - 17:35
fonte
47

Un programmatore non dovrebbe necessariamente apprendere un sacco di strumenti, ma impararne alcuni e impararli bene.

Emacs e vim hanno ciascuno i loro punti di forza distinti ma, a meno che non li usi molto regolarmente, credo che non ne trarrai beneficio. Soprattutto se sei un programmatore di apprendimento.

Tu sarà , comunque trarrai vantaggio da un buon IDE, ma dovresti anche essere in grado di fare un vero lavoro solo con un semplice ed intuitivo editor.

    
risposta data 17.04.2011 - 17:36
fonte
16

L'importanza di vi è che dovrai sempre trovarlo su qualsiasi sapore di UNIX (standard sia in sapori SysV e BSD) sia in un sistema simile a UNIX. Nota comunque potrebbe essere originale vi , non vim . Non ti è garantito che nessun altro editor sia installato. Anche in Linux è in /bin , quindi è disponibile anche se /usr non è riuscito a montare.

    
risposta data 17.04.2011 - 19:30
fonte
15

Sei un dattilografo veloce? Desideri spesso più scorciatoie da tastiera per apportare modifiche? Il tempo impiegato per la modifica interrompe il tuo pensiero? Trovi piccole cose sul tuo editore che desideri personalizzare per funzionare come piace a te? Non ti dispiace spendere un sacco di sforzi in anticipo se questo significa che ti farà risparmiare più tempo e fatica a lungo termine? Sei infastidito dalle persone che ti considerano anacronistico? Se è così, allora vim potrebbe essere una buona idea per te.

Preferisci essere in grado di capire il tuo editor senza leggere il manuale, anche se questo significa meno funzioni? Ti senti più a tuo agio nell'usare quello che usano gli altri in ufficio? Usi il mouse per tutto? Se è così, allora vim potrebbe non essere adatto a te.

    
risposta data 18.04.2011 - 05:39
fonte
6

Penso che imparare Emacs (e probabilmente anche Vim) sia molto utile. Perché? Semplice: posso usare lo stesso editor eccezionalmente capace per più o meno tutto ciò che faccio.

Questo è fantastico perché sono uno studente, imparo costantemente come usare cose nuove e brillanti. Quest'anno, ho giocato con Haskell, ho fatto un sacco di JavaScript, ho usato Scheme, scritto Java, ho lavorato con Perl, lavorato su un sito web ... Emacs è stato fantastico per tutto questo.

In passato, ho avuto alcuni problemi con linguaggi diversi: avrei raccolto Perl o Python, ma non sono riuscito a trovare un buon editor per nessuno dei due. Ora so che posso sempre usare Emacs. Ovviamente, a volte Emacs non ha tutte le funzionalità che voglio, ma ha sempre abbastanza caratteristiche da usare per progetti veloci. Per progetti più lunghi, potrebbe essere necessario un po 'di personalizzazione, ma il tempo necessario per farlo è probabilmente pari a ottenere e imparare un nuovo IDE.

In breve: Emacs è eccezionale perché supporta così tanti linguaggi diversi ed è abbastanza potente anche senza il supporto di una lingua specifica per rendere la vita molto migliore.

    
risposta data 18.04.2011 - 09:54
fonte
5

No

Se vuoi imparare come usarli, non farlo in un ambiente di produzione. Fallo sul tempo di inattività o sul tempo dedicato appositamente per abituarti a scrivere il codice su di essi. Quando acquisisci più esperienza, introduci l'ambiente nel tuo ambiente ma mantieni il programma a cui sei abituato. Ho mantenuto la pagina iniziale nelle vicinanze quando ho deciso di passare a un editor di testo puro, finché non ho avuto la certezza che non ne avevo più bisogno.

    
risposta data 18.04.2011 - 08:38
fonte
5

Ci sono almeno tre motivi perché un programmatore appena nominato potrebbe scegliere di dedicare un po 'di tempo all'apprendimento di emacs e vi:

  • tradizione: Sia vi che emacs sono stati pubblicati da quando Moses ha raccolto la sua produzione su tavolette di pietra. Infatti, Dio stesso potrebbe aver inventato sia vi o emacs, sia il diavolo l'altro, ma otterrete risposte diverse su chi ha inventato quale, a seconda di chi chiedete. (Hai sentito che è un argomento religioso , giusto?) Ad ogni modo, questi due editor hanno abilitato un bel po 'di storia e storie e jokes che li coinvolgono abbondano. Potresti sentirti incapace di capire le tue radici senza una certa conoscenza di entrambe. Ad esempio:

    How many vi users does it take to change a lightbulb?

    ne, as long as he doesn’t forget to enter ‘insert’ mode first.*

  • inerzia: ci sono un sacco di persone là fuori che hanno emacs e / o battute di tasti vi nei loro neuroni come il punteggio più alto su una macchina Defender. Non penso che nessuno possa considerare un editor come un brillante esempio del design moderno dell'interfaccia utente, ma dal momento che così tante persone conoscono già i comandi, i nuovi editor spesso supportano i comandi vi e / o emacs. MacOS X è forse il miglior esempio di questo: puoi usa un numero sorprendente di comandi comuni di emacs in qualsiasi applicazione basata su Cocoa (a meno che tu non sia uno di quelle persone e installa un gestore di input basato su vi ). Molti IDE e editor di testo su tutte le principali piattaforme offrono associazioni di tasti per vi e / o emacs e probabilmente lo faranno ancora per molto tempo. Quindi, proprio come hai imparato a digitare su una tastiera QWERTY, probabilmente otterrai anche alcuni comandi derivati da un vecchio editor di testo, che tu lo sappia o meno.

  • power: non sono così sicuro di vi, ma è sicuro dire che ci sono pochissimi editor che si avvicinano alla potenza e alla flessibilità disponibili in emacs. Non ti piace il modo in cui qualcosa funziona? Puoi cambiarlo. Non hai voglia di abbandonare il tuo editor per usare la riga di comando? Nessun problema: puoi eseguire tutto ciò che ti serve direttamente in emacs. Avrai bisogno di trascorrere molto tempo a studiare nelle paludi di Dagobah per imparare a sfruttare tutto quel potere, ma alcune persone potrebbero trovarlo utile, forse anche solo per se stesso. vi è più simile a uno strumento Leatherman appeso alla cintura: versatile, sempre pronto e utilizzabile per tutti i tipi di cose.

Ora, è importante per imparare vi e / o emacs? Direi che è utile sapere qualcosa su entrambi, specialmente se ne conosci almeno un po 'se ti trovi a doverli usare (potresti farlo). Ma non conoscerli non ti riporterà necessariamente. È molto più importante sapere come brandire gli strumenti che usi ogni giorno nel modo più efficace possibile.

* Questo non è un errore di battitura: lo otterrai dopo aver trascorso la prima ora con VI.

    
risposta data 19.07.2012 - 05:09
fonte
3

Se hai bisogno di imparare un editor per la programmazione, rendilo emacs. Perché?

Se ho bisogno di fare un rpm e apro emacs, gli dico di trovare un file che si conclude con l'estensione .spec Wham! Viene visualizzato un file scheletro con tutti i tag e le macro già inserite con il codice colore del testo.

E se voglio sottopormi al mio controllo di versione preferito, esc-x load-library mercurial (o git o svn) mette emacs nell'umore per far cadere i comandi giusti dal suo menu di controllo della versione o per riconoscere i comandi come ctrl-x vv per il check-in o il codice da un repository, e fare tutto ciò che si può fare con un repository.

L'affaticamento ottico si verifica quando uno fissa gli stessi colori per troppo tempo. Uso konsole per le finestre dei terminali e cambio frequentemente i colori. Con emacs non in una finestra di terminale, ho più di 50 temi di colore tra cui scegliere, alcuni dei quali hanno un contrasto basso, come Alice Blue, e qualche accenno di euforia simile a quando ho bisogno di stare sveglio.

Codigo molto python. Quando ho bisogno di testare alcuni codici per la sintassi, non lascio Emacs. Comincio l'interprete Python, e lo schermo si divide, poi salvo il mio file python e lo importa all'interprete per controllare la sintassi - un errore sarà prontamente evidente, e posso correggerlo immediatamente. Quando ho finito, posso passare a una finestra non divisibile e continuare a lavorare.

Alcuni dicono usare vi, e io lo uso su alcuni vecchi sistemi SUN ... Ho un ritmo regolare - colpisco i e inserisco un carattere, poi colpisco la fuga e premo di nuovo e digito il prossimo carattere ... (Quasi meglio di ed, ma è ciò che è disponibile).

Di solito la mia prima installazione su qualsiasi nuovo sistema è zile. GNU zile è emacs senza tutti i window dressing come browsing ed e-mail e irc e colori, solo un binario con codice C che funziona in circa 100k e usa i codici chiave di emacs.

Se emacs fosse così oneroso come la maggior parte cerca di farlo sembrare, dovrebbe essere sorprendente che così tante persone fossero ghiotte per auto-flagellazione realizzando editor di emacs. MINCE non è completo Emacs, i 31 sapori di microemac, Jed, Zile, Joe e una codifica di oddball python o due più YMac basati sul web, sono tutti emacsen. peppy link è un take diverso, utilizza i codici chiave di emacs e codificato in Python e si modificherà quasi su tutto, inclusi blocchi di dati binari, e ha dozzine di modi per programmare i linguaggi, ma il suo paradigma di keycoding è emacsen.

YEah, emacs vale la pena imparare, e così è vi. Del resto, forse Eclipse è utile, se riesci a sopportare l'orrore dei suoi numerosi inserti. E se hai bisogno di qualcosa DAVVERO piccolo, leggero e veloce, dai un'occhiata a e3. La versione x86 è scritta in assembler e serve molti set di codici, tra cui Emacs e Vi. link

E oh sì, apro emacs, digito 17 pagine e BLAP! I fulmini e il mio potere si spengono. Quando il potere viene ripristinato, guardo il lavoro e scopro che ho perso gli ultimi 7 caratteri che ho digitato .... E se decido di seguire la procedura "recupera la sessione in crash", posso ridurla a 2 persi.

Il codice Python non crede all'indentazione, DEPENDE su di essi. Emacs ne è consapevole e si assicura che la tua indentazione sia corretta. Ma se decidi di rimuovere un "se", avrai un'intera regione in uno stato di indentazione errato. Con emacs lo aggiusti:

Ctrl-spazio e tasti freccia per evidenziare la regione

ctrl-c < per outdent di tutto il codice evidenziato. (ctrl-c > indenta di nuovo, correttamente).

Penso di aver usato più di 60 editor, eppure quello a cui torno è emacs, non perché io possa ottenere stub di codici di funzione in C o indentazione appropriata o codifica a colori, ma perché posso personalizzarlo al di là del suo capacità già fantastiche. Il progetto di Richard Stallman è stato adattato da così tanti ...

    
risposta data 18.07.2012 - 23:02
fonte
3

Al giorno d'oggi la popolarità di vari tipi di editor culto viene probabilmente da programmatore Pragmatico libro,

o, per essere precisi, dai lettori che hanno riempito mentalmente Capitolo 3 Strumenti di base - > Power Editing - > Un solo editore ma ha totalmente perso la chiave (pragmatica!) Da asporto esposta nel capitolo Prefazione:

There are no easy answers. There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances.

This is where pragmatism comes in. You shouldn't be wedded to any particular technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations...

You adjust your approach to suit the current circumstances and environment. You judge the relative importance of all the factors affecting a project and use your experience to produce appropriate solutions. And you do this continuously as the work progresses.

Se si ottiene la comprensione generale come sopra, solo questo rende il libro degno di lettura. L'idea principale da tenere presente è quella che gli autori hanno dichiarato in modo chiaro e inequivocabile, "non esiste una soluzione migliore" .

    
risposta data 19.07.2012 - 03:09
fonte
2

Né emacs né vi sono esclusivamente pensati per la codifica; semplicemente supportano funzionalità che rendono più semplice la scrittura del codice.

l'unica virtù di vi è la sua ubiquità; qualsiasi sistema basato su Unix o Linux avrà un'implementazione di vi. Era più amichevole di anni luce di TECO , ma lo è anche con Etch-a-Sketch. Detto questo, vi è il mio strumento di editing principale in una sessione terminale, semplicemente perché non ho mai avuto la larghezza di banda per impararlo e emacs allo stesso tempo (ed emacs ha dannato troppo molte combinazioni di keycode).

Non hai bisogno di per imparare uno strumento; ci sono altri editor di testo di qualità che supportano molte delle stesse funzionalità in un formato più amichevole.

    
risposta data 18.04.2011 - 02:35
fonte
1

Non hai bisogno di imparare Vi o Emacs, devi imparare i tuoi strumenti. Immagina un cecchino che non conosce bene i lati negativi e le capacità del suo fucile, non sarebbe un buon cecchino? Lo farebbe?

Quindi vai avanti e trova un editor che ti piace, ti potrebbe piacere Emacs, Vim, Textmate, Sublime Text ... diamine, forse non ti piacciono nessuno di questi e stai bene con Nano, ma ciò che conta è che sei a tuo agio con i tuoi strumenti.

    
risposta data 19.07.2012 - 03:08
fonte
-5

Per prima cosa. VIM è più produttivo per la programmazione di Eclipse o. Il tuo prodotto personale in VIM può essere abissale, ma il potenziale limite di VIM è molto più alto. Questo è un dato di fatto.

VIM è un'arte marziale. Sembra innaturale quando lo usi per la prima volta. E non puoi nemmeno farlo funzionare. Occorrono anni di pratica per diventare gradualmente produttivi. All'inizio ti concentri su un piccolo dettaglio. Lentamente tutti questi bit che hai imparato a sommare fino a quando il testo scorre senza sforzo dalla punta delle dita sullo schermo. Modifiche complicate che faranno saltare il tuo collega di lavoro dalle tue mani prima che possa terminare la sua espirazione. Ci sono poche persone che possono usare VIM. Meno chi può usarlo produttivamente. E potresti non incontrare mai un maestro nella tua vita. Ma si dice che esistano.

VIM è progettato per tenere le mani sulla home-row. Spostare la mano dalla tastiera al mouse è demoralizzante. È un movimento motorio grossolano. Spostare il braccio ha un effetto psicologico che ferisce le tue motivazioni. Usando VIM, qualcuno potrebbe infilare i polsi sulla tastiera e puoi ancora aprire facilmente i file, dividere le finestre, aprire schede, costruire il progetto, cercare / sostituire, cambiare font, cambiare colori, ecc. E tutto alla velocità della luce.

VIM è modale. Ciò significa che non devi fare combinazioni di tasti complesse dove tieni premuto control + shift + Key. Ciò ferisce le tue mani a lungo termine. Invece esegui i comandi. Non c'è bisogno di combo chiave a causa della natura modale.

Archiviamo i dati nella nostra memoria come fanno i computer. La nostra memoria può contenere solo pochi valori alla volta. Guarda quanti numeri interi distinti puoi tenere in testa prima che inizino a scivolare via. Superiamo questa limitazione umana scrivendo cose. Se i dati cadono dalla nostra memoria, possiamo facilmente vedere ciò che abbiamo scritto per recuperarlo. Se il tuo tempo viene speso facendo un motore grossolano, le cose fisiche perdi tempo che potrebbero essere spesi per elaborare i dati nel tuo cervello. Vuoi che la tua mente scorra sullo schermo senza alcuno sforzo. Potrebbe non sembrare molto, ma l'abilità di VIM di trasferire senza sforzo ciò che è nella tua mente sullo schermo è un GRANDE aumento di produttività. È difficile esprimere a parole quello che sto cercando di dire.

VIM supporta il completamento del codice. Sia basato su testuali che su look-up. Può estrarre il testo da più file. Tutto ciò che desideri può essere avuto in VIM. O fai da solo o usa qualcosa cucinato da qualcun altro.

VIM supporta l'accesso alle definizioni con ctags. Puoi anche trovare tutti i riferimenti di un articolo. Di nuovo, tutto ciò che desideri può essere avuto in VIM.

Lo scripting di VIM è enorme. Puoi scaricare o creare migliaia di combinazioni di colori e cambiare i colori in un istante. Prova a cambiare font o colori in Microsoft Visual Studio e si bloccherà per 20 secondi mentre carica i dati. Non ti consentirà di memorizzare combinazioni di colori e dovrai dedicare 30 minuti a modificare i colori e i caratteri ogni volta che desideri un cambio di scenario. In VIM è possibile impostare l'interlinea su zero per adattare più linee di codice sullo schermo. Ottengo oltre 80 linee. Visual Studio utilizza 2 pixel di spaziatura per ogni linea e non è possibile regolarlo !!! Meno linee = più scorrimento = meno produttività = costretto a usare caratteri piccoli per più linee = affaticamento della vista.

Le finestre divise vengono aperte in un instnat in VIM. È utile quando è necessario esaminare i dati in una sezione del codice che è lontana dal luogo in cui si sta digitando (o in un file diverso). Non è necessario passare il tempo a ridimensionare le finestre o preoccuparsi delle finestre della GUI che si sovrappongono e si nascondono l'una dietro l'altra. Le finestre di codice non correlate possono essere aperte in schede in modo da non occupare spazio sullo schermo, ma consentono una commutazione rapida.

VIM come IDE: link

VIM the revenge: link

    
risposta data 19.07.2012 - 02:46
fonte