it-swarm.com.de

Wie kann ich in vimdiff zwischen einer vertikalen und einer horizontalen Aufteilung umschalten?

Ich weiß bereits wie man die Variable diffopt verwendet, um den Diff-Modus mit horizontalen/vertikalen Teilungen zu starten, aber nicht, wie man zwischen den beiden umschaltet, wenn bereits 2 Dateien zum Vergleich geöffnet sind.

Ich habe versucht, die in diesem älteren Beitrag enthaltene Lösung für die akzeptierte Antwort zu finden, aber ohne Erfolg. Die Strg + W-Befehle haben bei mir nicht funktioniert. Vielleicht, weil ich gVim im Windows-freundlichen Modus ausführe?

38
drapkin11

Следующая команда изменит вертикальное разделение на горизонтальное разделение:

ctrl+wзатемJ

:Тобы вернуться к вертикальному разделению, используйте:

ctrl+wHили жеctrl+wL

Для получения дополнительной информации о перемещении окон:

:h window-moving
:h ctrl-w_J
:h ctrl-w_K
:h ctrl-w_H
:h ctrl-w_L
74
Peter Rincker

Ich bin spät dran, aber vielleicht ist das eine interessante Lösung. Die Lösung von @PeterRincker funktioniert nur, wenn nur wenige Fenster ohne innere Fenster geöffnet sind.
Ich habe diese (nützliche) Funktion in meiner Laufzeitkonfiguration gefunden, die ich gerne mit u teilen möchte. Es soll als Keybinding abgebildet werden und den Benutzer die aktuelle Aufteilung auf eine bestimmte Aufteilung umstellen lassen. Markieren Sie, dass nicht zwischen vertikal und horizontal umgeschaltet wird, sondern der Benutzer sagt, welche davon er mag (Könnte derzeit auch aktiv sein, auch wenn dieses Szenario keinen Sinn ergibt.) Der Vim - Fensterbaum hat immer zwei Fenster als "Partner". Auswirkungen hiervon sind auch bei der Größenänderung von Fenstern zu beobachten. Was ich sagen möchte: Löst die Funktion aus, wenn das aktuell aktive Fenster und sein "Partner" -Fenster gilt.

" Switch to a vertical or horizontal split between two windows.
" Switching to currently used split results into the equal split.
" This is between the current window and the one window which is focused, when close the active window.
" This function does not adjust the windows height after the switch, cause this can't work correctly.
" 
" Arguments:
"   horizontal - Boolean to differ between both layouts.
"
function! s:switch_window_split(horizontal) abort
  let l:bufnr = bufnr('%')  " Get current buffer number to restore it in the new window.
  if a:horizontal | let l:vert = '' | else | let l:vert = 'vert ' | endif

  " Close current window and open new split with the cached buffer number.
  wincmd c
  execute l:vert . 'sbuffer ' . l:bufnr
endfunction

" Switch split layout.
nnoremap <leader>wS :<C-u>call <SID>switch_window_split(v:true)<CR>
nnoremap <leader>wV :<C-u>call <SID>switch_window_split(v:false)<CR>

Leider ändert es derzeit immer noch die Größe des Fensters und belässt die Form nicht so wie sie ist. Ich arbeite daran, aber es ist nicht so leicht zu erreichen, weil ich die Form des "Partner" -Fensters kennen muss.

0
weilbith

Sie können das Fenster auch mit ctrl-w + <arrow key> auswählen.

0
electr0ninja