这可能有点牵强,但是否有机会编写一个vim
命令,以便第一行(任何?)始终显示在顶部?第一列(任何)列(由唯一分隔符定义)是否始终显示在左侧?
我能管理的最好的方法是拆分屏幕并最大化底部的屏幕,所以像
split %
wincmd w
wincmd _
对于上面的行会很好,但是当然,如果行比屏幕宽,它就不能很好地工作 - 除非有一种方法可以启动两个窗口的列对齐的模式。
对于持久性专栏,我不太确定。需要以某种方式获得第一限定的列(f
命令我想,但我无法得到它的工作),vsplit %
并且vertical resize
,然后切换,wincmd l
。同样,这仅在行数少于整个屏幕时才有效。
两者都做甚至更棘手,但可以使用上述方法。我还将拆分标题行以在角落处创建一个空单元格。至于同步,标题必须保持行但在列上同步,反之亦然对于持久列。
有没有办法创建这样一个与主窗口同步的持久行+列设置?在此设置中删除文件名也很有用。
感谢@DoktorOSwaldo 上面的评论,这是我能做的最好的事情。F2 和 F3 在绑定的第一列(根据给定的分隔符)和绑定的第一行之间切换。F4 破坏两者:
hi cursorcolumn ctermbg=red
function Title_destroy()
if( winnr() == 1 )
return 0
endif
let oldpos = getpos('.')
wincmd k
wincmd j
hide
call setpos('.',oldpos)
set nocul
set nocuc
endfunction
function Title_bar()
if( winnr() > 1 )
call Title_destroy()
endif
set nowrap
split %
set scb
wincmd j
set scb
wincmd _
set scrollopt=hor
set cuc
endfunction
function Col_bar(delim)
if( winnr() > 1 )
call Title_destroy()
endif
set nowrap
let oldpos = getpos('.')
call setpos('.',[oldpos[0],oldpos[1],0,oldpos[3]])
let width = searchpos(a:delim)[1]+3
call setpos('.',oldpos)
vsplit %
exe 'vertical resize' width
set scb
wincmd l
set scb
set scrollopt=ver
set cul
endfunction
nnoremap <F2> :call Title_bar()<CR>
nnoremap <F3> :call Col_bar(nr2char(getchar()))<CR>
nnoremap <F4> :call Title_destroy()<CR>
我想不出同时做这两个scrollopt
事情的方法,因为这是一个全球性的事情。如果有人弄清楚,请发表评论或回答。也许以某种方式重载窗口滚动以scrollopt
根据滚动方向更改。现在这足以处理大表(对我而言)。
升级
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句