الحصول على إزاحة المخزن المؤقت الحالي في VIM (على وجه الخصوص، عبر البرمجة النصية بيثون)

StackOverflow https://stackoverflow.com/questions/1483796

  •  18-09-2019
  •  | 
  •  

سؤال

أريد الحصول على إزاحة

  1. موقف المؤشر الحالي
  2. نطاق الاختيار الحالي

في 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 لذلك، فإنك تفقد كل الإعدادات الافتراضية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top