Die nützlichsten Funktionen von VIM, die in einer IDE nicht Standard sind [closed]

30

Ich überlege, ob ich VIM anstelle einer IDE wieder verwenden soll. Was sind die nützlichsten Funktionen von VIM, die in einer IDE nicht Standard sind?

Casebash
quelle
3
Welche IDE benutzt du? Viele IDEs verfügen über VIM-Plug-ins, sodass Sie sie bearbeiten können, als ob Sie VIM verwenden würden.
Brian R. Bondy
2
@ Brian: Sicherlich haben sie nicht alle erweiterten Funktionen emuliert?
Casebash
1
Wahrscheinlich sind nicht alle, außer denen, die ich verwendet habe, großartig für VS. Es gibt mindestens 2 von ihnen. viemu.com und github.com/jaredpar/VsVim
Brian R. Bondy
2
@Brian R Bondy: Keiner von ihnen deckt annähernd alle Funktionen von vim ab. Sie kratzen an der Oberfläche und machen eigentlich nichts mehr
Daenyth
2
Oder Sie könnten wirklich vernünftig sein und emacsstattdessen anfangen zu verwenden . ;-)
Orbling

Antworten:

32

Ich denke nicht, dass es unbedingt die erweiterten Funktionen von VIM sind, die es so leistungsfähig machen. Es ist die Tatsache, dass Sie nie die Hände von der Tastatur nehmen müssen, um etwas zu tun. Das Auffinden eines Objekts in einer riesigen Datei ist so einfach wie ein paar Tastatureingaben. Das Öffnen und Schließen mehrerer Dateien im selben Fenster ist ebenfalls unglaublich schnell.

Obwohl es auf den ersten Blick nicht intuitiv zu sein scheint, ist es Ihre Zeit wert. Auch wenn Sie es nicht als Standard-IDE verwenden (ich verwende im Allgemeinen beispielsweise Visual Studio oder Eclipse), können Sie VIM zum schnellen Öffnen und Bearbeiten von Dateien verwenden, da es viel schneller ist als das Warten auf die IDE Belastung.

Investieren Sie die Zeit, um zu lernen, wie man VIM richtig einsetzt und Sie werden es nie bereuen. Ich würde sagen, es ist vergleichbar mit dem Erlernen des Berührens.

Bryan Hales
quelle
3
Diese Antwort ist wahrscheinlich die nützlichste Funktion für Vim und auch eine der wenigen. Alles, was für Vim programmiert ist, kann auch problemlos auf IDEs angewendet werden, es ist schließlich nur Textverarbeitung ...
Tamara Wijsman
4
+1 Während ich ein Emacs-Anhänger bin, gilt das gleiche Argument. Die modernen IDEs sind für Texteditoren viel zu "grafisch" .
Orbling
22

Für mich ist das :globalKommando eine Killer-App. Es führt beliebige vim-Befehle in jeder Zeile aus, die mit einem regulären Ausdruck übereinstimmt (oder nicht übereinstimmt).

Hier sind einige Beispiele:

Das Standardverhalten besteht darin, jede übereinstimmende Zeile aufzulisten.

:g/TODO:/

listet jede Zeile auf, die den Text "TODO:" enthält

Ändere 'Mickey' in 'Minnie' in jeder Zeile, die auch das Wort 'Mouse' enthält

:g/Mouse/ s/Mickey/Minnie/

Die Befehle können einen eigenen Bereich haben, daher wird dieser von jeder Zeile mit "TODO:" zur nächsten leeren Zeile gelöscht:

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

Verwenden Sie: g! in jeder Zeile ausführen, die NICHT mit dem regulären Ausdruck übereinstimmt, z. B. "emacs" durch "vim" ersetzen, außer in Zeilen, die das Wort "sucks" enthalten:

:g!/sucks/ s/emacs/vim/
Dave Kirby
quelle
Großartige Tricks mit globalem Befehl! Ich hätte nie gedacht, sie so zu benutzen.
Xavier T.
Eclipse unterstützt die reguläre Suche nach Dateien, entweder als einzelne Dateien, Projekte oder projektübergreifend im selben Arbeitsbereich. Regex Replace wird in gewissem Umfang auch unterstützt, aber ich glaube, Vim hat eine viel leistungsfähigere Regex-Fähigkeit.
Thomas Owens
16

Ich finde die Möglichkeit, alles zwischen einer Reihe gepaarter Symbole zu löschen, unglaublich nützlich. Zum Beispiel werde ich ziemlich oft feststellen, dass ich eine Zeichenfolge im Code ersetzen möchte. Wenn sich di"der Cursor im Block befindet, wird die Zeichenfolge gelöscht, wobei ""der Cursor zwischen die beiden Anführungszeichen gesetzt wird. da"tut dasselbe, löscht aber auch die Anführungszeichen.

Chinmay Kanchi
quelle
12
Noch besser, ci"löscht und versetzt den Cursor in den Einfügemodus, sodass Sie sofort mit dem Schreiben beginnen können.
Konrad Rudolph
9

'Keyword-Vervollständigung im Einfügemodus'. Strg-P ​​und Strg-N im Einfügemodus, um den Text zu durchsuchen und den eingegebenen Variablennamen zu vervollständigen. Ich habe das noch nie in einer anderen IDE gesehen und ich vermisse es wirklich. Die Code-Vervollständigung in IDEs ist einfach nicht dasselbe.

Lang Sharpe
quelle
2
Sie haben auch die richtige Code - Vervollständigung , wenn Sie wollen, mit omni-vollständig. ^X^Oomni-completes im Einfügemodus, wenn Sie es aktiviert haben. Aber Sie haben Recht, ich verwende die Keyword-Vervollständigung weit mehr als nur omni-complete.
Chinmay Kanchi
@Chinmay: Ich denke du hast die Bedeutung von "richtig" rückwärts. Die ordnungsgemäße Vervollständigung des Codes vervollständigt alles nach dem Prinzip der Lokalität, auch wenn Sie anstelle von Code Text schreiben.
Ninjalj
SlickEdit hat eine ähnliche Funktion; und es ist sehr IDE-like
user281377
8
Ich stimme überhaupt nicht zu. Moderner IDEs (Visual Studio, Eclipse, ...) eine Art Code - Vervollständigung hat , dass Rivalen (und in der Tat übertrifft!) Strg-N leicht . Wenn Sie dies in IDEs nicht gesehen haben, schauen Sie sich die aktuellen Versionen noch einmal an. Und Omni-Complete funktioniert leider nicht richtig.
Konrad Rudolph
8

Ein weiteres Feature, das ich unglaublich nützlich finde, ist die Möglichkeit, den Einzug zu ändern. :15,30>>rückt alle Zeilen von 15-30 (einschließlich) zweimal ein, während :15,30<<dieselben Zeilen zweimal rückt.

Chinmay Kanchi
quelle
Während ich die Funktion liebe, hat so ziemlich jede IDE Blockeinzug (und Dedent).
Sean McMillan
Ich finde =es genauso, wenn nicht sogar nützlicher als <<und >>.
greyfade
6

den Befehl dd (aktuelle Zeile löschen). Ich benutze diesen so oft.

Es ist auch wunderbar, etwas wie 3dd eingeben und die nächsten 3 Zeilen löschen zu können. Ich habe das noch nie in einem anderen Editor gesehen = D

Alex Hart
quelle
Netbeans hat dies fast, ^ X ohne Auswahl schneidet die aktuelle Zeile.
Alan Pearce
@ Alan: Nein, NetBeans hat jVi :)
Dr. Hannibal Lecter
^ K löscht die Zeile und ^ u3 ^ k löscht 3 Zeilen in Emacs. Shift-Delete macht dasselbe in Visual Studio.
Raoul
Alan: dd schneidet auch die aktuelle Zeile in dem Sinne ab, dass sie später mit p eingefügt werden kann
user281377 22.12.10
3
@ Raoul, wir wissen, dass es eine Emacs-Reihe von n 3-Tasten-Kombinationen gibt, mit denen jeder vim-Befehl nachgebildet werden kann - 3dd ist dennoch Poesie.
Cbrandolino
6

Der cBefehl. Zum Beispiel, ci"um Anführungszeichen zu ändern. cwum das Wort zu ändern. Viele praktische Tricks dabei.

Daenyth
quelle
5

Der .Befehl. Es wiederholt den letzten Befehl.

Adam Jaskiewicz
quelle
+1 dazu und zu allen anderen makrobezogenen Funktionen.
P Shved
3

Esc ! }verschiebt den aktuellen Absatz in einen Befehlszeilenfilter wie fmtoder wcoder whichund gibt die Ergebnisse an den Editor zurück.

Jé Queue
quelle
3

Schneller Zugriff auf die Befehlszeile. Mit STRG + Z oder: wqa erhalte ich in weniger als 1 Sekunde eine Befehlszeile, ohne dass meine Hand die Tastatur verlässt.

Luispedro
quelle
1
+1 Das letzte bisschen ist der entscheidende Abschnitt für so ziemlich alle Vorteile: ohne dass meine Hand die Tastatur verlässt
Orbling
... oder :!/bin/bash. Ich benutze :!ziemlich häufig.
greyfade
Ich benutze normalerweise:sh
David Brown
3

Damit kann ich hjklden Cursor bewegen, ohne die Startzeile der Tastatur verlassen zu müssen. Ich habe die meisten Programme (wie z. B. PDF-Reader), mit denen Sie die Tastenkombinationen ändern und Vim-Bewegungstasten zum Scrollen usw. verwenden können.

Anto
quelle
1

Dies ist ziemlich schwer zu beantworten, etwas aufgrund der Unbestimmtheit der Frage und der Tatsache, dass sich IDEs unterscheiden und viele Funktionen bieten, die andere nicht bieten (und die Tatsache, dass ich nur einige von ihnen habe).

Was Vim jedoch meiner Meinung nach von anderen Editoren unterscheidet (ja sogar von Emacs in diesem), ist, dass es wirklich ein großartiger Editor ist . Ich habe im Laufe der Zeit viele Editoren verwendet und kann ehrlich sagen, dass nur sehr wenige so umfassende Funktionen für die Textbearbeitung bieten wie Vim.

Meine Art, Text zu manipulieren, besteht zum Beispiel darin, sehr oft (Zeile / Auswahl mehrerer Zeilen) zu duplizieren und (Zeile / Auswahl mehrerer Zeilen) nach oben und unten zu verschieben, wofür ich vor langer Zeit Schnellzugriffe definiert habe. Ich vermisse diese Funktionen in den meisten IDEs (obwohl ich gehört habe, dass ReSharper für VS etwas Ähnliches hat).

Turm
quelle
1

Wussten Sie, dass es ein vi-Plugin für Eclipse gibt ? Es kostet 15 Euro, aber es ist es wert. Nicht mehr ddmitten in einem Dokument und es fehlen all die kleinen nützlichen Dinge.

Vielleicht ein bisschen abseits des Themas, aber ich dachte, es lohnt sich darauf hinzuweisen.

Lorenzog
quelle
0

Abhängig davon, welche Sprache Sie programmieren, bleiben Sie bei der Idee oder holen Sie sich die Idee, die die meisten Refactorings bietet, die Sie finden können. Maximieren Sie die Refactorings in Eclipse oder Netbeans.

Wir sollten von der Manipulation von Text zur Manipulation von Code übergehen. Mit Refactoring-Tools haben Sie diese Möglichkeit. Wenn vim Ihnen alle Funktionen bietet, möchte ich mich nicht mehr wirklich mit einem Texteditor befassen

Harald Scheirich
quelle
3
Das ist so ziemlich Unsinn. Ja, Refactoring ist ein wichtiges Tool, aber der Code schreibt sich nicht von selbst. Ein guter Texteditor trägt weit mehr zu einer Produktivität des Programmierers als ein gutes Refactoring - Tool.
Chinmay Kanchi
-1

Tabellenspaltenauswahl

Dies scheint nicht in den populären IDEs zu sein, und wenn es so ist, halten sie es gut versteckt. Dies ist sehr praktisch, um reguläre Ausdrücke anhand einer Spalte in einer CSV-Datendatei zu testen.

sal
quelle
-3

Bei den meisten IDEs können Sie den Bildschirm nicht teilen. Ich liebe diese Funktion in VIM.

projecktzero
quelle
5
Die meisten IDE's nicht? Ich denke, die meisten tun das tatsächlich, zumindest die, die ich benutzt habe.
Anto
Können Sie einige Beispiele nennen?
projecktzero
1
Die meisten IDEs verarbeiten die Bildschirmaufteilung anders als Vim / Emacs. Sie machen es normalerweise mit Tabs. Diese sind schwerer / unmöglich mit der Tastatur zu manipulieren (vergleiche 50 Dateien in Emacs und 50 Dateien in Eclipse und du wirst Emacs schnell gewinnen sehen).
Sternberg
Die meisten IDEs, die über einen Splitscreen verfügen, bieten keine einfachen Methoden zum Navigieren / Anpassen a-la-la-carte<C-w>
Wayne Werner