0

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

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

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

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

4

2 回答 2

2

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

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

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

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

  • 或者,5, 23452d如果您发现需要删除 5 和 23452 之间的行,您也可以这样做。

  • 如果你可以通过/pattern搜索来搜索你的结束行,vim 可以这样做:.,/foo/d将从当前行删除到下一行,匹配foo.

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

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

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

于 2013-10-10T22:40:12.547 回答
1

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

也许使用在滚动之前ShiftV开始基于行的视觉选择,然后在选择上使用dy

于 2013-10-10T22:37:11.770 回答