のオフセットを取得したい
- 現在のカーソル位置
- 現在の選択範囲
vim では、ファイルの先頭から開始します。私はこれを python で行うので、vim の python スクリプトで行う方法のヒントは非常に役立ちます。
以前にスクリプトを作成するために vim.current.. を使用しましたが、一般的なオフセットではなく、行と列を使用しています。
前のすべての行の長さと現在の行の長さを計算する必要がありますか、それとももっと簡単な方法がありますか?
vim が+byte_offset
オプション付きでコンパイルされている場合、Python スクリプトで通常の の後に次のようimport vim
に使用できます。
vim.eval('line2byte(line("."))+col(".")')
カーソル位置のファイルの先頭からのバイトオフセットを取得し、他のマークについても同様です。より一般的には、行/列のペアがある場合、これは ( +byte_offset
vim がコンパイルされた方法であると仮定して) バイト オフセットを取得する方法です (byte2line
逆方向の関数もあります)。
vim モジュールは、vim の Python スクリプトで多くの機能を直接利用できるようにしますが、多くのvim.eval
場合vim.command
、それが最も簡単な (そして時には唯一の ;-) 必要なだけ深く入り込む方法であることがわかりました;-)。ああ、私はいつも、できる限り +justabouteverything で vim をコンパイルするようにしています;-)。
また、設定を確認することもできstatusline
ます。これにより、bye オフセットがステータスラインに追加されます。
set statusline+=%o
見る:h statusline
デフォルトのステータスラインは空白なので注意してください。それに %o を追加すると、すべてのデフォルトが失われます。