وضع .vimrc في دليل Vimfiles
-
29-09-2019 - |
سؤال
أريد أن أبقي تكوينات VIM و EMACS ضمن التحكم في الإصدار ، لكنني لا أريد مجلد منزلي بالكامل هناك (أو بالأحرى ، أفعل ، ولكن يجب أن يكون هناك 3 مستودعات منفصلة). مع emacs الأمر سهل ؛ إذا ~/.emacs
غير موجود ، إذن ~/.emacs.d/init.el
يستخدم كملف init. لذلك يمكنني الحصول على repo git منفصلة في ~/.emacs.d/
. مع VIM ، على ما يبدو .vimrc
يستطيع فقط موجود في مجلد المنزل وليس في ~/vimfiles
(ما يعادل ~/.emacs.d
). هو هذه أفضل طريقة لوضعها .vimrc
تحت السيطرة على الإصدار؟
المحلول
ربما تحريك الخاص بك .vimrc
إلى ~/.vim/
وسوف تفعل Symlinking إلى المنزل؟
هناك طريقة أخرى أكثر حداثة هي نقل البرنامج النصي لبدء التشغيل إلى ~/.vim/plugins/
, ، ربما قم بإنشاء دليل فرعي هناك ، ونصوص init واحدة أو متعددة: VIM سيفعل أ :runtime! plugin/**/*.vim
عند البدء.
نصائح أخرى
فقط ضع دمية .vimrc في ~ مع سطر واحد فقط:
source ~/path/to/real/vimrc
يعمل كالسحر
كما يقترح @بروجو في إجابتهم ، ~/.vimrc
يمكن نقل الإعدادات إلى البرنامج النصي "المكون الإضافي" داخل ملف مثل ~/.vim/plugin/00rc.vim
.
هناك بعض الأشياء التي يجب وضعها في الاعتبار عند السير في هذا الطريق:
يتوقع المستخدمون والمكونات الإضافية على حد سواء أن الإعدادات في ~/.vimrc
تم تحميلها قبل أن يتم وصف الإضافات في :help startup
. ~/.vim
عادة ما يكون أولاً في "RunTimePath" ، ولكن إذا كان لدى المستخدم مكونات إضافية في ~/.vim/plugin
, ، ال .vimrc
يجب أن يكون الاستبدال معجميًا أولاً لضمان تحميله أولاً ، ربما ~/.vim/plugin/00rc.vim
.
عندما تنتقل عملية بدء التشغيل VIM من الخطوة 3 "تنفيذ الأوامر السابقة" (حيث .vimrc
كان من الممكن أن تقرأ مرة أخرى ، انظر :help startup
) إلى الخطوة 4 "تحميل البرامج النصية المكون الإضافي" ، يتم تشغيله :runtime! plugin/**/*.vim
. يبحث هذا الأمر من خلال "RunTimePath" لمطابقة الملفات للمصدر ثم يبدأ في الحصول على مصادرها. هذا يعني أنه إذا كان هناك شيء ما ~/.vim/plugin/00rc.vim
يعدل "RunTimepath" ، ثم قد فات الأوان للتأثير على المكونات الإضافية التي يتم تشغيلها. يحدث هذا بشكل شائع مع العوامل الممرضة وفي هذه الحالة ، يمكن العمل حولها عن طريق إضافة الأسطر التالية إلى نهاية ~/.vim/plugin/00rc.vim
:
" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim
أخيرًا ، (مرة أخرى كما هو موضح في :help startup
)، اذا كان ~/.vimrc
الملف غير موجود ، سوف يبحث VIM عن ملفات أخرى مثل ~/.exrc
لذلك قد يكون من الضروري إزالتها إذا كانت محتوياتها غير مرغوب فيها.
يضيف خطوة إلى العملية ، لكن لديّ نص باش فقط Deploy.sh في إعدادات VIM الخاصة بي.
#!/bin/bash
if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
echo "Already have ~/.vimrc symlink, we're good"
else
echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
ln -s ~/.vim/vimrc ~/.vimrc
fi
git submodule init
git submodule update
يمكنك فقط الاحتفاظ بنسخة احتياطية في التحكم في الإصدار ونشره (أي تحركه) إلى الدليل المنزلي عندما تحتاجه. يمكنك كتابة برنامج نصي سهل لإدارة كل هذا التعامل مع الشفافية على الأقل لن يبدو الأمر وكأنه الكثير من العمل المزعج لنقله ذهابًا وإيابًا.