Utilizzo di Vim durante la codifica di un'applicazione su larga scala

17

Sto iniziando a imparare Vim e seguendo alcuni dei consigli qui riportati in stackexchange. Sto cominciando a usarlo in alcuni progetti di giocattoli e mi piace.
Ma ho iniziato a chiedermi come si può essere produttivi senza aprire altri file tutto il tempo solo per sapere come è il nome della classe, qual è quella macro inclusa in altri file, ecc. Ecc.

Quali sono i consigli più comuni che puoi dare?

    
posta Matias 10.11.2011 - 23:07
fonte

5 risposte

11

Un aspetto dei programmatori esperti che passano da un ambiente IDE a un ambiente console / xterm, sta trovando una sostituzione per l'indicizzazione degli oggetti del codice sorgente (nomi di funzioni, variabili). Credo che il termine generale usato per Microsoft Visual Studio sia Intellisense o qualcosa del genere.

Nel mondo Unix / Linux, come ad esempio vim, uno strumento utilizzato se ctags o la più popolare lingua Implementazione open source, esuberanti ctags . Non è specifico per vim ed è supportato da un numero di editor di testo Unix, Linux, MS Windows, Mac OS, tra cui Emacs, CRiSP, vile & un certo numero di altri cloni vi, nedit, gedit, JED, UltraEdit, BBEdit e DreamWeaver (alcuni di questi sono tramite plugin di terze parti).

Oltre a ciò, un buon design e una scomposizione ponderata, l'organizzazione di progetti più grandi rende il progetto gestibile in quanto vi sono solo 1-2 luoghi potenzialmente ovvi da cercare per ogni dato dato ( typedef o class definizioni, ecc. .).

Inoltre utilizzo più istanze di vim (spesso tramite view per la visualizzazione di sola lettura dei file di origine), nonché un uso limitato di più buffer di modifica per istanza di vim (principalmente per lo spostamento o il refactoring del codice tra i file). Trovo che usare solo pochi file sorgente aperti alla volta possa aiutare nel suo piccolo, per tenermi concentrato sull'attività da eseguire.

    
risposta data 11.11.2011 - 01:33
fonte
7

Non intendo essere parte del dibattito VIM vs. IDE. Immagino che sia pref personale. Ma io uso molto VIM ed ecco perché trovo molto potente usare vim

Due parti della risposta:

A. La maggior parte delle cose VIM consente la maggior parte delle cose che puoi fare con gli IDE, (non sto cercando di mettere tutte le funzionalità, ma solo alcune non ovvie che fanno sembrare che vi sia un limite)

  1. puoi attraversare i prototipi se hai attivato ctags e fai ctrl+{

  2. Puoi aprire più finestre contemporaneamente sing: comando "nome file". Certo, a volte apro più terminali per rendere la vita più facile.

  3. Potente evidenziazione della sintassi. Predefinito e altre cose. Inoltre, a differenza di alcuni IDE, se c'è una mancata corrispondenza tra parentesi graffe, stringhe o non corrispondono a quelli chiusi, fornisce un'indicazione molto chiara. È per le più lingue piuttosto che specifiche.

  4. È possibile eseguire la riga di comando utilizzando il comando ":!make" senza uscire dalla finestra.

  5. Percorri molto più velocemente in base alla parola, in base alla ricerca (tience regexp se sei disponibile) e puoi attraversare { in } utilizzando ESC %

  6. È possibile lavorare in GDB mentre si esegue il debugging di fasi e mantenendo vi (in un'altra finestra per lavorare sul codice). Quando decidi di cambiare il file, puoi rifarlo e ricaricarlo in GDB.

B. Molte cose la trovi migliore in VIM

  1. La ricerca e la sostituzione sono decisamente molto più potenti.

  2. Puoi creare il tuo look and feel personalizzato e (nero + verde come opsetto a bianco + blu) e, soprattutto, il tuo potente comando.

  3. Selezione blocco verticale. Prova ctrl+v e sposta il cursore verticalmente. Questa è davvero una funzionalità inimmaginabile!

  4. I suoni sono venuti, ma prova a tagliare / copiare un blocco e doverlo incollare 30 volte! Non ci vuole più sforzo di farlo 1 volta. Inoltre, prova a ripetere (non annullare) un'attività una o più volte.

  5. Indentazione automatica, controllo struttura a schede e modo automatico per convertire i commenti in commenti di blocco o commenti di uno stile particolare.

  6. Effettivo conflitto di unione con vimdiff.

  7. La cosa più importante con l'ambiente di lavoro basato su console è che non si tocca mai il MOUSE! quindi se sei veloce sulla tastiera, gli IDE non vanno bene.

  8. Lavora su più macchine, server contemporaneamente! Non sembra ovvio, ma a volte quando lavori sul server, accedi direttamente a più macchine e fai qualcosa.

Risponderà a come fare in vi se tali caratteristiche sono richieste seriamente. Vedi questo sito Vimcast . certo, ce ne sono molti.

Ma sì, la maggior parte delle cose basate su console è antiquata e in nessun modo sto dicendo nulla contro gli IDE.

    
risposta data 11.11.2011 - 07:09
fonte
4

A mio parere, Vim ti offre un editor molto strong con funzionalità di base, ma spetta a te arricchirlo con script / componenti aggiuntivi che probabilmente utilizzerai nei tuoi progetti. Questi saranno probabilmente diversi a seconda che si modifichi principalmente script, documentazione o file che devono essere compilati.

Ad esempio, utilizzo zencoding per la modifica occasionale di html / css, snipmate per snippet di tipo Textmate e un paio di add-on relativi a python ( pyflakes , pep8 , vimpdb , ecc.) per la codifica Python, che è quello che faccio più spesso.

Poi ci sono altri addon che non uso spesso, ma li trovo sempre utili ogni tanto, come Dpaste e ConqueTerm .

Tuttavia, per me, le funzionalità più utili di Vim sono built-in (annullamento basato sul tempo, navigazione rapida, filtri di intervallo, ecc.) - cose che non sono riuscito a trovare (o almeno non sono così facili- accesso) negli IDE. Quindi, una volta impostato il tuo Vim per avere i bit e le parti di un IDE di cui hai veramente bisogno ( snipmate , ctags ...) puoi ottenere il vantaggio sia dagli ambienti IDE che da quelli console.

Il mio uso di Vim è solo per console, quindi non posso dire quanto siano utili questi strumenti con Gvim.

Nonostante tutta la bontà dell'add, tuttavia, mi trovo ancora ad eseguire !grep ... o ^Z + find ... ogni tanto.

    
risposta data 11.11.2011 - 01:42
fonte
3

Faccio tutti i miei programmi in vim. In realtà lo trovo più facile di qualsiasi IDE che ho usato. È possibile aprire più file contemporaneamente, anche sullo stesso schermo (cercare schede e finestre). Di solito lavoro in X, quindi ho diversi (6) schermi di xterm aperti: uno per i file c in vim (diversi in schede), un altro per le intestazioni in vim (anche schede) e le finestre non-vim: build, debug , configurazione, ecc. Anche quando sono su una console pura, posso usare tab, windows e code folding per vedere cosa ho bisogno, e posso costruire, e persino visualizzare le manpage senza uscire da vim, basta conoscere il comandi giusti. E ce ne sono così tanti, sono sicuro di non averne nemmeno imparato la metà. Ed è difficile battere la ricerca e la sostituzione di vim.

    
risposta data 10.11.2011 - 23:26
fonte
1

Molte delle applicazioni su larga scala sono state (di mia, almeno, due;), e la mia ipotesi è che molte di più saranno scritte completamente in Vim. Gli IDE in quanto tali sono ancora una innovazione moderna , per così dire.

Tuttavia, plain vanilla vi (ahi) o Vim sono un po 'carenti. Conoscere Vim e pensare in alcuni dei suoi modi aiutare un po ', e i plugin aiutano molto , per cui www.vim.org è una fonte inesauribile di. Alcuni specifici per la lingua che stai utilizzando e alcuni generali (per i commenti, per la ricerca di file, per ...) trasformano rapidamente in un ambiente di sviluppo molto rapido. Dopo tutto (e alcuni sicuramente sosterranno) un IDE è solo un editor con plug-in compresso in un'interfaccia più gradevole. Non c'è molto materiale grafico in un IDE.

    
risposta data 11.11.2011 - 01:03
fonte

Leggi altre domande sui tag