如何在 vim 中切换窗口位置

问题描述 投票:0回答:1

要移动窗口,我可以这样做:

ctrlw shiftH、J、K 或 L

有没有办法只切换窗口的位置?例如,按五次即可:

  • ctrlwshiftK
  • ctrlwshiftL
  • ctrlwshiftJ
  • ctrlwshiftH
  • ctrlwshiftK

vim 中是否有类似的东西,或者我必须在重新定位窗口时明确指定方向?

vim
1个回答
1
投票

Vim 中似乎没有这样的东西(不过也许有一些插件存在)。如果有的话,我们会在

:help window-moving
中找到它。

另一方面,您可以创建自己的映射来处理此问题。例如,以下内容可以根据您的要求工作:

nnoremap <C-W><C-X> :call NextPost()<CR>
let g:mydic = {0: 'K', 1: 'L', 2: 'J', 3: 'H'}
let g:nextPosIndex = -1
function! NextPost()
  if g:nextPosIndex == 3
    let g:nextPosIndex = 0
  else
    let g:nextPosIndex += 1
  endif
  execute "normal! \<C-W>" . g:mydic[g:nextPosIndex]
endfunction

请注意,计数器

g:nextPosIndex
永远不会重置,因此在窗口上发生
K
移动后,如果将移动到另一个窗口,然后移动它,它将
L
移动。

(1) 根据 D. Ben Knoble 的评论,通过使用窗口局部变量

w:nextPosIndex

 而不是全局变量 
g:nextPosIndex
,似乎可以轻松消除此限制。

© www.soinside.com 2019 - 2024. All rights reserved.