Для того, щоб поміняти window
позиції, ефект еквівалентний заміні буферів, які показують ці два вікна.
Наприклад, якщо у вікні A є буфер 2, а у вікні B є буфер 8, вам потрібно перейти до вікна A, виберіть буфер 8, потім у вікно B, виберіть буфер 2.
Ця ідея надихнула мене на її написання - і вона вже є в моїй власній панелі інструментів
Код функції:
function! WinBufSwap()
let thiswin = winnr()
let thisbuf = bufnr("%")
let lastwin = winnr("#")
let lastbuf = winbufnr(lastwin)
exec lastwin . " wincmd w" ."|".
\ "buffer ". thisbuf ."|".
\ thiswin ." wincmd w" ."|".
\ "buffer ". lastbuf
endfunction
command! Wswap :call WinBufSwap()
map <Leader>bs <C-c>:call WinBufSwap()<CR>
- Виберіть вікно A
- Виберіть вікно B
:call WinBufSwap()
Це здійснює заміну буферів у двох попередньо вибраних вікнах, залишаючи курсор у вихідному вікні.
Вибір двох потрібних вікон, які потрібно замінити заздалегідь, є ключовою деталлю, тому що для Vim потрібно вказати, з якими з них працювати.