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_offsetvim がコンパイルされた方法であると仮定して) バイト オフセットを取得する方法です (byte2line逆方向の関数もあります)。

vim モジュールは、vim の Python スクリプトで多くの機能を直接利用できるようにしますが、多くのvim.eval場合vim.command、それが最も簡単な (そして時には唯一の ;-) 必要なだけ深く入り込む方法であることがわかりました;-)。ああ、私はいつも、できる限り +justabouteverything で vim をコンパイルするようにしています;-)。

于 2009-09-27T16:59:18.043 に答える
13

また、設定を確認することもできstatuslineます。これにより、bye オフセットがステータスラインに追加されます。

set statusline+=%o

見る:h statusline

デフォルトのステータスラインは空白なので注意してください。それに %o を追加すると、すべてのデフォルトが失われます。

于 2009-09-27T18:01:40.540 に答える