15

我想得到的偏移量

  1. 当前光标位置
  2. 当前选择范围

在 vim 中,从文件的开头开始。我在 python 中执行此操作,因此提示如何使用 vim 的 python 脚本执行此操作将非常有帮助。

我以前使用 vim.current.. 来编写脚本,但它使用行和列而不是一般的偏移量。

我是否必须计算所有前面的行长度+当前行的数量,还是有更简单的方法?

4

2 回答 2

16

如果您的 vim 是使用该+byte_offset选项编译的,那么在通常的 Python 脚本中import vim,您可以使用,例如:

vim.eval('line2byte(line("."))+col(".")')

从光标位置的文件开头获取字节偏移量,对于其他标记也是如此。更一般地说,如果你有一个行/列对(假设+byte_offset是你的 vim 是如何编译的)是获取字节偏移量的方法(还有一个byte2line函数可以采用另一种方式)。

vim.eval虽然 vim 模块确实为 vim 中的 Python 脚本提供了许多直接可用的功能,但我发现这vim.command通常是最方便的(有时也是唯一的;-)方法,可以根据需要深入了解;-)。哦,我总是尽量用 +justabouteverything 编译一个 vim;-)。

于 2009-09-27T16:59:18.043 回答
13

您可能还想查看statusline设置。这会将再见偏移量添加到状态行:

set statusline+=%o

:h statusline

请小心,因为默认状态行是空白的,并且通过将 %o 附加到它,您将失去所有默认值。

于 2009-09-27T18:01:40.540 回答