الحصول على إزاحة المخزن المؤقت الحالي في VIM (على وجه الخصوص، عبر البرمجة النصية بيثون)
سؤال
أريد الحصول على إزاحة
- موقف المؤشر الحالي
- نطاق الاختيار الحالي
في VIM، بدءا من بداية الملف. أفعل ذلك في بيثون، لذلك تلمح كيفية القيام بذلك مع البرمجة البرمجية بيثون VIM سيكون مفيدا للغاية.
لقد استخدمت VIM.Current .. قبل القيام البرمجة النصية، لكنها تستخدم خطوط وأعمدة بدلا من إزاحة عامة.
هل يجب علي حساب كمية جميع أطوال الأسطر السابقة + الصف الحالي، أم أن هناك طريقة أبسط؟
المحلول
إذا تم تجميع VIM الخاص بك مع +byte_offset
الخيار، ثم في نص الثعبان بعد المعتاد import vim
, ، يمكنك استخدام، على سبيل المثال:
vim.eval('line2byte(line("."))+col(".")')
للحصول على إزاحة البايت من بدء ملف موقف المؤشر، وبالمثل للعلامات الأخرى. بشكل عام، إذا كان لديك زوج / عمود زوج هذا (على افتراض +byte_offset
هو كيف تم تجميع VIM الخاص بك مع) هو الطريق للحصول على تعويض البايت (هناك أيضا byte2line
وظيفة للذهاب في الاتجاه الآخر).
في حين أن وحدة VIM تجعل الكثير من الوظائف متاحة مباشرة إلى البرامج النصية Python في VIM، فقد وجدت ذلك vim.eval
و vim.command
غالبا ما يكون مائع (وأحيانا الوحيد ؛-) للحصول على عميق حسب الحاجة ؛-). أوه، وأنا أحاول دائما الحصول على VIM مترجمة مع + Justabouteverything كل شيء كلما استطعت ؛-).
نصائح أخرى
قد ترغب أيضا في إلقاء نظرة على statusline
ضبط. هذا سيضيف إزاحة وداعا إلى الحالة:
set statusline+=%o
يرى :h statusline
فقط كن حذرا لأن الحالة الافتراضية فارغة فارغة، وإلغاء٪ O لذلك، فإنك تفقد كل الإعدادات الافتراضية.