2010-07-16 12 views
16

Ho sentito che ci vogliono 30 giorni minimo per sentirsi a proprio agio con vi. Sono il giorno 2 hehe. In questo momento, mi sembra di essere semplicemente memorizzando scorciatoie diverse per cose che ho già fatto in Visual Studio (ricerca incrementale, prev/next word, ecc.).Cosa posso fare in VIM che non posso già fare in Visual Studio?

Finora l'aspetto più potente sembra essere rappresentato dai tasti numerici combinati con i comandi (5 * riga successiva) e l'idea delle modalità normale/inserimento.

Ci sono alcune cose che mi mancano da Visual Studio. Fare clic tenendo premuto il tasto Ctrl per copiare e incollare rapidamente è probabilmente il più grande.

In modo che non mi scoraggi, potete dirmi voi alcune cose in vi che regolarmente non è possibile fare in Visual Studio? Mi aiuterà a concentrarmi su cosa imparare e mi aiuterà a sviluppare abitudini migliori.

+9

obbligatorio http://imgs.xkcd.com/comics/real_programmers.png –

+0

@brad DAMNIT EMACS !!! – Incognito

+1

Solo per essere snarky ... Ho sempre perso l'x-mouse su Windows ... anche un Ctrl-clic è troppo movimento per quella funzionalità. – Zoe

risposta

2

Le espressioni regolari di Visual Studio sono un po 'Topolino. Vim ha il pieno linguaggio di espressione regolare POSIX a portata di mano.

+1

Vero, ma non riesco a ricordare l'ultima volta che avevo bisogno di un'espressione regolare POSIX completa (durante la codifica comunque). –

+2

@unclebrad, io uso la ricerca regex letteralmente più volte al giorno. –

+1

@JSB Stavo solo dicendo che vado avanti con le espressioni regolari di Topolino. –

17

Mi limiterò a lasciare un collegamento a this SO answer qui.

+8

La SO collegata è una delle glorie principali di questo sito. Offre solo un'introduzione a una piccola parte di vi (non solo vim, solo l'originale di 30 anni vi), eppure ogni frase rivela più capacità rispetto alla maggior parte degli IDE. Quando si combina il potere intrinseco di vi con le estensioni ei plug-in disponibili (Intellisense? Sì, è così), si arriva a quello che è ancora uno degli ambienti di sviluppo più potenti e potenti di sempre. – Zoe

+0

hhaha massive .. Leggerò sicuramente questo e commenterò qui di seguito. – djmc

+0

C'è un componente aggiuntivo di Visual Studio chiamato VsVim che consente a gran parte delle funzionalità di VIM di essere disponibile in Visual Studio .... quindi sotto questo aspetto, la risposta è "quasi nulla"! Vedi http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329 o usa "Strumenti -> Estensioni e aggiornamenti" in Visual Studio e cerca VsVim. – CJBS

10

VI significa non dover mai staccare le dita dalla tastiera.

+1

è vero .. Odio lavorare su computer portatili o computer diversi e mi occupo delle incongruenze di dove sono i tasti Home, End e Page. Il mouse è un po 'seccante, ma finora mi fa risparmiare tempo perchè posso cliccare con precisione sulla pagina molto velocemente. e il mio pollice sul mio portatile lascia ancora le mie mani sulla tastiera. – djmc

+0

Questo è * il * motivo per cui non posso allontanarmi da vim (e perché preferisco vim a emacs). –

+0

Quindi, se manchi Ctrl + Clic, prova solo a conoscere il registro (copia/incolla) o (se non ti piace) non usare vim. – Umang

2

Usa schermo per mantenere una sessione in esecuzione su una macchina remota si accede tramite ssh

+0

hhehe I love screen – djmc

1

Per quanto posso dire (in Visual C# Express 2010) Ctrl-clic seleziona solo ciò che la parola si fa clic su. Per fare lo stesso in VIM, puoi combinare il comando dello yank con un comando di movimento.

Quindi si preme "y" per yank (copia) quindi "e" o "w" per copiare alla fine della parola.

+2

Oppure "aw"/"iw" (che sta per "una parola" e "inner word") se sei nel mezzo della parola. – dmedvinsky

+1

Avrei dovuto chiarire questo .. Mi riferivo alla possibilità di spostare rapidamente il mouse mentre ctrl-clic su tutto lo schermo. Come posso usare una tastiera per copiare e incollare 5 volte quando le parole sono sparse su tutto lo schermo? Uso il mio mouse e la mia visione per indirizzare tutte le parole che voglio sostituire. Esiste un modo più efficiente per farlo in VI? – djmc

+2

@djmc - Sei serio? Quell'esempio è solo una flagrante mousterbation. Se trascorri la giornata freneticamente facendo clic tenendo premuto il tasto Ctrl su tutto lo schermo, non hai bisogno di vi. Hai bisogno di una qualifica. :-) –

0

Vim Essentials è un bel set di diapositive.

Personalmente, mi sono abituato a vi molto tempo fa, quando non avevamo il lusso di un mouse nei terminali Unix degli studenti. Da allora, ho usato vi/vim per tutto sicuro per la scrittura di e-mail.

Fino ad oggi, probabilmente uso solo 1/20 dei comandi, ma non ho mai sentito la necessità di scrivere codice con un altro editor di testo e il raggiungimento di un mouse in un IDE mi sembra molto maldestro.

L'utilizzo di linguaggi espressivi e di alto livello, che non richiedono un IDE (principalmente python, sql, javascript) aiuta molto. Suppongo che non sarebbe così facile con Java o C++.

Non dover spostare e puntare con il mouse durante la codifica (sicuro per l'utilizzo del browser) aiuta anche a prevenire la sindrome del tunnel carpale.

BTW, suppongo Vim si integra meglio con Unix rispetto a Windows ... e chi ha detto che 30 minuti era un po 'ottimista :)

+0

grazie per il link. se non si utilizza un IDE, posso sicuramente vedere come VI sarebbe molto molto potente. Tuttavia, stavo formulando la domanda da un punto di vista del mouse IDE +. In che modo VI migliora questa esperienza? – djmc

+0

Non lo so :) E 'passato molto tempo dall'ultima volta che ho usato un IDE. Ma se vuoi il meglio di entrambi i mondi, http://www.viemu.com/ tratta dell'emulazione di vi _inside_ visual studio. È un prodotto commerciale con una prova di 30 giorni. Per me è soprattutto la velocità ... alla ricerca della prossima occorrenza della parola sotto il cursore? Stampa '*'. Incremento del numero sotto il cursore? Ctrl-A. E così via. –

+0

sì è vero .. viemu, si spera, sarebbe il meglio di entrambi i mondi. Sembra che siano ancora in beta per vs2k10 ma gli darò comunque uno scatto tonite .. Penso che lo studio visivo possa fare un sacco di cose che può anche fare. trova la parola successiva è ctrl-f3. Non sono sicuro che esista un equivalente per incrementare i numeri per il momento. Immagino sia utile se hai bisogno di cambiare il valore iniziale di un indicizzatore di loop ffor? – djmc

5

Modificare un file su una macchina Solaris che permette solo l'accesso SSH.

1

Ci sono molte differenze.

  • Block (e colonna) saggio copiare, incollare, modificare
  • il comando dot!(Dopo il nastro d'anatra il secondo strumento più potente del pianeta, sul serio)

io suggerisco di guardare alcuni screencast in http://vimcasts.org/ per avere un'idea della potenza di vim.

esempio:

+0

grazie. Daro 'uno sguardo a questi screencast quando torno a casa. – djmc

+0

Operazioni di blocco sono disponibili se si tiene premuto ALT e quindi si trascina –

4

Questo articolo è ciò che mi ha iniziato a Vim, e non ho mai guardato indietro:

http://www.viemu.com/a-why-vi-vim.html

Ha alcuni grandi esempi su Vim's energia.

+1

che l'articolo è molto stimolante. L'ho letto mentre cercavo su google anche su – djmc

0

Modificare i documenti su SSH. Vim è davvero carino per quello.

Edit: si presenta come un sacco di persone hanno già detto che :)

-1

Teco è la vostra risposta. Hai solo bisogno di un PDP-10 e un ASR-33 e sei sulla buona strada!

1

È sempre possibile utilizzare l'emulatore Vim/add-on per Visual Studio e ottenere un po 'della potenza di vim unita alle funzionalità di VS. Se stai già utilizzando Visual Studio, presumo che tu stia utilizzando un linguaggio .NET, che senza VS sarebbe molto più doloroso da utilizzare.

+0

. Sto pensando di installare Viemu. Dato che anche tu sei uno sviluppatore .NET, quali scorciatoie o comportamenti ti trovi nell'emulatore di vim che non puoi fare in Visual Studio? – djmc

5

Si noti che non utilizzo Visual Studio e conosco poco le funzioni disponibili al suo interno. Di seguito sono riportati alcuni esempi di ciò che trovo utile in Vim, non un elenco di funzionalità mancanti in Visual Studio.

Macro

E 'facile creare macro per operazioni complesse (ma ripetitivi). Per illustrare con un semplice esempio, diciamo che si parte con:

Line1
Line2
Line3
Line4
Line5

Ora vogliamo avvolgere ogni linea in una dichiarazione print("");.
Posizionare il cursore sulla prima riga, e immettere:

  • qx per avviare la registrazione di una macro al registro x
  • Maiusc + hoprint("Esc       per inserire il testo in l'inizio della riga
  • Shift + Un");Esc                       per aggiungere testo alla fine della riga
  • j per andare verso il basso di una riga
  • q per interrompere la registrazione della macro
  • [email protected] a eseguire la macro nel registro x 4 volte

Vedere :help complex-repeat per ulteriori informazioni sui macro Vim. Oggetti

Testo

Si noti che questo è uno dei miglioramenti Vim ha rispetto alla tradizionale Vi. Se non funziona, probabilmente stai correndo in modalità di compatibilità Vi; utilizzare :set nocompatible per abilitare la piena funzionalità di Vim.

Gli oggetti di testo consentono di selezionare facilmente le regioni di testo. Diciamo che si parte con il seguente testo, e posizionare il cursore sulla del testo:

<b><i>some text</i></b>

Ora vogliamo eliminare tutto tra <i> e </i>. Questo può essere fatto semplicemente digitando il comando dit (d 'elete i' nner t 'ag)! O se vogliamo includere gli stessi tag della nostra selezione, utilizzare dat (d 'elete un   t' ag). Per cancellare tutto dentro le <b> tag, utilizzare d2it (d 'elete due   i' NNER t 'AGS).

È possibile utilizzare in modo simile daw (cancellare una parola), dap (eliminare un paragrafo), di" (eliminare all'interno virgolette doppie), ecc; vedi :help text-objects per l'elenco completo.

altro esempio utile di oggetti di testo:

v2ap"+y

  • v alterna modo visivo. Questo rende più facile vedere cosa stai selezionando e ti consente di regolare la selezione con una serie di più movimenti prima di eseguire un comando.
  • 2ap seleziona questo paragrafo e il successivo
  • "+ seleziona clipboard sistema registro per la successiva operazione
  • y yankee la selezione alla proposta registro

In altre parole, il comando sarebbe copiare due paragrafi dal tuo testo negli appunti di sistema (ad esempio per incollarli qui su StackOverflow).

Modifica globale
Il comando global è usato per applicare un comando Ex a tutte le linee corrispondenti a una data espressione regolare. Esempi:

  • :global/test/print o :g/test/p sarebbe stampare tutte le linee che contengono la frase prova
  • :global/test/delete o :g/test/d cancellerebbe dette linee
  • :global/test/substitute/^/#/ o :g/test/s/^/#/ sarebbe cercare linee che contengono la frase prova, e commentare eliminarli sostituendo l'ancoraggio regexp ^ (inizio riga) con il simbolo #.

Si può anche fare un po 'di roba fresca facendo passare i movimenti di ricerca /pattern o ?pattern come intervalli:

  • :?test?move . ricerca all'indietro per una linea contenente prova, e lo sposta alla posizione corrente nel presentare
  • :/test/copy . ricerca in avanti per una riga contenente prova, e lo copia alla posizione corrente nel file

Buona fortuna e buon divertimento imparando Vim!

Problemi correlati