Quali sono i migliori strumenti di programmazione generici per integrare Vim? [chiuso]


22

Sto usando Vim come editor di testo da un po 'di tempo e mi sento come se stessi facendo molta strada per fare qualsiasi cosa. Uso ctags per taggare la mia base di codice per la navigazione e uso grep (anche se in modo inefficiente) per trovare dove vengono utilizzati determinati metodi. Ma ho la sensazione che ci siano alcuni strumenti molto utili là fuori che non conosco che potrebbero rendermi più produttivo.

Qual è il miglior stack software che potrei usare per la programmazione generale che completerebbe Vim? Come si naviga in una base di codice, si esegue make, si inviano modifiche al sistema di controllo del codice sorgente, ecc.? Hai una seconda console aperta accanto a Vim?


2
Vim stesso. Forse non stai usando i plugin / script corretti per il lavoro. Dipende dal tipo di programmazione che stai facendo, quale lingua, quali altri strumenti ti servono e così via.
Bitek,

Non sto specificando alcuna lingua per non influenzare le risposte che riceverò. Non sto davvero cercando plugin Vim, anche se sono utili.
Louis Salin,

Ho trovato questa presentazione molto utile: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.

Ho reso questo un wiki della community. Mi sono reso conto che non esiste una risposta migliore alla mia domanda. Grazie a tutti per le vostre risposte!
Louis Salin,

Risposte:


8

Una grande caratteristica di vim è la facilità di integrazione con i comandi shell esistenti. Alcuni degli strumenti esterni più utili sono quelli inclusi nei coreutils e altri semplici strumenti di manipolazione del testo. Ad esempio, possiamo ottenere il numero di righe in un file con:

:! wc -l %

o il numero di parole:

:! wc -w %

Qualsiasi comando che funziona sulla shell funzionerà qui. Questo può essere fortemente combinato con il comando :read( :r) per inserire l'output del comando nel file. Per esempio:

:r !wc -l %

Inserirà il conteggio delle parole nel file che si sta modificando.

Un altro vantaggio è la sostituzione del testo che si sta modificando con l'output di uno di questi comandi. Ad esempio, è possibile formattare l'intero file pareseguendo il comando:

:% !par

5

Trovo NERDtree indispensabile per navigare attraverso la mia base di codice. Oltre a ciò, vale davvero la pena investire un po 'di tempo per diventare esperti nel muoversi nei buffer / finestre.


+1 per il riferimento a questo fantastico plugin. ( github.com/scrooloose/nerdtree )
noffle

4

Qualunque sia la tua lingua, ti consigliamo di utilizzare una funzione chiamata ctags che consente di esplorare le definizioni di origine. Ciò richiede uno strumento esterno per generare file TAGS utilizzati da VIM per rilevare le posizioni di varie definizioni di codice all'interno di un progetto.

Ottieni l' esuberante strumento ctags , funziona in molte lingue ed è molto semplice da usare.

da VIM :help ctags

ctags creerà un indice di tutti gli identificatori in un albero di origine. È quindi possibile utilizzare i comandi tag per spostarsi nell'albero dei sorgenti. vedi :help tag-commands. Il più semplice è posizionare il cursore su una parola chiave e premere CTRL- ]. Per tornare da dove vieni, premi CTRL-T

Oltre a ciò, potresti voler esaminare alcuni dei suggerimenti e dei miglioramenti di VIM discussi qui , è una discussione molto completa di alcune delle cose che si può fare per migliorare l'esperienza di un vimmer.


Ho menzionato nella mia domanda che stavo usando i tag, ma grazie comunque per la risposta! :)
Louis Salin

4

Vim è uno strumento molto potente, sono sicuro che lo sapete già tutti. Inizierai a ottenere un aumento della produttività usando vim entro un paio di settimane. Ma non saturerai mai la tua conoscenza di Vim. Quindi, io per primo sono sempre alla ricerca di modi nuovi ed efficienti di fare le cose in Vim. C'è un tizio di nome Derek Wyatt che ha realizzato alcuni fantastici screencast sull'uso di Vim e anche sui plugin che usa.

Alcuni dei plugin che utilizzo

  1. command-t Questo rende la navigazione dei file un gioco da ragazzi ed è molto intelligente .

    Il plug-in Command-T offre un meccanismo estremamente veloce e intuitivo per l'apertura di file con un numero minimo di sequenze di tasti. Si chiama "Command-T" perché è ispirato alla finestra "Vai al file" associata a Command-T in TextMate.

  2. fuzzyfinder Lo uso principalmente per buffer di broswer e cambio della directory corrente.

    FuzzyFinder offre comodi modi per raggiungere rapidamente il buffer / file / comando / segnalibro / tag desiderato. FuzzyFinder cerca con il modello fuzzy / parziale in cui ha convertito un modello inserito

  3. NERDTree Questo è il miglior plugin per browser di file per vim.

    L'albero NERD ti consente di esplorare il tuo filesystem e di aprire file e directory. Ti presenta il filesystem sotto forma di un albero che manipoli con la tastiera e / o il mouse. Inoltre, consente di eseguire semplici operazioni sul filesystem.

  4. XPTemplate Il miglior plugin di template al mondo.

    Motore di snippet di codice per Vim, con libreria di snippet. XPTemplate ti consente di scrivere codici in modo fluido, rapido e comodo.

  5. rails.vim Se fai roba dev roba, questo è indispensabile.

    TextMate potrebbe essere l'ultima mania per lo sviluppo di applicazioni Ruby on Rails, ma Vim è per sempre. Questo plugin offre le seguenti funzionalità per lo sviluppo di applicazioni Ruby on Rails.

  6. NerdCommenter Rende facile commentare qualsiasi tipo di codice.

E quelli sono solo alcuni dei plugin che uso, per scaricare tutti i plugin con il mio vimrc, dai un'occhiata ai miei dotfile


3

C'è un ottimo plugin per VIM che fa il controllo della sintassi Syntastic . Ci sono molti altri strumenti disponibili anche per la gestione dei file, la costruzione, ecc. Vai a IRC #vim su freenode.net, ci sono molte persone utili lì.


3

il mio preferito è cscope. Se hai compilato vim con il supporto cscope, puoi usare direttamente i comandi cscope da VIM. ad es. ricerca di file inclusi, funzioni chiamate dalla funzione xyz, ecc. L'ho provato con un repository di codice sorgente molto grande. Aiuta molto.

http://cscope.sourceforge.net/cscope_vim_tutorial.html


1

Se stai programmando in uno dei linguaggi supportati da GCC (C, C ++, Java, Fortran), Clewn è un ottimo plugin che integra il debugger GDB in VIM. In realtà l'ho trovata una delle migliori interfacce per GDB che esista.


0

Di solito organizzo una screensessione per ogni progetto. Vim è nella finestra 0 e uso la finestra 1 per una sessione di shell. Se sto codificando in una lingua che ha un REPL decente, di solito lo eseguo nella finestra 2. Naturalmente, non è necessario screenfarlo; potresti farlo con diverse finestre del terminale o con schede in un terminale multitab. Trovo screenche sia più stabile di altre alternative: se l'app del tuo terminale si arresta in modo anomalo, puoi semplicemente avviare un altro terminale e riconnetterti alla screensessione ancora in esecuzione . screenè anche molto veloce da navigare una volta appreso (proprio come vim stesso).

Alla fine finisco per usare la sessione della shell per complicate attività di controllo della versione come il rebasing o l'unione: cose più semplici possono essere fatte dalla riga di comando di vim (es. :!git commit % -m 'Added info aboutSchermo .') o usando il componente aggiuntivo fuggitivo . Trovo il fuggitivo :Gmove(rinominare il buffer corrente sia in vim che nell'indice git) e :Gdiff(invocare vimdiff sul buffer corrente con un punto precedente nella sua storia) particolarmente utile. Puoi anche eseguire operazioni come la creazione di un messaggio di commit in un buffer di memoria virtuale, la copia di testo da varie parti del codice e il commit con:%!git commit -F /dev/stdin

Userò anche la sessione della shell per i test funzionali / di integrazione se questo è applicabile a tutto ciò su cui sto lavorando, ad esempio se sto scrivendo un'utilità da riga di comando.

La funzionalità quickfix di Vim è utile per il debug, anche se sembra che ci sia un addon diverso richiesto per ogni lingua in cui potresti voler lavorare. Sembrano anche usare una varietà di tecniche di invocazione, mappatura su tasti funzione o sequenze di tasti che iniziano con \o ,, o ai comandi personalizzati, oppure invocando automaticamente quando viene salvato un buffer. Finora non mi sono preso la briga di darci un'occhiata, e ho appena letto i risultati del test unit o del lint in un buffer di memoria usando ad es :r !python -m doctest whatever.py. Modifica il codice, torna al buffer di memoria virtuale, uper annullare, quindi premi :re la freccia su (il più delle volte) per riavere quel comando. Ma potrebbe valere la pena cercare un addon per questo, a seconda della lingua in cui lavori.

Per i linguaggi compilati popolari come C, java, ecc., :makeFarà una build e il supporto per l'elenco quickfix è ben definito. Quindi puoi fare ciò :copenper visualizzare il buffer di aggiornamento rapido. Mostrerà un elenco di errori, uno per riga; colpire Entersu una linea salterà l'altra finestra a quel punto in quel file.

Se stai lavorando con più progetti contemporaneamente, puoi fare :lmakein modo che un elenco di errori sia memorizzato nell'elenco delle posizioni : questo è come l'elenco delle correzioni rapide ma è associato a una singola finestra anziché essere un singleton all'interno del tuo istanza vim. :lopenaprirà un elenco di posizioni per la finestra corrente.

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.