vim - اضبط مسافة بادئة تلقائية لملء المساحة البادئة بمسافة أو علامة جدولة

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

  •  28-10-2019
  •  | 
  •  

سؤال

يبدو أنه إذا قمنا بتمكين "ai"، فسوف يملأ vim المساحة البادئة بـ tabstop.يمكنني أن أملأها بمساحة فقط بـ "et".لا أحب ملف C الممزوج بالمسافة وtabstop.

فيمرك الخاص بي:

set ts=4 et
set ai
set hlsearch
syntax on
filetype plugin indent on
autocmd FileType make setlocal noexpandtab

ومع ذلك، في بعض الحالات، أحتاج إلى إدخال علامة التبويب عندما أضغط على "TAB" على لوحة المفاتيح، على سبيل المثال، في ملف makefile وبعض الحالات الأخرى.الأمر "autocmd FileType" ليس جيدًا:لا يمكنني إضافة كل نوع ملف في vimrc.

ما أريده بسيط:

  1. تلقائي لملء المساحة الرائدة بالمساحة ؛
  2. عند الضغط على "علامة التبويب" على لوحة المفاتيح ، إدخال TabStop ، وليس المساحة (لذلك لا "ET")

كيف افعلها؟

هل كانت مفيدة؟

المحلول

inoremap <expr> <tab> ((getline('.')[:col('.')-2]=~'\S')?("\<C-v>\t"):(repeat(' ', &ts-((virtcol('.')-1)%&ts))))

إنه يفعل نفس إجابةLynch إذا قرأتها بشكل صحيح.

تستطيع ايضا استخذام <C-v><Tab>:سيتم إدراج هذا <Tab> دون استدعاء أي تعيينات ويتجاهل علامة التبويب القابلة للتوسيع إلا إذا قمت بإعادة التعيين <C-v> أو <C-v><Tab> لسبب ما.

إذا كنت تريد فقط إدراج علامة التبويب، فافعل ذلك

inoremap <Tab> <C-v><Tab>

وسوف يتجاهل إعداد توسيع علامة التبويب.

نصائح أخرى

لقد فعلت ذلك باستخدام دالة. لقد اختبرت ذلك ، ولكن ربما في بعض الحالات الخاصة سيكون عليك إصلاح بعض الأخطاء. حاول إضافة هذا إلى vimrc الخاص بك: Genacodicetagpre

في الأساس ، يقوم بإعادة تعيين مفتاحك في الوضع المرئي إلى الوظيفة Inserttab (). لاحظ أيضًا أنه إذا قمت بتغيير ts لشيء آخر غير 4 ، فسيظل ينتج 4 مسافات بدلاً من مسافتين لأن القيمة مشفرة بشدة.

لست على دراية كبيرة بنصوص vim ، لكنني أعتقد أن جميع المتغيرات المستخدمة ستكون عالمية وهذا أمر سيء.

نسيت أن أذكر أنه "لرؤية" المساحات البيضاء ، يمكنك استخدام رمز الترقيم العام. يمكنك تعطيل هذا باستخدام رمز الترقيم العام. يمكنك أيضًا في الوضع العادي استخدام رمز الترقيم العام لمعرفة معلومات حول الحرف الذي يظهر عليه المؤشر.

تعديل أدرك أنك قد ترغب في إدراج علامة تبويب في بداية السطر. نصي أدخل مسافة في البداية وعلامة تبويب في أي مكان آخر.

إذا كنت تريد حقًا علامة تبويب في كل مرة تضغط فيها على مفتاح tab ، فيمكنك ببساطة استخدام هذا:

Genacodicetagpre

لكني لا أرى النقطة ، فباستخدام هذا الإصدار لن تتمكن أبدًا من وضع مسافة بادئة يدويًا من وضع الإدراج.

إحدى طرق القيام بذلك هي

  1. : تعيين sw= 4 (أو ما تريد)
  2. : مجموعة ts= 46 (أو عدد كبير)

بعد ذلك ، لن يُدرج التعيين التلقائي علامات التبويب ما لم تصل إلى 46 مسافة ، وفي هذه الحالة يمكنك وضع رقم أكبر.

اسحب هذا فقط إذا كان شخص آخر يستخدم علامات التبويب ، فيجب عليك إعادة تعيين ts للاتفاق على الملف الذي تقوم بتحريره.من ناحية أخرى ، ستجعل علامات التبويب واضحة على الفور ، وهو أمر مرغوب فيه أيضًا.

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