![如何在 vim 中获取“屏幕行”行号?](https://linux22.com/image/1567008/%E5%A6%82%E4%BD%95%E5%9C%A8%20vim%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E2%80%9C%E5%B1%8F%E5%B9%95%E8%A1%8C%E2%80%9D%E8%A1%8C%E5%8F%B7%EF%BC%9F.png)
我知道在 VIM 中你可以使用 :set number,但如果一行换行,那么它仍然算作一行。这就是 vim 所称的逐行。
我可以使用 和 以“屏幕线”的方式上下移动,gj
因此gk
即使一行在屏幕上换行到多行,它也会在屏幕上一次上下移动一行,但如果我想以屏幕行方式删除接下来的 30 行,最好有屏幕行数字。
这可能吗/我该怎么做?
答案1
几乎所有 Vim 命令都针对物理行,而不是软换行的屏幕行。这就是为什么像 这样的功能'relativenumber'
也计算物理行的原因。您的编辑任务不应该严重依赖gj
/导航gk
。尝试以下替代方案之一:
- 如果可能,请重新格式化文档,使其行数更短。
:autocmd
如果磁盘上的格式无法更改,您甚至可以定义 s 来在加载/保存时断开/重新组合行数。 - 使用视觉模式(与
j
和/或一起使用gj
)迭代选择区域。由于您可以直接看到受影响的区域,因此这也应该相当快。
如果你真的想要基于屏幕行数的编号,你可以采用旧的RelativeNumber 插件通过模拟上述选项标志柱,并修改该插件以显示屏幕线条。不过,这仍然是一种相当粗糙的体验。