#1 楼
要交换拆分窗口的两个部分,只需执行:<C-w> <C-r>
评论
我可能是错的,但是您的解决方案会旋转窗口,因此如果拆分超过2个,结果将不是OP所寻找的。
–statox♦
16 Dec 30'在10:13
你是绝对正确的。 OP正在寻找s.th。比“交换拆分窗口的两个部分”更为复杂。
–modesto
17年1月1日在11:07
实际上,OP正在寻找交换两个拆分窗口的命令,但是您的解决方案会旋转所有当前拆分窗口。如:h CTRL-W_CTRL-R中所述:第二个窗口成为第一个窗口,第三个窗口成为第二个窗口,依此类推。因此,如果您有3个拆分,则光标位于最下面的一个并按
–statox♦
17年1月2日,11:12
#2 楼
CTRL-W x exchange current window with window N (default: next window)
(
index.txt
第2.2节,“窗口命令”)如果A是当前窗口,则下一个将是B,因此只需要
<C-w> x
如果B是当前窗口(下面还有更多窗口),那么您首先必须转到A,然后进行交换:
<C-w> k <C-w> x
#3 楼
交换窗口或交换缓冲区的另一种方法是在文件中标记位置(使用大写标记),然后在所选窗口中打开这些标记。例如,如果我有两个文件, file_A和file_B:我将使用file_A转到窗口并标记它:
mA
使用file_B转到窗口并标记它:
mB
然后取file_A的标记进入该窗口:
'A
,然后返回第一个窗口并在其中获取file_B的标记:
'B
。此方法的优点是,如果由于某种原因而拆分了您的窗格不止一次,并且没有明确的逻辑来交换它们,例如,如果您想在12点和7点交换窗格,您不仅可以旋转窗口,还可以轻松交换缓冲区。
评论
这是有用的,因为它可以与各种复杂的窗口排列配合使用
–亨利E
20年4月1日,9:47
#4 楼
为了交换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指定要使用的对象。
评论
精确地说,当您说“先选择窗口A,然后选择B”时,是指“先关注A,然后关注B,以标记最后看到的缓冲区和窗口的顺序,以正确交换?还是”选择”是什么意思,而不是“关注”?
– Padawin
19年4月16日在20:48
确实是这样:我将“选择”用作“关注”。
–彗星
19年4月17日,0:28
#5 楼
您可以使用以下功能在两个窗口之间交换缓冲区:function! SwitchWindow(count) abort
let l:current_buf = winbufnr(0)
exe "buffer" . winbufnr(a:count)
exe a:count . "wincmd w"
exe "buffer" . l:current_buf
wincmd p
endfunction
nnoremap <C-w>x :<C-u>call SwitchWindow(v:count1)<CR>
现在,在大多数情况下,交换缓冲区在技术上就像交换窗口一样。因为您没有手动跟踪窗口,所以要跟踪哪个窗口正在保存哪个缓冲区。因此,上面的功能将在大多数情况下为您提供帮助。#6 楼
您可以使用vim-windowswap,使您能够使用<leader>ww
选择要交换的vim中的两个窗格,然后再按一次以将其替换为您要替换为的平底锅
评论
这篇文章解释了如何旋转窗口。这是关于将分割从垂直切换为水平的操作。@ lcd047这些是本网站之外的问题。值得在这里写下一个小的答案,并包括链接(这些链接很有价值)吗?
@Bernhard我想这对meta是个好问题。
@Bernhard是的。确保写下完整的答案,而不仅仅是链接。
然后请说明您要做什么,以及为什么我指出的两个答案没有解决问题。