VIM 中的持久(粘性)第一行或第一列

卡巴努斯

这可能有点牵强,但是否有机会编写一个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根据滚动方向更改现在这足以处理大表(对我而言)。

升级

  1. 接受数字可选参数相当容易 - 从第一次更改行/列。
  2. 既有粘性行又有粘性列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用vim删除第一列

转到vim文件中的第一行?

vim移至同一列中的第一个非空白

用Vim从多行中的每一行中选择第一个单词

GIT commit --amend始终会删除VIM中的commit-message中的第一行

vim:当“{”不在第一列中时如何跳转到函数的开头

CSS 表 - 第一行和第一列粘性

Bootstrap4- 网格/弹性布局的粘性第一行和第一列

Vim:将选择的每一行的第一个单词替换为列表中的数字

VIM-忽略同一行上多个命令中的第一个命令

vim的第一列突出显示为黄色,不会消失

提交Git更改时,如何在第一行的末尾以插入模式启动Vim?

在Vim中删除一行

“-”键在vim中向上一行

HTML 表格中第一行和第一列之后的行

禁用 WPF DataGrid 中第一行的第一列

从存储过程返回的表中获取第一列,第一行的值

如何获取转换后的数据帧中第一列的第一行

在下一行空白区域下方的第一行中重复第一列的值

在vim中获取第一屏专栏

使用Mutt编写电子邮件时,使vim转到第一行并进入插入模式

在vim中查找第一条未注释的行而不删除搜索

使Vim在缩进时忽略行中的第一个字符

vim:为什么 SHIFT+H 和 SHIFT+L 不在屏幕的第一行和最后一行跳?

如何从组中获取列中的第一行和另一列中的最后一行

根据第一列中的字母数将行与上一行连接

awk / sed比较第一列并在一行中添加后续行

熊猫,集中值以在第一行的每一列的第一单元格中列出

如何自动在第一行中添加数字并在第一列中添加数字