تغيير همة المسافة البادئة السلوك حسب نوع الملف

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

سؤال

يمكن للشخص أن يفسر لي بعبارات بسيطة أسهل طريقة لتغيير المسافة البادئة سلوك همة استنادا إلى نوع الملف?على سبيل المثال, إذا قمت بفتح الملف 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

نوصي أيضا:

scroll top