2014-03-28 11 views

Antwort

5

Neben -p, Vim bietet auch die -o und -O Befehlszeilenargumente für horizontale/vertikale Splits. Leider können sie nicht gemischt werden. Um Ihr eigenes benutzerdefiniertes Fensterlayout zu erstellen, müssen Sie die expliziten Befehle zur Fensterplatzierung über -c übergeben. Dieses Beispiel

$ vim 1 -c 'bel vsplit 2' -c '1wincmd w' -c 'bel split 3' -c '3wincmd w' -c 'bel split 4' 

schafft ein Layout, das wie folgt aussieht:

+-----------+-----------+ 
|   |   | 
|   |   | 
|   |   | 
|1   |2   | 
+-----------+-----------+ 
|   |   | 
|   |   | 
|   |   | 
|3   |4   | 
+-----------+-----------+ 

die Liste der Dateien vorbei zu halten als ein Block, können Sie die Tatsache nutzen, dass die Pufferzahlen monoton erhöhen und beziehen sich auf Puffernummern in dem Befehl:

$ vim -c 'bel vert sbuf 2' -c '1wincmd w' -c 'bel sbuf 3' -c '3wincmd w' -c 'bel sbuf 4' a b c d 
+0

Danke. Ist es möglich, die Dateiliste zu übergeben, um sie mit diesem Layout zu öffnen? – Loom

+0

Ja, siehe meine Bearbeitung. –

3

Sie können versuchen, -O4 anstelle von -p zu verwenden.

+0

Nicht sehr flexibel, wenn es darum geht, Fenster horizontal zu teilen (die Trennlinie ist horizontal, Tabs sind vertikal), aber gut für einen Start und abhängig von Ihrer Bildschirmgröße geeignet. – Zelphir

4

vim hat :vertical Befehl, der in Ihrem Fall nützlich sein könnte. geben diesem einen Versuch:

vim +'vertical all' [your file list] 
2

die oben gepostet akzeptierte Lösung ist gut und löst Ihre Verwendung Fall jedoch würde Ich mag somet erreicht wird eine alternative Möglichkeit von darauf hinzuweisen, ähnlich ohne viel Aufwand oder Konfiguration.

VIM hat eingebaute Unterstützung für Rekord-Sitzungen, :h :mksession, was, dass Sie die aktuelle vim Sitzung (offene Dateien, Splits, Tabs, Fenster, usw., je nach dem Wert von :h 'sessionoptions' zu tun erlaubt ist zu speichern. Obwohl Sitzungen Aufzeichnung und Pflege kann etwas langweilig sein, was ich vorschlagen würde, ist entweder xolox/vim-session (ich habe es zuvor verwendet) oder tpope/vim-obsession (jetzt verwenden). Das wird Ihnen ermöglichen, eine Sitzung genau so wieder zu öffnen, wie Sie aufgehört!

Hier

ist, was ich tue, ich habe diesen Schnipsel in meiner ~/.zshrc:

function vim() { 
    tmux rename-window "vim - ${PWD##*/}" 
    if test $# -gt 0; then 
    env vim --servername ${PWD##*/} "[email protected]" 
    elif test -f ~/.vim/sessions/${PWD##*/}.vim; then 
    env vim --servername ${PWD##*/} -S ~/.vim/sessions/${PWD##*/}.vim 
    else 
    env vim --servername ${PWD##*/} -c Obsession\ ~/.vim/sessions/${PWD##*/}.vim 
    fi 
} 

Überprüfen Sie, ob vim ohne Argumente gestartet wird und ob eine Sitzung bereits existiert & lädt es, oder tpope/vim-obsession beginnt mit der Aufzeichnung einer neuen Sitzung, die beim nächsten Öffnen von vim geladen wird. Der Sitzungsname ist nur der Name des Verzeichnisses, in dem Sie vim starten. Wenn Sie vim Argumente übergeben, verhält es sich jedoch wie erwartet und macht sich keine Sorgen um Sitzungen.

Auf diese Weise kann ich jetzt einfach starten vim in einem beliebigen Verzeichnis und das erste Mal, wenn ich dies tun, beginnt es eine neue Sitzung zu erfassen, während bei nachfolgenden Aufrufen wird diese Sitzung geladen und tpope/vim-obsession hält es aktualisiert.