Чтобы поменять местами 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, с какими из них работать.