vim bearbeiten / wechseln effizient zwischen mehreren Dateien in großen Verzeichnisstrukturen

11

Ich bin kein Vim-Power-User, ich fange gerade erst an, die fortgeschrittenen Bewegungen und Befehle mit Vim zu erfassen. Aber es gibt einen Nachteil, den ich scheinbar nicht umgehen kann.

Ich bin mit grafischen Programmen zum Schreiben von Code aufgewachsen, habe aber erst kürzlich damit begonnen, vim over ssh & screen zu verwenden, um an ziemlich großen Projekten mit vielen Ordnern zu arbeiten.

Ich bin gespannt, was die vim-Master tun, um schnell und einfach mit mehreren Dateien zu arbeiten. Betrachten Sie als Beispiel eine Rails-App. Angenommen, Sie möchten einen Controller so bearbeiten, dass er ausgeführt wird.

vim app/controllers/controller.rb

Aber dann möchten Sie schnell zum Bearbeiten einer Ansicht oder einer Datenbankmigration wechseln. Mein erster Instinkt ist :wq, zu Bash zurückzukehren, um zu diesem Verzeichnis zu navigieren und vim in einem brandneuen Puffer erneut zu starten.

Das ist offensichtlich völlig falsch.

Ich habe verschiedene Dinge gelernt wie:

  • Der Clientserver (aber ich möchte X nicht über ssh verwenden und dies scheint der einzige Weg zu sein)
  • :eeine andere Datei durch Surfen zu öffnen, aber ich kann es nicht sehr schnell tun. Tab complete stolpert mich wirklich.
  • Öffnen eines gesamten Verzeichnisses und Durchsuchen der Puffer.
  • NERDTree ist vielversprechend, aber ich möchte mich wirklich von jeder grafischen Darstellung fernhalten, um mich weiterhin zu zwingen, die Befehlszeilennavigation zu beherrschen

Ich entschuldige mich dafür, dass ich naiv bin, aber ich möchte wirklich lernen, wie man es richtig macht, auch wenn es sehr subjektiv ist.

Was sind Ihre Methoden und was würden Sie empfehlen?

Februar
quelle
Insbesondere für Ruby on Rails enthält das Rails.vim-Plugin von Tim Pope einige nette Befehle (mit Abschluss; erweiterbar auf neue Hierarchien) zum Öffnen von Dateien für Modelle / Ansichten / Controller / Migrationen / Tests /… (siehe rails-type-navigationin der Dokumentation oder :help rails-type-navigationwenn Sie habe es installiert).
Chris Johnsen

Antworten:

7

Es ist möglich, vim so einzurichten, dass mehrere Dateien bearbeitet werden, ohne dass das Programm beendet werden muss. Sie verwenden mehrere Puffer und wechseln zwischen diesen. Da Sie vim im Bildschirm verwenden, können Sie Folgendes in Ihr ~ / .vimrc einfügen, um dies zu aktivieren.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Diese Tastenzuordnungen werden den Pfeiltasten Strg-Links und Rechts zugeordnet, um zwischen den Puffern zu wechseln. Die Taste F4 ruft dasselbe Menü auf, das die GUI anzeigen würde. Durch Drücken der Tabulatortaste wird jetzt auch ein kleines Menü zur Auswahl des Abschlusses angezeigt, wenn Sie die Tabulatortaste drücken.

Keith
quelle
Sehr guter Tipp, diese drei Antworten haben mir wirklich geholfen, mich wohler zu fühlen. Eine gute Pufferverwaltung ohne Plugins ist eine große Fähigkeit. Ich liebe das Wildmenü!
Februar
5

Hah! Ich war genau wie du, also weiß ich es genau woher du kommst. Selbst jetzt, wo ich bis zu einem gewissen Grad weiß, was ich tue (ich bin kein Vim-Gott, aber ich hoffe, dass ich dorthin komme), mache ich gelegentlich noch ein: wq und kehre zu meiner Shell zurück.

Überprüfen Sie dies heraus - das könnte Ihnen helfen. (Es wird mir auch helfen, da ich nie davon wusste. Das ist das Tolle an Stackexchange-Sites - Sie lernen, indem Sie anderen beim Lernen helfen!)

Hier sind einige Dinge, die ich tue.

  1. Der :eBefehl. Wenn Sie eine Datei in vim bearbeiten, können Sie Folgendes tun, :e dir/subdir/otherfileund sie wird in einem neuen Puffer geöffnet. Dies bedeutet, dass zwei Dateien gleichzeitig geöffnet sind.

  2. Ctrl-Shift-6(Ich kenne die tatsächlichen ASCII-Werte nicht). Wenn zwei Puffer geöffnet sind, können Sie mit diesem Schalter blitzschnell zwischen ihnen wechseln.

  3. bd- Puffer löschen. Hiermit können Sie einen Puffer löschen.

  4. Dies ist wirklich sehr, sehr praktisch - :sh. Wenn Sie aus irgendeinem Grund zu einer Shell zurückkehren müssen (z. B. um ein Verzeichnis anzusehen und eine Datei zu ändern), können Sie den Shell-Befehl von vim aufrufen, um genau das zu tun. Wenn Sie die Shell verlassen, kehren Sie direkt dorthin zurück, wo Sie sich gerade befanden.

  5. In der gleichen Kategorie wie oben :!wird dieser Befehl durch Eingabe und einen anschließenden Unix-Befehl ausgeführt. Versuchen Sie dies mit ls. (Ich denke, es funktioniert auch mit Shell-Builtins, bin mir aber nicht sicher.)

Das sind die, die ich ständig benutze. Es gibt auch :nfür die nächste und :pfür die vorherige Datei, da in vim mehr als zwei Puffer gleichzeitig geöffnet sein können (dies mache ich jedoch normalerweise nicht).

Mittagsfleisch317
quelle
Super danke für diese Tipps. Ich habe auch folgendes gefunden: wincent.com/products/command-t . Ich bin siked, um es zu benutzen. Der einzige Nachteil ist, dass Sie Rubin brauchen (nicht so freundlich mit SSH-Sachen), aber es ist genau das, wonach ich gesucht habe. Das kombiniert mit :sh, :eund die richtige Pufferverwaltung und die Dinge sexy
FEBS
In den meisten Shells (dh Shells mit Jobsteuerung) Ctrl+Zsollte der Prozess angehalten werden ( fgvon der Shell, um ihn erneut anzuzeigen) - alternativ zu :sh.
Maxschlepzig
Ein weiterer toller Tipp! Ausgezeichnet! Ich muss diese in einem Blog-Beitrag zusammenstellen oder so.
Februar
2

Hier fangen Sie an, Plugins zu verwenden . Für die Datei- (oder Puffer-) Verwaltung sind NERD-Baum und MiniBufExplorer gängige Optionen. In Ihrem Fall würde ich " vim ruby ​​ide " googeln und einem der vielen Tutorials folgen, die ich finde. Ich benutze Python und die 3 Befehle in diesem Tutorial konfigurieren alles, was ich brauche, aus Vim heraus.

Phunehehe
quelle
2

Ich würde auch empfehlen, geteilte Fenster zu verwenden, um mehrere Dateien gleichzeitig anzuzeigen. Fügen Sie einige Fähigkeiten mit Puffer- und Fenstermanagement in VIM hinzu, und Sie werden in kürzester Zeit ein VIM-Ninja.

Für die eigentliche Dokumentation verweise ich Sie auf die VIM Windows-Dokumentation , aber ich werde versuchen, Ihnen hier einen Vorsprung zu verschaffen.

Starten Sie VIM mit 2 (oder mehr) horizontal geteilten Fenstern, das obere Fenster hat Datei1, das nächste Fenster hat Datei2 usw.

vim -o <file1> <file2> (file3 file4 ...)

Starten Sie VIM mit 2 (oder mehr) vertikal geteilten Fenstern. Das Fenster ganz links enthält Datei1, das nächste Fenster enthält Datei2 usw.

vim -O <file1> <file2> (file3 file4 ...)

Bewegen Sie den Cursor in ein anderes Fenster:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Sie bearbeiten bereits eine Datei, möchten aber das Fenster teilen und auch eine andere Datei bearbeiten:

:split <file2>
:vsplit <file2>

Für horizontale und vertikale Aufteilung.

Es gibt auch Befehle zum Verschieben, Ändern der Fenstergröße usw.

5mi11er
quelle
1

Verwenden Sie den Befehl vi: split, um ein zweites Bearbeitungsfenster zu öffnen. split kann sowohl horizontale als auch vertikale Teilungen und mehr als zwei gleichzeitig durchführen. Ich habe bis zu 10 Dateien in derselben vi-Sitzung geöffnet.

wesmat
quelle