تغيير همة المسافة البادئة السلوك حسب نوع الملف
-
03-07-2019 - |
سؤال
يمكن للشخص أن يفسر لي بعبارات بسيطة أسهل طريقة لتغيير المسافة البادئة سلوك همة استنادا إلى نوع الملف?على سبيل المثال, إذا قمت بفتح الملف Python ينبغي أن المسافة البادئة مع 2 أماكن, ولكن إذا قمت بفتح ملف النصي Powershell يجب أن تستخدم 4 مسافات.
المحلول
ويمكنك إضافة ملفات .vim
ليتم تنفيذها كلما مفاتيح همة لنوع الملف معين.
وعلى سبيل المثال، لدي ~/.vim/after/ftplugin/html.vim
الملف مع هذه المحتويات:
setlocal shiftwidth=2
setlocal tabstop=2
والذي يسبب همة لاستخدام علامات التبويب مع عرض 2 أحرف الطعج (يتم تعيين الخيار noexpandtab
عالميا في أي مكان آخر في التكوين بلدي).
وهذا هو وصف هنا: http://vimdoc.sourceforge.net/htmldoc/usr_05 هتمل # 05.4 ، انتقل لأسفل إلى قسم الإضافات على نوع الملف.
نصائح أخرى
استخدم ftplugins أو autocommands لضبط الخيارات.
ftplugin
في ~/.vim/ftplugin/python.vim:
setlocal shiftwidth=2 softtabstop=2 expandtab
ولا تنسى أن تشغيلها في ~/.vimrc
:
filetype plugin indent on
و(:h ftplugin
لمزيد من المعلومات)
autocommand
في ~/.vimrc
:
autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab
ويمكنك استبدال أي من الأوامر طويلة أو إعدادات مع الإصدارات القصيرة:
autocmd
: au
setlocal
: setl
shiftwidth
: sw
tabstop
: ts
softtabstop
: sts
expandtab
: et
وأود أن أقترح أيضا تعلم الفرق بين tabstop
وsofttabstop
. وهناك الكثير من الناس لا يعرفون عن softtabstop
.
وتحرير ~/.vimrc
الخاص بك، وإضافة أنواع الملفات المختلفة لتزكي مختلفة، منها مثلا. أريد المسافة البادئة html/rb
لمدة 2 مسافات، والمسافة البادئة ملفات js/coffee
لمدة 4 المساحات:
" by default, the indent is 2 spaces.
set shiftwidth=2
set softtabstop=2
set tabstop=2
" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab
والرجوع إلى: وضع فيم تفضيلات المسافات البيضاء من نوع الملف
ووضع autocmd الأوامر استنادا لاحقة الملف في الخاص ~ / .vimrc
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile *.pl syntax on
والأوامر التي تبحث عنها هي على الارجح نهاية الخبر = وجنوب غرب =
وعادة ما يعمل مع expandtab
ولكن ذلك makefiles.وأضاف لي مؤخرا:
:autocmd FileType make set noexpandtab
إلى نهاية .vimrc الملف ويسلم Makefile, makefile, و *.mk كما makefiles و لا توسيع علامات التبويب.ويفترض يمكنك توسيع هذا.
وأنا دائما مندهش من قبل الناس الذين تغيير حجم علامات التبويب لنوع الملف مختلفة. ما على الأرض تفعل عندما تنظر في ملف باستخدام أقل؟
وشخصيا، وأنا استخدم هذه الإعدادات في .vimrc:
autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
وهذا قد يكون معروفا من قبل أكثر منا، ولكن على أي حال (كنت في حيرة المرة الأولى):
القيام :set et
(expandtabs :set
) لا يغير من علامات التبويب الموجودة بالفعل في ملف، واحد له علاقة :retab
.
على سبيل المثال:
:set et
:retab
ويتم استبدال علامات التبويب في ملف بمسافات كافية. لديك علامات التبويب يعود ببساطة القيام به:
:set noet
:retab
واليوم، قد تتمكن من محاولة editorconfig ، وهناك أيضا <لأ href = "HTTPS: // جيثب. كوم / editorconfig / editorconfig-همة "يختلط =" نوفولو noreferrer "> همة المساعد للحصول على ذلك. مع ذلك، كنت قادرا ليس فقط تغيير حجم المسافة البادئة في همة، ولكن في كثير من غيرهم من المحررين، والحفاظ على أساليب الترميز متسقة.
وفيما يلي editorconfig بسيطة، كما ترون، فإن الملفات الثعبان لها 4 مساحات للتسنن، وسوف ملفات قالب الصلصال يكون فقط 2.
# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4
# 2 space indentation for pug templates
[*.pug]
indent_size = 2
في حين يمكنك تكوين همة هو المسافة البادئة على ما يرام باستخدام المسافة البادئة المساعد أو يدويا باستخدام الإعدادات ، أوصي باستخدام بيثون السيناريو يسمى Vindect هذا تلقائيا بتعيين الإعدادات ذات الصلة بالنسبة لك عند فتح الملف python.استخدام هذا غيض لجعل استخدام Vindect أكثر فعالية.عندما بدأت لأول مرة التحرير الثعبان الملفات التي تم إنشاؤها من قبل الآخرين مع مختلف المسافة البادئة أنماط (علامة التبويب مقابل مساحة و عدد الأماكن محدود), كانت محبطة بشكل لا يصدق.ولكن Vindect جنبا إلى جنب مع هذا الملف indent
نوصي أيضا:
وأنا استخدم الأداة التي كتبت في C دعا autotab
أ >. ويحلل أول بضعة آلاف من خطوط الملف الذي قمت بتحميل ويحدد القيم للمعلمات فيم shiftwidth
، tabstop
وexpandtab
.
ويتم ترجمة ذلك باستخدام، على سبيل المثال، gcc -O autotab.c -o autotab
. تعليمات للاندماج مع فيم هي في رأس تعليق في الأعلى.
وAutotab هو ذكي إلى حد ما، ولكن يمكن الحصول على الخلط من وقت لآخر، ولا سيما التي تم الحفاظ بشكل غير متسق باستخدام أساليب المسافة البادئة مختلفة.
إذا ملف يستخدم الواضح علامات التبويب، أو مزيج من علامات التبويب ومسافات، على المسافة البادئة، Autotab ومعرفة التبويب حجم ما يتم استخدامه من قبل النظر في عوامل مثل المواءمة بين عناصر الداخلية عبر خطوط متتالية، مثل التعليقات.
وكان يعمل لمجموعة متنوعة من لغات البرمجة، وغير متسامح ل"من فرقة" العناصر التي لا تطيع الزيادات المسافة البادئة، مثل التوجيهات C تجهيزها، C تسميات بيان، ناهيك عن الأسطر الفارغة واضحة.