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


17

Sto iniziando a imparare Vim, e seguendo alcuni dei consigli forniti qui in stackexchange. Sto cominciando a usarlo in alcuni progetti di giocattoli e mi sta bene.
Ma ho iniziato a chiedermi come puoi essere produttivo senza aprire sempre altri file solo per sapere come va il nome di quella classe, cos'è quella macro inclusa in altri file, ecc. Ecc.

Quali sono i consigli comuni che puoi dare?


1
Avrai sicuramente bisogno di aggiungere alcuni script Vim per dare una mano. Uso Vim per programmare molto e utilizzo sempre i tag per aiutarmi a navigare nel codice sorgente. Che lingua stanno usando?
tehnyit,

Risposte:


10

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

Nel mondo Unix / Linux, come vim, uno strumento utilizzato se ctagso la popolare implementazione Open Source in più lingue, tag esuberanti . Non èvim specifico ed è supportato da numerosi editor di testo Unix, Linux, MS Windows, Mac OS, tra cui Emacs, CRiSP, vile e numerosi 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 decomposizione ponderata, l'organizzazione di progetti più grandi rende il progetto gestibile in quanto ci sono solo 1-2 posti potenziali ovvi in ​​cui cercare un dato bit di informazioni ( typedefoclass definizioni, ecc.).

Inoltre utilizzo più istanze di vim (spesso tramite viewper la visualizzazione di sola lettura dei file di origine), nonché un uso limitato di più buffer di modifica per istanza di vim (principalmente per spostare o refactoring tra i file). Trovo che usare solo pochi file sorgente aperti alla volta possa aiutare a modo suo, per tenermi concentrato sul compito da svolgere.


1
+1 per aver suggerito tag esuberanti !
Attila O.

1
Trovo che essere organizzati sia di grande aiuto. Se riesci a guardare un artefatto nella fonte e dire "Oh, questo deve essere definito in questo posto", le cose diventano molto più semplici. Il lato positivo è che l'avvio di sessioni VIM è così veloce che avere una mezza dozzina aperta contemporaneamente diventa una cosa abbastanza normale
Zachary K

@ZacharyK Half dozen? Di solito ne ho una dozzina alla fine della giornata
Izkata,

dipende dal giorno
Zachary K,

7

Non intendo far parte del dibattito VIM vs. IDE. Immagino sia un pref personale. Ma io uso un sacco di VIM ed ecco perché trovo molto potente usare Vim

Due parti della risposta:

R. La maggior parte delle cose che 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 vi un limite)

  1. puoi attraversare i prototipi se hai ctagsabilitato e faictrl+{

  2. È possibile aprire più finestre contemporaneamente cantando: sp comando 'nomefile'. 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, in caso di mancata corrispondenza tra parentesi graffe aperte, stringa o non corrispondenza con quelle chiuse, si ottiene un'indicazione molto chiara. È per la maggior parte delle lingue piuttosto che specifiche.

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

  5. Attraversa molto più velocemente in base a Word, in base alla ricerca (vi supporta regexp se sei disponibile) e puoi attraversare { to } usandoESC %

  6. È possibile lavorare in GDB mentre si esegue il debug dei passaggi e si mantiene vi (in un'altra finestra per lavorare sul codice). Quando decidi di modificare il file, puoi crearlo nuovamente e ricaricarlo in GDB.

B. Molte cose lo trovi meglio in VIM

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

  2. Puoi creare il tuo look and feel personalizzato (nero + verde al contrario di bianco + blu) e, soprattutto, il tuo potente comando.

  3. Selezione blocco verticale. Prova a ctrl+vspostare il cursore in verticale. Questa è davvero una caratteristica inimmaginabile!

  4. Sembra storto - ma cerca di tagliare / copiare un blocco e doverlo oltrepassare 30 volte! Non ci vuole più sforzo che farlo 1 volta. Inoltre, prova a ripetere (non annullare) un'attività una o più volte.

  5. Rientro automatico, controllo tabulazione e modo automatizzato per convertire i tuoi commenti in commenti a blocchi o commenti di uno stile particolare.

  6. Conflitto di unione efficace con vimdiff.

  7. La cosa più importante con l'ambiente di lavoro basato su console è che non tocchi mai 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 cose.

Risponderà su come fare in vi se quelle funzionalità sono richieste seriamente. Vedi questo sito Vimcast . ovviamente ce ne sono molti.

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


Piccola nota: vim ha un :makecomando integrato, non è nemmeno necessario il !(che, per coloro che non usano vim, esegue un comando sul terminale). E l'ho appena trovato ctrl-vun paio di settimane fa e ora lo uso costantemente, è incredibilmente utile.
Kevin,

@Kevin - ok non sapevo di <code>: make </code>! Questo è stato eccitante da sapere. Questo è un tipo di romanticismo che si ottiene con VIM - non si può mai fare un elenco completo delle funzionalità che VIM può mai lasciarti fare !! Ti sorprende sempre. Grazie.
Dipan Mehta,

Sì, è fantastico. Il vantaggio :makeè che ti porta automaticamente al primo errore e puoi navigare con cne cp, vedi :help make. In realtà non me ne sono reso conto fino a quando non ho cercato; Di solito faccio una finestra diversa e pwd, sembra che tu debba trovarti nello stesso file del Makefile, anche se potresti metterne uno nella directory src solo per passare al root e farlo lì.
Kevin,

4

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

Ad esempio, uso zencodingper la modifica occasionale html / css, snipmateper frammenti simili a Textmate e un paio di componenti aggiuntivi relativi a Python (pyflakes , pep8,vimpdb , etc.) per la codifica Python, che è quello che faccio più spesso.

Poi ci sono altri componenti aggiuntivi che non uso spesso, ma li trovo ancora utili ogni tanto, come Dpaste eConqueTerm .

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

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

Nonostante tutta la bontà del componente aggiuntivo, tuttavia, mi trovo ancora a correre !grep ...o di ^Z + find ...tanto in tanto.


3

Faccio tutta la mia programmazione in vim. In realtà lo trovo più facile di qualsiasi IDE che ho usato. Puoi avere più file aperti contemporaneamente, anche sulla stessa schermata (cerca schede e finestre). Di solito lavoro in X, quindi ho diverse (6) schermate xterm aperte: una per i file c in vim (diverse schede), un'altra per le intestazioni in vim (anche schede) e finestre non-vim: build, debug , configurazione, ecc. Anche quando sono su una console pura, posso usare le schede, le finestre e la piegatura del codice per vedere di cosa ho bisogno, e posso costruire e persino visualizzare le manpage senza uscire da VIM, devi solo conoscere il comandi giusti. E ce ne sono così tanti, sono sicuro di non averne nemmeno padroneggiato la metà. Ed è difficile battere la ricerca e la sostituzione di Vim.


1

Molte applicazioni su larga scala sono state (delle mie, almeno due;) e, suppongo, molte altre saranno scritte completamente in Vim. Gli IDE in quanto tali sono ancora un'innovazione piuttosto moderna , per così dire.

Tuttavia, la semplice vaniglia vi (ahi) o Vim sono un po 'carenti. Conoscere Vim e pensare in alcuni modi aiuta un po ', e i plugin aiutano molto , per i quali www.vim.org è una fonte infinita di. Alcuni specifici per la lingua che stai utilizzando e altri generali (per commentare, per la ricerca di file, per ...) lo trasformano rapidamente in un ambiente di sviluppo molto rapido. Dopotutto (e alcuni sosterranno sicuramente) un IDE è solo un editor con plugin inseriti in un'interfaccia più gradevole. Non ci sono nemmeno molte cose grafiche in un IDE.

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.