diff options
author | Josh Rahm <rahm@google.com> | 2023-02-01 22:54:09 +0000 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2023-02-01 22:54:09 +0000 |
commit | dc8466b027ed44891a47251e71ff213f45de1e37 (patch) | |
tree | 3c17f8fa381a97cd84ea926ac20271eccad62607 | |
parent | 625a72d89db24e9b44cecf3e1132bc8078730ee1 (diff) | |
download | fieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.tar.gz fieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.tar.bz2 fieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.zip |
add winswap.vim
-rw-r--r-- | plugin/winswap.vim | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/plugin/winswap.vim b/plugin/winswap.vim new file mode 100644 index 0000000..739ba4d --- /dev/null +++ b/plugin/winswap.vim @@ -0,0 +1,28 @@ +function! s:do_window_swap() abort + let cur_buffer = bufnr('%') + let cur_win = win_getid() + + let expr = "" + let c = nr2char(getchar()) + while c =~ '[0-9]' + let expr = expr .. c + let c = nr2char(getchar()) + endwhile + let expr = expr .. c + + let w = winnr(expr) + if w > 0 + let wid = win_getid(w) + let buf = nvim_win_get_buf(wid) + + call nvim_win_set_buf(wid, cur_buffer) + call nvim_win_set_buf(cur_win, buf) + + exec w .. "wincmd w" + endif + +endfunction + +noremap <Plug>(WindowSwap) <cmd>call <SID>do_window_swap()<cr> +noremap <C-w><C-S> <Plug>(WindowSwap) +noremap <C-S-w> <Plug>(WindowSwap) |