Funzionalità più utili di VIM che non sono standard in un IDE [chiuso]


30

Sto valutando se dovrei ricominciare a utilizzare VIM anziché un IDE. Quali sono le funzionalità più utili di VIM che non sono standard in un IDE?


3
Quale IDE usi? Molti IDE hanno plug-in VIM, quindi puoi modificarli come se stessi usando VIM.
Brian R. Bondy,

2
@Brian: Sicuramente non hanno emulato tutte le funzionalità avanzate?
Casebash,

1
Probabilmente non tutti, ma quelli che ho usato sono fantastici per VS. Ce ne sono almeno 2. viemu.com e github.com/jaredpar/VsVim
Brian R. Bondy,

2
@Brian R Bondy: nessuno di loro si avvicina nemmeno a coprire tutte le funzionalità di Vim.
Grattano

2
Oppure potresti essere davvero sensibile e iniziare a usare emacsinvece. ;-)
Orbling

Risposte:


32

Non penso che siano necessariamente le funzionalità avanzate di VIM a renderlo così potente. È il fatto che non devi mai togliere le mani dalla tastiera per fare qualcosa. Trovare qualcosa in un file enorme è semplice come un paio di battiture. Anche l'apertura e la chiusura di più file nella stessa finestra è incredibilmente veloce.

Anche se all'inizio non può sembrare intuitivo, vale la pena dedicare del tempo. Anche se non lo usi come IDE standard (utilizzo generalmente Visual Studio o Eclipse, ad esempio), ti troverai ad usare VIM per aprire e modificare rapidamente i file perché diventa molto più veloce dell'attesa dell'IDE per caricare.

Investi il ​​tempo per imparare a usare bene VIM e non te ne pentirai mai. Direi che è paragonabile all'apprendimento del tipo di tocco.


3
Questa risposta è probabilmente la funzione più utile per Vim, è anche una delle uniche. Tutto ciò che è programmato per Vim può essere facilmente applicato anche agli IDE, dopo tutto è solo l'elaborazione del testo ...
Tamara Wijsman,

4
+1 Mentre sono un devoto emacs, si applica lo stesso argomento. Gli IDE moderni sono troppo "grafici" per gli editor di testo .
Orbling

22

Per me il :globalcomando è un'app killer. Eseguirà comandi vim arbitrari su qualsiasi riga che corrisponda (o non corrisponda) a una regex.

Ecco alcuni esempi:

Il comportamento predefinito è elencare ogni riga corrispondente, quindi:

:g/TODO:/

elencherà ogni riga che contiene il testo "TODO:"

cambia 'Topolino' in 'Minnie' su qualsiasi riga che contenga anche la parola 'Mouse'

:g/Mouse/ s/Mickey/Minnie/

I comandi possono avere un proprio intervallo, quindi questo eliminerà da ogni riga con "TODO:" alla successiva riga vuota:

: g / TODO: /., / ^ $ / d

Usa: g! eseguire su ogni riga che NON corrisponde al regex, ad esempio per sostituire "emacs" con "vim" tranne che per le righe che contengono la parola "sucks":

:g!/sucks/ s/emacs/vim/

Grandi trucchi con comando globale! Non avevo mai pensato di usarli in quel modo.
Xavier T.

Eclipse supporta la ricerca regex di file, sia come singoli file, progetti o tra progetti nella stessa area di lavoro. Anche la sostituzione di Regex è supportata in una certa misura, ma credo che vim abbia una capacità regex molto più potente.
Thomas Owens

16

Trovo incredibilmente utile la possibilità di eliminare tutto tra una serie di simboli associati. Ad esempio, abbastanza spesso, mi ritroverò a voler sostituire una stringa nel codice. Quindi, di"mentre il cursore si trova nel blocco eliminerà la stringa, mantenendo ""intatto, e posizionerà il cursore tra i due caratteri di virgoletta. da"fa la stessa cosa, ma elimina anche i caratteri di citazione.


12
Ancora meglio, ci"elimina e mette il cursore in modalità inserimento in modo da poter iniziare immediatamente a scrivere.
Konrad Rudolph,

9

"Completamento parola chiave modalità di inserimento". Ctrl-P e Ctrl-N in modalità inserimento per cercare nel testo per provare a completare il nome della variabile che si sta digitando. Non l'ho mai visto in nessun altro IDE e mi manca davvero. Il completamento del codice negli IDE non è lo stesso.


2
Se lo desideri, hai anche il completamento del codice corretto , usando omni-complete. ^X^Oomni-completa in modalità inserimento, se è stata abilitata. Ma hai ragione, mi trovo a utilizzare il completamento delle parole chiave molto più che omni-complete.
Chinmay Kanchi,

@Chinmay: penso che tu abbia il significato di "proprio" all'indietro. Il corretto completamento del codice completa qualsiasi cosa utilizzando il principio di località, anche se si sta scrivendo testo anziché codice.
ninjalj,

SlickEdit ha una funzione simile; ed è molto simile a IDE
user281377

8
Non sono completamente d'accordo. Gli IDE moderni (Visual Studio, Eclipse, ...) hanno una sorta di completamento del codice che rivaleggia (e in effetti supera!) Ctrl-N facilmente . Se non l'hai visto negli IDE, guarda di nuovo le versioni correnti. E Omni-Complete purtroppo non funziona correttamente.
Konrad Rudolph,

8

Un'altra caratteristica che trovo incredibilmente utile è la possibilità di modificare il rientro. :15,30>>fa rientrare tutte le righe da 15-30 (incluso) due volte, mentre :15,30<<disindenta due volte le stesse righe.


Mentre adoro la funzionalità, praticamente ogni IDE ha rientri di blocco (e deduzioni).
Sean McMillan,

Trovo =di essere altrettanto utile, se non di più, di <<e >>.
Greyfade,

6

il comando dd (elimina la riga corrente). Lo uso così tanto.

Inoltre, essere in grado di digitare qualcosa come 3dd ed eliminare le 3 righe successive è meraviglioso. Non l'ho mai visto in un altro editor = D


Netbeans ha quasi questo, ^ X senza selezione taglierà la linea corrente.
Alan Pearce,

@Alan: No, NetBeans ha jVi :)
dr Hannibal Lecter,

^ K cancella la linea e ^ u3 ^ k eliminerebbe 3 linee in emacs. shift-delete fa lo stesso in Visual Studio.
Raoul,

Alan: dd taglia anche la linea corrente in quel senso che può essere inserita con p in seguito
user281377

3
@Raoul, sappiamo che esiste una serie emacs di n combinazioni di 3 tasti per replicare ogni comando vim - tuttavia, 3dd è poesia.
cbrandolino,

6

Il ccomando. Ad esempio, ci"per modificare le virgolette. cwper cambiare parola. Molti trucchi pratici con esso.



3

Esc ! }sposterà il paragrafo corrente su un filtro della riga di comando come fmto wco whiche restituirà i risultati all'editor.


3

Accesso rapido alla riga di comando. CTRL + Z o: wqa mi porterà una riga di comando in meno di 1 secondo senza che la mia mano lasci la tastiera.


1
+1 L'ultimo pezzettino è la sezione cruciale per praticamente tutti i vantaggi: senza che la mia mano lasci la tastiera
Orbling

... Or :!/bin/bash. Uso :!abbastanza frequentemente.
Greyfade,

Di solito uso:sh
David Brown,

3

Che posso usare hjklper spostare il cursore senza dover lasciare la homerow della tastiera. Ho la maggior parte dei programmi (come i lettori PDF), che ti permettono di cambiare le combinazioni di tasti, impostato per usare i tasti di movimento Vim per lo scorrimento, ecc.


1

È piuttosto difficile rispondere, a causa in qualche modo della vaghezza della domanda e in parte del fatto che gli IDE differiscono e molti forniscono funzionalità che altri non hanno (e il fatto che ne ho solo alcuni).

Tuttavia, ciò che credo distingue Vim dagli altri editor (sì, anche Emacs, su questo) è che è davvero un grande editor . Con il passare del tempo, ho usato molti editor e posso dire onestamente che pochissimi hanno un set così completo di funzionalità per manipolare il testo, come fa Vim.

Il mio stile di manipolazione del testo, ad esempio, include molto spesso l'uso della duplicazione (riga / selezione di più righe) e lo spostamento (riga / selezione di più righe) su e giù, per cui ho definito da tempo scorciatoie rapide. Mi mancano quelle funzionalità nella maggior parte degli IDE (anche se ho sentito che ReSharper per VS ha qualcosa di simile).


1

Sapevi che esiste un plug-in vi per eclipse ? Il costo è di 15 euro (20ish US $), ma è così vale la pena. Non più ddnel mezzo di un documento e manca tutte le piccole cose utili.

Forse un po 'fuori tema ma ho pensato che valesse la pena sottolineare.


0

A seconda del linguaggio che stai programmando, mantieni l'ideo o ottieni l'ide che offre il maggior numero di refactoring che puoi trovare, ottieni un aiuto per Visual Studio se stai facendo c #, intellij per Java o Visual Assist per Visual Studio, massimizzare i refactoring in eclissi o netbeans.

Dovremmo passare dalla manipolazione del testo alla manipolazione del codice, gli strumenti di refactoring ti offrono questa capacità. Se vim ti offre tutte le funzionalità, io per primo non voglio più occuparmi di un editor di testo


3
Questa è praticamente una sciocchezza. Sì, il refactoring è uno strumento importante, ma il codice non si scrive da solo. Un buon editor di testo contribuisce molto più alla produttività di un programmatore che a un buon strumento di refactoring.
Chinmay Kanchi,

-1

Selezione colonna tabella

Questo non sembra essere negli IDE popolari, e se lo è lo tengono ben nascosto. Questo è davvero utile per testare regex su una colonna nel file di dati CSV.


-3

La maggior parte degli IDE non consente di dividere lo schermo. Adoro quella funzione in VIM.


5
La maggior parte degli IDE no? Penso che in realtà lo facciano, almeno quelli che ho usato.
Anto,

Puoi fare qualche esempio?
projecktzero,

1
La maggior parte degli IDE gestisce la divisione dello schermo in modo diverso rispetto a Vim / Emacs. Lo fanno con le schede di solito. Questi sono più difficili / impossibili da manipolare con la tastiera (confronta con 50 file aperti in Emacs rispetto a 50 file aperti in Eclipse e vedrai rapidamente vincere Emacs).
jsternberg,

La maggior parte degli IDE che hanno schermo diviso non forniscono metodi facili per navigare / regolare a-la<C-w>
Wayne Werner,
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.