滚动时Vim相对编号重置

tjjdgumg  于 2022-11-24  发布在  其他
关注(0)|答案(3)|浏览(150)

向下滚动页面时,相对编号不再基于光标位置。
而是显示相对于屏幕顶部的行位置。
有时我想删除或猛拉200行,我不想做减法和加法,以计算出有多少行下来,我的文本是。
如何在滚动时显示相对于光标的行号?

oug3syen

oug3syen1#

我想你想要的是,你用鼠标滚动,并期望vim保持光标在原来的地方。例如,你的光标在第5行,你向下滚动5000行,你期望你的光标仍然在第5行。也就是说,光标在窗口之外。
答:光标不会离开窗口。这意味着,如果你继续向下滚动,光标所在的行将是当前窗口的第一行。rnu将根据光标所在的行重新计算。
也许你可以解释一下你想做什么。你问题中的案例可以通过200dd200Y来完成,但我想它不是那么简单。

  • 你可能想通过阅读/扫描你的文本行来找到结束行,并选择行号(rnu),如果是这样的话,执行xxxdd。这里你应该使用正常的行号。例如,你的光标在第5行,你向下滚动很多,找到你想删除的行,直到从第5行。你可以执行:5,.d vim将从line 5 to your current line删除。
  • 或者,如果您发现需要删除5和23452之间的行,则可以执行5, 23452d
  • 如果你可以通过/pattern搜索来搜索你的结束行,vim可以做:.,/foo/d,这将从当前行删除,直到下一行,这匹配foo
  • 您仍然可以按V进入逐行可视模式,并通过vim-motions向下移动。当它到达您要删除的点时/y并按Y or d

你可以看看这个问题/答案:VIM to delete a range of lines into a register
最后,我建议你不要在vim中使用鼠标。

vnzz0bqm

vnzz0bqm2#

这可能是因为当你向下滚动一页时,光标会向下移动一页。在vim中,光标总是在屏幕上。如果你用鼠标滚轮向下滚动,光标会“卡”在第一行(模scrolloff),并在你继续向下滚动时停留在那里。
也许在滚动之前使用ShiftV来启动基于行的可视选择,然后在选择上使用d或y?

xfb7svmp

xfb7svmp3#

我可以确认在安装了Vim extension的Visual Studio Code(VSC)中可以使用所需的功能。这是因为VSC在默认情况下不像Vim那样工作,而是像其他文本编辑器那样将光标保持在适当的位置。这个功能不仅使VSC可以忍受,而且证明在编写大块代码时比Vim更有用。
此外,VSC还允许使用<Ctrl> + /进行简单且与语言无关的注解/取消注解切换,这在与上述功能一起使用时也非常有用。

相关问题