ملاحظة من المترجم: هذا هو الجزء الأول من المقال الضخم (الضخم بالفعل) حول Vim وقدراته من المطور من Minneapolis ومؤلف مشروع PostgREST ، Joe begriffs Nelson.
الجزء الأول من المقال مخصص للتعرف على تاريخ فيم كمحرر ، ويتحدث المؤلف عن عدد من الحقائق المثيرة للاهتمام حول قدرات فيم. في الجزء الثاني من الترجمة ، سيتم تركيز كل الرقائق والخارقة التي قرر جو مشاركتها مع الجمهور ، وهناك يتلاشى السرد على هذا النحو ويظل هناك فقط مجموعة من الإرشادات للعمل. نظرًا لأن النص الأصلي له أبعاد غير مقبولة تمامًا ، فقد قسمنا هذه القصة إلى مقالتين متساويتين في الحجم تقريبًا. اليوم هو أول اثنين من المنشورات. هل لديك قراءة لطيفة.
تستند هذه المقالة إلى البحث في تاريخ Vim وقراءة غلاف دليل المستخدم الخاص به لتغطية. آمل أن تساعدك هذه الملاحظات على اكتشاف (أو إعادة اكتشاف؟) الوظيفة الأساسية لهذا المحرر بنفسك ، وكذلك السماح لك بالتخلي عن استخدام ملفات vimrc المحذوفة واستخدام المكونات الإضافية بشكل أكثر تفكيرًا.

مراجع
لتجاوز الموضوعات المعتادة ، أوصي بالحصول على نسخة ورقية من هذا الدليل ومرجع جيب واسع. لم أتمكن من العثور على نسخة مطبوعة من دليل المستخدم لبرنامج Vim ، لذلك في النهاية قمت فقط بطباعة
ملف PDF الذي يأتي مع المحرر باستخدام printme1.com.
$VIMRUNTIME/doc/usr_??
يأتي مع البرنامج في
$VIMRUNTIME/doc/usr_??
. كقائمة مريحة من الأوامر ، يمكنني تقديم المشورة للكتاب المرجعي
"Vi and Vim Editors Pocket" .
محتوى- القصة
- التسلسل الهرمي التكوين
- الإضافات الطرف الثالث
- النسخ الاحتياطية والعمولات
- تشمل والمسار
- تحرير وتجميع حلقة
- Diffs وبقع
- الإدخال / الإخراج العازلة
- أنواع الملفات
- لا تنسى الماوس
- miscellanea
القصة
الميلاد السادس
توجد أوامر ووظائف Vi لأكثر من خمسين عامًا ، بدءًا من محرر QED. هنا هو الجدول الزمني له:
- 1966: QED (محرر سريع) في نظام المشاركة بالوقت بيركلي
- يوليو 1969: بمساعدتهم ، هبطوا على سطح القمر (حسناً ، للإشارة)
- Aug 1969: QED → ed at AT&T
- 1976 فبراير: ed → em ("محرر للبشر") في كلية كوين ماري
- 1976: em → ex ("EXtended") في جامعة كاليفورنيا ، بيركلي
- 1977 أكتوبر: السابقين يتلقى الوضع المرئي ، السادس النص الطرفية
إذا قرأت
QED ودليل
سابق ، فقد تجد بعض أوجه التشابه بينهما. يستخدم كلا المحررين قواعد نحوية مماثلة للإشارة إلى نطاقات الخطوط والعمل معها.
تم تصميم المحررين مثل QED ed و em لأجهزة الطباعة ، والتي كانت في معظمها آلات كاتبة كهربائية عادية بها مودم متصل بها. تعرض هذه المحطات "الناسخة بالكامل" أوامر على الورق ومن الواضح أنه بعد الدخول كان من المستحيل إجراء أي تصحيحات. لذلك ، تتكون عملية التحرير من تحرير أوامر المستخدم يدويًا على الورق ، ثم إعادة إدخالها.
بحلول عام 1976 ، ظهرت محطات الفيديو ، على سبيل المثال ، ADM-3A. تمت إضافة "الوضع المفتوح" إلى محرر Ex ، والذي سمح بالتحرير عبر محطة فيديو ضمن صفحة واحدة. تمت إضافة وضع مرئي للتوجيه على خطوط المحطة الطرفية باستخدام المؤشر. تم تنشيط الوضع المرئي بواسطة الأمر "vi" وتحديثه باستمرار للملف المعروض على الشاشة ، مع الحفاظ على موضع سطر الأوامر في أسفل الشاشة. حقيقة مثيرة للاهتمام: تم وضع الأسهم على مفاتيح h ، j ، k ، l على ADM-3A ، مما سمح لنا بتحريك المؤشر إلى vi.
يمكنك معرفة المزيد حول هذا الانتقال من ed إلى ex / vi في
مقابلة مع Bill Joy . في ذلك ، يتحدث عن كيفية إنشاء ex / vi وعن بعض الأشياء التي خيبت آماله في النهاية.
كلاسيك السادس هو مجرد تغيير هو السابقين. يتم تمثيل كلاهما بواسطة نفس الملف الثنائي ، والذي يمكن تشغيله في الوضع السابق والوضع السادس ، اعتمادًا على اسم الملف القابل للتنفيذ. تركة هذه القصة بأكملها هي أن ex / vi "تتكشف" عند استخدامها ، لا يتطلب موارد النظام تقريبًا ويمكن أن يعمل في ظروف محدودة النطاق الترددي. كما أنه متوفر في معظم الأنظمة الحالية وهو
موصوف بالكامل في POSIX.
السادس ل vim
مشتق من ed ، وكان المحرر السابق / السادس الملكية الفكرية لشركة AT&T. لاستخدام vi على منصات أخرى بخلاف Unix ، كان على الأشخاص كتابة نسخ تحتوي على قاعدة شفرة مصدر مختلفة.
هؤلاء بعض منهم:
- nvi - 1980 لـ 4BSD
- كالفين - 1987 لدوس
- الدنيئة - 1990 لدوس
- ستيفي - 1987 لأتاري ش
- الفيس - 1990 ل Minix و 386BSD
- هيم - 1991 لأميغا
- أفعى - 1995 ل Emacs
- إلوين - 1995 لنظام التشغيل Windows
- lemmy - 2002 لنظام التشغيل Windows
سوف نركز على استنساخ من وسط القائمة - فيم. أراد برام مولينار استخدام vi على Amiga وبدأ النقل مع Atari وتطوير sti stone. وسمى نسخته من ميناء "التقليد". إذا كنت تريد التعرف على هذه العملية بشكل مباشر ، فابحث عن مقابلته في مجلة Free Software Magazine.
في الإصدار 1.22 ، تمت إعادة تسمية Vim باسم "Vi IMproved" ، مما يشير إلى تفوق النسخة على الأصل. فيما يلي رسم بياني للإصدارات الرئيسية التالية مع وصف لبعض الميزات:

لمزيد من المعلومات حول كل إصدار ، يجب استخدام التعليمات ، على سبيل المثال ، vim8. للاطلاع على التحديثات المخطط لها ، وكذلك قائمة بالأخطاء المعروفة ، يجب أن تنتقل إلى todo.txt.
على سبيل المثال ، تضمن الإصدار الثامن بعض الدعم للوظائف غير المتزامنة بسبب الضغط على المشروع من NeoVim.
أراد مطورو هذا الأخير تشغيل التصحيح و REPL لنصوص الويب مباشرة داخل المحرر.
عموما فيم هو superportable. مع تكييف التاريخ الكامل لوجوده للعمل على منصات مختلفة تمامًا ، اضطر هذا المحرر للبقاء في إطار ثقافة الترميز "السهلة". تعمل Vim على OS / 390 و Amiga و BeOS و BeBox و Macintosh Classic و Atari MiNT و MS-DOS و OS / 2 و QNX و RISC-OS و BSD و Linux و OS X و VMS و MS-Windows. يمكنك الاعتماد على Vim في أي مكان ولا تهتم بالمعدات التي تستخدمها.
في نهاية المسار الأصلي vi ، في عام 2002 ، كان لا يزال يتم نشر التعليمات البرمجية المصدر ex / vi بموجب ترخيص برنامج BSD المجاني. السحرة متاحة في
ex-vi.sourceforge.net .
ولكن دعونا ننكب على العمل. قبل البدء في تحليل Vim ، من المفيد معرفة كيفية تنظيم وقراءة ملفات التكوين الخاصة به.
التكوين الهرمي
في السابق ، اعتقدت خطأً أن Vim يحصل على جميع الإعدادات والبرامج النصية فقط من ملف .vimrc. يمكن أن يؤدي عرض مستودعات "dotfiles" العشوائية إلى تقوية هذا الرأي. في كثير من الأحيان ، يقوم الناس بتحميل ملفات وحشية في جوهرها .vimrc ومهمتها هي التحكم في كل جانب من جوانب المحرر. وتسمى هذه التكوينات الضخمة أحيانًا أيضًا "vim distros".
في الواقع ، لدى Vim بنية أنيقة يكون فيها .vimrc مجرد واحدة من "نقاط الدخول" العديدة. في الواقع ، يمكنك أن تسأل Vim عن النصوص التي يتم تحميلها. للقيام بذلك ، قم بتحرير بعض الكود المصدري لمشروع عشوائي على جهازك ، وقم بتنزيله ثم قم بتشغيل الأمر
:scriptnames
هذه القائمة تستحق القراءة. حاول أن تخمن ما تفعله هذه البرامج النصية وتدوين الأدلة التي توجد فيها.
كانت القائمة أطول مما كنت تتوقع؟ إذا كنت قد قمت بتثبيت العديد من المكونات الإضافية ، فإن المحرر لديه الكثير للقيام به. تحقق من أنه يبطئ عند بدء التشغيل عن طريق تشغيل أمر إنشاء start.log التالي:
vim --startuptime start.log name-of-your-file
ما عليك سوى مقارنة سرعة بدء Vim من خارج الصندوق:
vim --clean --startuptime clean.log name-of-your-file
لتحديد البرامج النصية التي يجب تحميلها عند بدء التشغيل أو أثناء تحميل المخزن المؤقت ، تحتاج إلى التحقق من مسار وقت تشغيل Vim. يتم تمثيل هذا المسار من خلال قائمة الدلائل مفصولة بفواصل ، كل منها يحتوي على بنية مشتركة. يتحقق Vim من هذه الهياكل في كل دليل للعثور على البرامج النصية لبدء التشغيل. تتم معالجة الدلائل بدقة بالترتيب الذي توجد به في القائمة.
تحقق من مسار التنفيذ على نظامك من خلال هذا الأمر:
:set runtimepath
يحتوي نظامي على الدلائل التالية المحددة بشكل افتراضي للتحقق من runtimepath. لم تكن جميعها موجودة ، ولكن سيظل Vim يحاول الوصول إليها وسيعمل على التحقق من المحتويات إذا كانت لا تزال في مكانها:
~/.vim
الدليل الرئيسي ، والمصممة لملفات التعريف التي تم إنشاؤها.
/usr/local/share/vim/vimfiles
دليل Vim على مستوى النظام ، لملفات التعريف ذات امتيازات مسؤول النظام.
/usr/local/share/vim/vim81
Aka $ VIMRUNTIME ، للملفات الموزعة مع Vim.
/usr/local/share/vim/vimfiles/after
في دليل Vim على مستوى النظام ، يوجد أيضًا الدليل بعد. الغرض منه هو إضافة الإعدادات الشخصية لمسؤول النظام "الافتراضي".
~/.vim/after
دليل "بعد" في الدليل الرئيسي. يعد ذلك ضروريًا حتى لا تلغي التكوينات الشخصية أو تتداخل مع الإعدادات على مستوى النظام أو "الإعدادات الافتراضية".
بشكل عام ، تتم معالجة الدلائل بنفس الترتيب المكتوب بها في start.log ، يتم إجراء استثناء فقط لـ "بعد". هذا هو دائما في نهاية القائمة وتتم معالجتها في الماضي.
عند معالجة كل دليل ، يبحث Vim عن المجلدات الفرعية فيها بأسماء محددة. لمعرفة المزيد حول هذا ، راجع مساعدة runtimepath. فيما يلي وصف موجز لتلك التي سننظر فيها بمزيد من التفصيل في النص:
plugin /
هنا تكمن ملفات البرنامج النصي Vim التي يتم تحميلها تلقائيًا عند تحرير أي نوع من الملفات. وتسمى أيضا "العالمية".
autoload /
(لا ينبغي الخلط بينه وبين "البرنامج المساعد"). تحتوي البرامج النصية لبدء التشغيل هذه على وظائف يتم تشديدها فقط بناءً على طلب البرامج النصية الأخرى.
ftdetect /
البرامج النصية لتحديد أنواع الملفات. في عملهم ، يعتمدون على الامتداد أو الموقع أو المحتوى الداخلي للملف.
ftplugin /
البرامج النصية التي يتم تنفيذها عند تحرير الملفات من نوع معروف.
compiler /
يحدد كيفية تشغيل برامج التحويل البرمجي المختلفة أو اختبارات الوبر ، وكيفية تحليل مخرجاتها. يمكن تقسيمها بين عدة أقدام في وقت واحد. لا يتم تنفيذ برنامج التحويل البرمجي تلقائيًا ويجب أن يتم استدعاؤه بواسطة أمر.
pack /
حاوية لحزم Vim 8 الأصلية ، الخلف لإدارة الحزمة بأسلوب Pathogen. لديها نظام التعبئة والتغليف الخاص بها ، لا يتطلب رمز الطرف الثالث للعمل.
وأخيرا ،
~ / .vimrc
هو فخ لإعدادات المحرر العام. يستخدم لتكوين الإعدادات الافتراضية ، والتي يمكن تخصيصها لنوع معين من الملفات. لعرض القائمة بأكملها ، يمكنك تحديد .vimrc وتشغيل أمر الخيارات.
الإضافات الطرف الثالث
تعد الإضافات مجرد نصوص Vim ، والتي يكفي وضعها في الأماكن الصحيحة في runtimepath. بشكل عام ، عملية التثبيت بسيطة للغاية: فقط قم بتحميل الملف (الملفات). المشكلة هي أن بعض الإضافات يصعب تحديثها أو إزالتها ، لأنها منتشرة في أدلة فرعية مختلفة وتسد مسارات التنفيذ بالبرامج النصية الخاصة بها. وهذا هو ، في النهاية من الصعب تحديد الملف الذي ينتمي إلى البرنامج المساعد.
لحل هذه المشكلة ، بدأ "مدراء البرنامج المساعد" في التطور. على vim.org كان هناك سجل للمكونات الإضافية على الأقل حتى عام 2003 ضمناً (إذا كان الأرشيف لا يكذب). ومع ذلك ، "مدراء البرنامج المساعد" ككيان دخل الموضة فقط بحلول عام 2008.
تضيف هذه الأدوات أدلة خاصة للمكونات الإضافية لتتبع مسارات التنفيذ وترتيب العلامات التي يمكن من خلالها تتبع المكونات الإضافية. يقوم معظم المديرين أيضًا بسحب تحديثات البرنامج المساعد من الشبكة.
أدناه قمت ببناء مديري البرنامج المساعد وفقا للتسلسل الزمني لحدوثها. استنادًا إلى نطاقات تواريخ الإصدار لأول وأحدث الإصدارات. إذا لم تكن هناك إصدارات رسمية ، فعندئذٍ أخذت أساسًا تواريخ الإصدار الأقدم والتحديث الأخير كأساس.
- مارس 2006 - يوليو 2014: Vimball
- أكتوبر 2008 - ديسمبر 2015: الممرض
- أغسطس 2009 - ديسمبر 2009: Vimana
- ديسمبر 2009 - ديسمبر 2014: VAM
- أغسطس 2010 - نوفمبر 2010: هزة
- أكتوبر 2010 - نوفمبر 2012: tplugin
- أكتوبر 2010 - فبراير 2014: Vundle
- مارس 2012 - مارس 2018: نكهة vim
- أبريل 2012 - مارس 2016: NeoBundle
- يناير 2013 - أغسطس 2017: إصابة
- فبراير 2013 - أغسطس 2016: vimogen
- أكتوبر 2013 - يناير 2015: vim-unbundle
- ديسمبر 2013 - يوليو 2015: Vizardry
- فبراير 2014 - أكتوبر 2018: vim-plug
- يناير 2015 - أكتوبر 2015: مساعد
- أغسطس 2015 - أبريل 2016: Vizardry 2
- يناير 2016 - يونيو 2018: dein.vim
- سبتمبر 2016 - الحالي: مواطن في Vim 8
- فبراير 2017 - سبتمبر 2018: minpac
- مارس 2018 - مارس 2018: أوتوباك
- فبراير 2017 - يونيو 2018: حزمة
- مارس 2017 - سبتمبر 2017: vim-pck
- سبتمبر 2017 - سبتمبر 2017: حزمة vim8
- سبتمبر 2017 - مايو 2019: فولت
- سبتمبر 2018 - فبراير 2019: vim-packager
- فبراير 2019 - فبراير 2019: plugpac.vim
أول ما تحتاج إلى الانتباه إليه في القائمة أعلاه هو التنوع الهائل. الثانية - كل الأدوات المقدمة كانت "حية" منذ حوالي أربع سنوات ، ثم ، على الأرجح ، عفا عليها الزمن.
إن المسار الأقل مقاومة في إدارة البرنامج المساعد هو ببساطة استخدام وظيفة Vim 8 المدمجة ، والتي لا تتطلب سحب أي رمز طرف ثالث. دعونا ننظر في كيفية القيام بذلك.
للبدء ، قم بإنشاء دليلين داخل runtimepath: التقيد والبدء.
mkdir -p ~/.vim/pack/foobar/{opt,start}
انتبه إلى العنصر النائب "foobar" (يمكن تغيير الاسم). انه يصنف تماما جميع الحزم التي تحصل في الداخل. يقوم معظم المستخدمين ببساطة بتفريغ جميع الإضافات الخاصة بهم في أي فئة واحدة ، وهذا أمر طبيعي بشكل عام. اختر أي اسم تريده ؛ سأستمر في استخدام foobar. من الناحية النظرية ، يمكنك أيضًا إنشاء عدة فئات ، على سبيل المثال
~/.vim/pack/navigation
و
~/.vim/pack/linting
. يرجى ملاحظة أن Vim لا يتعرف على التكرار بين الفئات ويقوم بتنزيل التكرارات مرتين إذا كانت موجودة.
يتم تحميل الحزم الموجودة في "start" تلقائيًا ، بينما لا يتم تحميل الحزم في "opt" حتى تكون من Vim باستخدام الأمر
:packadd
. يعد هذا الخيار مفيدًا للحزم النادرة الاستخدام ، ويدعمه Vim خارج الصندوق ، دون الحاجة إلى تشغيل البرامج النصية. لاحظ أن
:packadd
لا يوجد
:packadd
نظير لتفريغ الحزم.
لمراجعة هذا المثال ، سنضيف المكوّن الإضافي ctrlp search plugin لاختيار. قم بتنزيل وفك ضغط أحدث إصدار منه على:
curl -L https://github.com/kien/ctrlp.vim/archive/1.79.tar.gz \ | tar zx -C ~/.vim/pack/foobar/opt
سيقوم هذا الأمر بإنشاء المجلد
~ / .vim / pack / foobar / opt / ctrlp.vim-1.79
الحزمة الجاهزة للاستخدام. ارجع إلى vim وقم بإنشاء مؤشرات علامات التعليمات (فهرس العلامات) للحزمة الجديدة:
:helptags ~/.vim/pack/foobar/opt/ctrlp.vim-1.79/doc
سيقوم هذا الأمر بإنشاء ملف يسمى "العلامات" في المجلد مع أنواع الحزمة ، والتي تتيح السمات للعرض في نظام Vim الداخلي. طريقة بديلة: قم بتشغيل helptags ALL بعد تنزيل الحزمة ، وسيعتني الأمر بجميع الملفات ومسارات تنفيذها.
عندما ترغب في استخدام حزمة ، فقط قم بتنزيلها وتذكر أنه في هذه الحالة يعمل الإنهاء باستخدام علامات التبويب ، لذلك لا تحتاج إلى إدخال الاسم الكامل:
:packadd ctrlp.vim-1.79
يكمن الدليل الأساسي لـ Packadd في runtimepath ، والذي يسمح له باستخدام البرامج النصية من البرنامج المساعد و ftdetect. بعد تحميل ctrlp ، يمكنك استخدام الأمر CTRL-P لفتح بحث الملف عن طريق التطابق الجزئي.
يتعقب بعض الأشخاص دليل ~ / .vim الخاص بهم ويستخدمون git للتحكم في إصدار كل حزمة. من ناحيتي ، قمت بفك حزم الحزم من أرشيفات tar وتتبعها يدويًا من خلال المستودع. إذا كنت تستخدم حزم ناضجة بدرجة لا تتطلب تحديثات متكررة ، وكذلك برامج نصية ، فهي صغيرة جدًا ولا تشوش محفوظاتها.
النسخ الاحتياطي والتراجع عن الإصدارات
وفقًا لتفضيلات المستخدم الخاصة بك ، يمكن لـ Vim حمايتك من أربعة أسباب محتملة لفقدان البيانات:
- تحطم أثناء التحرير (بين يحفظ). يمكن للحماية من ذلك عن طريق حفظ التغييرات بشكل دوري في ملف الصفحة.
- الحماية من تحرير نفس الملف مع حالتين فيم ، الحماية من تغييرات الكتابة الفوقية التي تم إجراؤها من خلال مثيل واحد أو أكثر. يتم ذلك أيضًا من خلال ملف المبادلة.
- فشل أثناء عملية الحفظ نفسها بعد تغيير الملف النهائي ، ولكن حتى تتم كتابة المحتوى الجديد بالكامل. Vim يمكن أن يحميك من هذا مع وظيفة Writebackup. للقيام بذلك ، يقوم بإنشاء عملية حفظ ملف جديد يحل محل الملف الأصلي ، إذا سارت الأمور على ما يرام. يتم تحديد طريقة الاستبدال بواسطة إعداد النسخ الاحتياطي.
- حفظ المحتويات الجديدة للملف شريطة استعادة النسخة الأصلية. يسمح لك Vim بحفظ نسخة احتياطية من الملف بعد إجراء التغييرات.
ولكن قبل البدء في استكشاف هذه الإعدادات الذكية ، ماذا عن بعض النكات؟ فيما يلي بعض نماذج التعليقات من ملفات vimrc على GitHub:
"لا تقم بإنشاء ملف صفحة. قم بإدارة كل شيء من خلال التحكم في الإصدار ".
"النسخ الاحتياطي للمنفى. استخدم التحكم في الإصدار. "
"التحكم في الإصدار فقط!" فقط المتشددين! "
"نحن نعيش في عالم من التحكم في الإصدار ، لذلك المقايضات والنسخ الاحتياطي موجودة في سلة المهملات."
"لماذا تحتاج إلى ملفات النسخ الاحتياطي إذا كان التحكم في الإصدار كافٍ."
"لم أستخدم أبدًا ملفات Vim الاحتياطية ... استخدم التحكم في الإصدار."
"يمكن العثور على معظم الأشياء من خلال التحكم في الإصدار."
"تعطيل النسخ الاحتياطية للملفات ، لأنك لا تزال تستخدم نظام التحكم في الإصدار ؛)".
"وجاء التحكم في الإصدار ، وحفظنا Git."
"تعطيل ملفات المبادلة ونظام النسخ الاحتياطي. دائما استخدام التحكم في الإصدار! دائما! "
"لست بحاجة إلى نسخة احتياطية ، لأنني أعمل مع التحكم في الإصدار."
المفارقة هي أن التعليقات المذكورة أعلاه تعكس فقط فهم النوع الرابع والجزء الثالث من الفشل. إذا رفضت ملف المبادلة والنسخ الاحتياطي ، فستفقد الحماية في الحالة الموضحة في الفقرتين 1 و 2.
فيما يلي مثال على التكوين أوصي به للتشغيل الآمن:
" Protect changes between writes. Default values of " updatecount (200 keystrokes) and updatetime " (4 seconds) are fine set swapfile set directory^=~/.vim/swap// " protect against crash-during-write set writebackup " but do not persist backup after successful write set nobackup " use rename-and-write-new method whenever safe set backupcopy=auto " patch required to honor double slash at end if has("patch-8.1.0251") " consolidate the writebackups -- not a big " deal either way, since they usually get deleted set backupdir^=~/.vim/backup// end " persist the undo tree for each file set undofile set undodir^=~/.vim/undo//
تشتمل هذه الإعدادات على نسخ احتياطية للتسجيلات غير المكتملة ، ولكن لا تقم بحفظ الملفات بعد اكتمال العملية بنجاح ، لأن لدينا التحكم في الإصدار ، وأفضل تحكم في الإصدار ، و blah blah blah ، إلخ. إلخ يرجى ملاحظة أنك قد تحتاج إلى mkdir ~ / .vim / {swap ، undodir ، backup} ، وإلا فسيقوم Vim بالوصول إلى المجلد التالي القابل للقراءة. قد تحتاج أيضًا إلى تشغيل أمر chmod في المجلدات المستهدفة بحيث تكون محتوياتها خاصة ، حيث قد تحتوي ملفات المبادلة ومحفوظات النسخ الاحتياطي على معلومات حساسة.
تجدر الإشارة إلى أن ميزة مسارات التكوين الخاصة بنا هي أنها تغلق دائمًا بشرطة مائلة. يتيح هذا التدقيق الإملائي للوظيفة القضاء على الغموض المحتمل في مسارات ملفات الترحيل والنسخ الاحتياطي للملفات التي تحمل نفس الأسماء ، والتي توجد في دلائل مختلفة. على سبيل المثال ، سيتم حفظ ملف المبادلة لـ / foo / bar في ~ / .vim / swap /٪ foo٪ bar.swp (لقد نجحت في وضع علامات مائلة بعلامات النسبة المئوية). كان هناك خلل في Vim patch الأخيرة التي منعت من أخذ شرطة مائلة في الاعتبار ل backupdir ، لذلك تظهر الحماية ضدها أعلاه.
يحفظ Vim أيضًا محفوظات الاسترجاع لكل ملف ، بحيث يمكنك استعادة الإصدار الصحيح حتى بعد الخروج من وضع التحرير. على الرغم من أن هذه الوظيفة قد تبدو زائدة عن الحاجة على خلفية ملف المبادلة الذي لدينا بالفعل ، إلا أن سجل الاستعادة يعد خط دفاع إضافي أثناء تسجيل الملف.
عندما نتحدث عن الاستعادة ، تجدر الإشارة إلى أن Vim يدعم شجرة كاملة من محفوظات تحرير الملفات. هذا يعني أنه يمكنك إجراء تغيير ، واستعادته ، ثم تكرار نفس التغييرات مرة أخرى ، وسيكون كل هذا ثلاث نقاط استرداد مختلفة. يمكن التحقق من وقت ومدى التغييرات التي تم إجراؤها باستخدام أمر إلغاء التصفية ، ولكن من الصعب إخراج الشجرة منها. : 5 , . , — , undotree — .
. . : . , .
: , ,vim . nowritebackup, , . , Vim , . backupskip .
«patchmode» Vim . , . , tar-, , git. set patchmod = .orig foo- foo.orig.
Include path
(include) . Vim path, include, suffixesadd, includeexpr. (. help include-search) — ctags .
. , . ,
help include
.
,
[i
, ,
[d
.
gf
Vim . :find,
**/*
, . , .. , .
, . ( ) CTRL-D. .
" fuzzy-find lite nmap <Leader><space> :e ./**/
: path (headers) . , : checkpath, , . C checkpath. , , . , checkpath , .
«., / Usr / include ,,»
. , — /usr/include, . ,
:help file-searching
.
ftplugin ( ) , . : ./src/include ./include.
setlocal path=.,,*/include/**3,./*/include/**3 setlocal path+=/usr/include
«**3»
— . , . , .
, , :checkpath , . , , .
:
:he [, :he gf, :he :find
.
.