我的vim屏幕上有8个方形(相等)窗口,跨越2个大型显示器,我想用快捷方式引用每个窗口< A-1>,< A-2> ......在vim N-wincmd-wincmd中有一个命令允许通过它的编号引用窗口,但它对我来说没用,因为其他插件有时会创建窗口(比如用于语法检查的语法)并且按编号引用并不完全匹配正确的窗口。我想也许我可以通过名字来引用窗口,所以问题是,我如何设置某个窗口的名称,然后进行快捷方式,以便在按下<时按下该名称的光标到窗口。 A - n>其中n是窗口号?
答案 0 :(得分:0)
以下内容允许您为每个可见窗口保存一个静态额外窗口编号,然后快速跳转到该窗口。
只需在布局干净时调用:MarkWins
,然后映射<A-1>
,<A-2>
...将跳转到正常窗口,即使之后创建了新窗口。
" Mark all visible windows from 1 :
command! MarkWins call s:mark_windows()
" Go to a previously marked window :
command! -nargs=1 GoToMarkedWin call s:go_to_marked_win(<f-args>)
" Mappings (Alt-1, Alt-2...) :
for s:n in range(1,8)
exe printf('noremap <silent> <a-%d> :GoToMarkedWin %d<cr>', s:n, s:n)
endfor
function! s:mark_windows()
let l:old_winnr = winnr()
windo let w:win_mark = winnr()
exe printf('%d wincmd w', l:old_winnr)
endf
function! s:go_to_marked_win(n)
let l:old_winnr = winnr()
while 1
if exists('w:win_mark') && w:win_mark == a:n
return
endif
wincmd w
if winnr() == l:old_winnr | return | endif
endw
endf