أفضل طريقة لتنظيم إعدادات filetype في .vim و .vimrc؟
سؤال
أنا أعاني من خلال Dim dotfiles لترتيبها. لقد لاحظت أنه مع مرور الوقت أضفت العديد من إعدادات Filetype المحددة بطرق مختلفة غير متناسقة. لنفترض أنني أخصب Python:
au BufRead,BufNewFile *.py (do something)
. لا أحب هذا لأن بعض ملفات Python قد لا تحتوي على .py إنهاء.au FileType python (do something)
. يبدو أن هذا خيارًا أفضل لأنه لا يعتمد على الملف الذي يحتوي على .py إنهاء. العيب هو أن Vim لا يعرف عن بعض الأنواع. يمكنني جعل VIM التعرف على أنواع إضافية ، لكن لدي أيضًا العديد من الطرق غير المتسقة للقيام بذلك: أ.vim/filetype.vim
ملف ، آخر في.vim/after/filetype.vim
ومختلفset filetype
الأوامر في.vimrc
.أضف
.vim/ftplugin/python.vim
ملف مع إعدادات FILETYPE محددة. انا افهم ال$VIMRUNTIME/ftplugin/python.vim
يمكن أن تتجاوز أي إعدادات أجريها هنا. مشكلة واحدة هي أنني لست متأكدًا من كيفية تفاعل هذا.vim/filetype.vim
و.vim/after/filetype.vim
.أضف
.vim/after/ftplugin/python.vim
. أفهم أن هذا يتم تحميله بعد$VIMRUNTIME/ftplugin/python.vim
لذلك يمكن أن يكتب الإعدادات من هناك. كما في الطريقة السابقة ، لست متأكدًا من كيفية تفاعله معfiletype.vim
الملفات.
لذلك لديّ أربع طرق على الأقل للقيام بذلك ، دون ذكر ملفات بناء الجملة والمكونات الإضافية الخاصة بـ fileType. يبدو لي أن أفضل طريقة للقيام بذلك هي وضع إعدادات محددة في filetype في after/ftplugin
لذلك لا يتم الكتابة فوق ، و filetypes.vim
في after
لنفس السبب.
ومع ذلك ، قبل أن أتابع أود أن أسأل ما إذا كان لدى أي شخص اقتراحات حول أفضل طريقة للتعامل مع إعدادات محددة.
المحلول
أقوم بتخزين إعدادات Python الخاصة بي $HOME/.vim/ftplugin/python.vim
, ، بما أنني لا أفعل أي شيء لأتعارض معه $VIMRUNTIME/ftplugin/python.vim
.
الحفاظ على هذه الإعدادات في ftplugin
يبقى الملف لي .vimrc
لطيفة وعامة وأسهل في الحفاظ عليها (لا تزال كبيرة جدًا بعد أكثر من عشر سنوات من استخدام VIM).
أذا أردت انقلب ماذا ftplugin
S مع توزيع VIM الخاص بك ، ثم $HOME/.vim/after/ftplugin/python.vim
هو ما تريد ، كما هو قراء after
هؤلاء.
بصورة مماثلة $HOME/.vim/filetype.vim
سيتم الحصول عليها من قبل $VIMRUNTIME/filetype.vim
وهذا بدوره سيتم الحصول عليه من قبل $HOME/.vim/after/filetype.vim
.
استدعاء :scriptnames
سوف تسرد جميع أسماء البرامج النصية المصدر ، بالترتيب تم الحصول عليها لأول مرة.
:help filetype
يوفر معلومات شاملة جدا عن كل هذا.