Hallo,
ich versuche (kläglich) ein vim-Skript zu schreiben, das folgendes können soll. Ich möchte das vim-Fenster vertikal splitten. Das alte und das neue Fenster sollen eine Breite von 109 Zeichen haben (unabhängig davon, wie breit das vim-Fenster selbst ist). Auf Seite zwei soll der Code angezeigt, werden, der unmittelbar an den von Seite eins anschließt. Wenn ich scrolle, dann soll auf allen Seiten um den gleichen "Betrag" gescrollt werden. Es sollen beliebig viele horizontale Splits durchgeführt werden können, die immer diesen Bedingungen genügen.
Das folgende Skript funktioniert einigermaßen und kann gerne mal ausprobiert werden. Dann wird euch bei mangelender Erklärung oben sicher klar was gemeint ist. Einige Dinge funktionieren jedoch nicht. Wenn ich einen dritten Split durchführe, wird das vorherige Fenster auf eine Breite von 109 Zeichen geändert, aber das abermals vorhergehende hat dann wieder die falsche Größe, außerdem reagieren die Fenster nicht auf nachträgliches Verändern der Größe des Fensters.Wenn ich das Fenster in der Höhe verkleinere fehlen mir Zeilen in der Ansicht. (hier könnte man sich wahrscheinlich abhelfen, in dem ein Kürzel festlegt, daß alle Fenster bis auf das erste schließt und dann die Funktion AddColumn() erneut aufruft, aber Null Plan, wie ich das umsetzen soll).
Die unten angefügten Tastenkürzel funktionieren auch nicht wie sie funktionieren sollten, wenn ich Ctrl+u eingebe, dann wird die Fensterbreite vertikal verschoben. Das sollte eigentlich nur dann der Fall sein, wenn ich
zusätzlich die Shift-Taste halte. Schließlich würde ich noch Tastenkürzel benötigen mit denen, ich zum nächsten Fenster springen kann, dabei soll der Curser aber nicht dorthin springen, wo er zuletzt bei dieser Seite war, sondern auf die gleiche Höhe (also in der gleichen Zeile auf dem Bildschirm, die dann demenspricht die Zeilenzahl: alte Zeilenzahl + Zeilensahl pro Seite haben muss)
Ich komme auch deshalb nicht zu besseren Ergebnisse, weil ich die Möglichkeiten für das vim-Skripting ziemlich unüberschaubar finde und damit nicht so ganz klar komme. Ich wäre sehr dankbar, wenn einer der vielen vim-Cracks Vorschläge machen könnte, wie man den Code verbessert, auch über Teillösungen bin ich erfreut, vielleicht hat ja jemand von euch schonmal was ähnliches programmiert?
Liebe Grüße
function! AddColumn() " vertikal splitten
bo vs " vertikale Seite hinzufügen
setl scrollbind
exe "norm \<PageDown>"
exe "norm L"
exe "norm 2j"
wincmd p " zum vorigen Fenster springen
setl scrollbind
vertical resize 109 " Fenstergröße festlegen (nur voriges Fenster)
wincmd p
endfunction
nmap <C-S-v> :call AddColumn()<CR>
nmap <C-S-m> :vertical resize 109<CR>
" --- Fenster nach links/unten/oben/rechts ausdehnen:
nmap <C-S-u> :vertical resize -1<CR>
nmap <C-S-i> :resize -1<CR>
nmap <C-S-o> :resize +1<CR>
nmap <C-S-p> :vertical resize +1<CR>