【问题标题】:Vim Relative Numbering Reset on ScrollVim 滚动时的相对编号重置
【发布时间】:2013-10-18 21:08:41
【问题描述】:

当我向下滚动页面时,相对编号不再基于光标位置。

而是显示相对于屏幕顶部的行位置。

有时我想删除或拉出 200 行,但我不想通过减法和加法来计算我的文本有多少行。

如何在滚动时向光标显示相对行号?

【问题讨论】:

标签: vim


【解决方案1】:

这可能是因为当您向下滚动页面时光标会向下移动。在 vim 中,光标总是在屏幕上。如果您使用鼠标滚轮向下滚动,则光标只会“卡”在顶行(模 scrolloff)并在您继续向下滚动时停留在那里。

也许在滚动之前使用 ShiftV 开始基于行的visual 选择,然后使用 dy 关于选择?

【讨论】:

    【解决方案2】:

    我认为你想要的是,你用鼠标滚动,并期望 vim 将光标保持在原来的位置。例如。您的光标位于第 5 行,向下滚动 5000 行,您希望光标仍位于第 5 行。也就是说,光标已超出窗口。

    AFAIK,光标不会离开窗口。这意味着,如果您继续向下滚动,光标行将是当前窗口的顶行。并且 rnu 将由光标线重新计算。

    也许你可以解释一下你想做什么。您问题中的案例可以由200dd200Y 完成,但我想这并不那么简单。

    • 您可能希望通过阅读/扫描文本行来找出结束行,然后选择行号 (rnu),如果是这种情况,请执行 xxxdd。在这里你应该使用正常的行号。例如你的光标在第 5 行,向下滚动很多,从第 5 行找到要删除的行。你可以做:5,.d vim 将从line 5 to your current line 中删除。

    • 如果您发现需要删除 5 和 23452 之间的行,也可以使用 5, 23452d

    • 1234563
    • 您仍然可以按V 进入逐行视觉模式,并通过 vim-motions 向下移动。当它到达您要删除/yand按Y or d

    你可以看看这个问题/答案: VIM to delete a range of lines into a register

    最后,我建议你不要在 vim 中使用鼠标。

    【讨论】:

    • 光标永远不会离开窗口,在 vim 脚本中编码时也是如此。但是,当在 VimL 中使用lazyredraw 进行编码时,重绘会延迟到脚本结束或调用:redraw,因此“不超出窗口”只会限制底层 C 结构的可能状态。
    • 感谢@ZyX 的评论。答案已相应编辑。
    猜你喜欢
    • 2017-09-29
    • 2010-10-15
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多