364 Stimmen

Wie kann ich die Positionen von zwei geöffneten Dateien (in Splits) in Vim vertauschen?

Angenommen, ich habe eine beliebige Anordnung von Splits in Vim.

____________________
| one       | two  |
|           |      |
|           |______|
|           | three|
|           |      |
|___________|______|

Gibt es eine Möglichkeit zum Tausch von one y two und das gleiche Layout beibehalten? In diesem Beispiel ist es einfach, aber ich suche nach einer Lösung, die für komplexere Layouts hilfreich ist.

UPDATE:

Ich denke, ich sollte mich klarer ausdrücken. Mein vorheriges Beispiel war eine Vereinfachung des tatsächlichen Anwendungsfalls. Mit einer tatsächlichen Instanz: alt text

Wie kann ich zwei beliebige dieser Splits austauschen, ohne dass das Layout verändert wird?

Aktualisieren! Mehr als 3 Jahre später...

Ich habe sgriffin's Lösung in ein Vim-Plugin gepackt, das Sie mit Leichtigkeit installieren können! Installieren Sie es mit Ihrem bevorzugten Plugin-Manager und probieren Sie es aus: WindowSwap.vim

a little demo

0voto

qeatzy Punkte 1184

Ähnlicher Ansatz wie "mark-window-then-swap-buffer", aber auch Wiederverwendung des letzten Swappings.

function! MarkWindowSwap()
    unlet! g:markedWin1
    unlet! g:markedWin2
    let g:markedWin1 = winnr()
endfunction

function! DoWindowSwap()
    if exists('g:markedWin1')
        if !exists('g:markedWin2')
            let g:markedWin2 = winnr()
        endif
        let l:curWin = winnr()
        let l:bufWin1 = winbufnr(g:markedWin1)
        let l:bufWin2 = winbufnr(g:markedWin2)
        exec g:markedWin2 . 'wincmd w'
        exec ':b '.l:bufWin1
        exec g:markedWin1 . 'wincmd w'
        exec ':b '.l:bufWin2
        exec l:curWin . 'wincmd w'
    endif
endfunction

nnoremap ,v :call DoWindowSwap()<CR>
nnoremap ,z :call MarkWindowSwap()<CR>

-5voto

William Punkte 1

Sie könnten auch einen Kachelfenster-Manager wie X-Monad verwenden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X