كيفية اكتشاف السادس (وليس vim) في .vimrc؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

أحمل vimrc إلى جميع الأجهزة التي أعمل عليها ومن الطبيعي أن تحتوي على خيارات غير موجودة في vimrc القديم.

إذا قمت عن طريق الخطأ ببدء جلسة vi على جهاز لا يكون فيه vi اسمًا مستعارًا لـ vim و/أو لم يتم تثبيت vim، يقرأ vi vimrc ويلقي مجموعة من الأخطاء المزعجة لإعلامي بأن الخيار كذا وكذا غير مدعوم.

أعلم أنه يمكنني دائمًا كتابة "vim" بدلاً من "vi" وتعيين متغير EDITOR على vim (لـ visudo وما إلى ذلك...)، ولكن هل هناك سطر يمكنني إضافته إلى الجزء العلوي من vimrc الذي سيخرج من البرنامج النصي في وقت مبكر إذا تمت قراءة الملف بواسطة السادس؟

هل كانت مفيدة؟

المحلول

إذا لم يكن vi في الواقع رابطًا لـ vim، فلا ينبغي قراءته .vimrc, ، ينبغي أن يقرأ .exrc.حقيقة أنه يقرأ .vimrc تشير إلى أنه في الواقع إصدار سابق من vim.إذا كان الأمر كذلك، يمكنك استخدام إنشاء vim "if" لوضع الميزات الأحدث بين قوسين، مثل هذا:

:if version >= 500
:  version-5-specific-commands
:endif

يكتب:

:help if

عندما تكون في vim لمزيد من المعلومات.

نصائح أخرى

إذا كنت ترغب في الحصول على أكثر تحديدا في الشيكات الخاصة بك يمكنك التحقق من السمات الفردية للغاية.

ولدي هذا في بلدي .vimrc:

if has("eval")
    " Syntax stuff
    let java_highlight_all=1
endif


if has("autocmd")
    " Buffers
    autocmd BufEnter * cd %:p:h
endif

وغير همة، لا قراءة .vimrc، انها تبحث عن .exrc. يمكنك الكشف عن الإصدارات القديمة من همة باستخدام "إذا النسخة> = 500"

و"السادس" يقرأ vimrc لأنه بالتأكيد جمعت فيم مع اسم "السادس". ومن المحتمل جمعت "ليكون السادس للغاية متوافقة"، لذلك يمكنك محاولة للتحقق ميزة "متوافقة" للكشف عن "سادسا":

if !has("compatible")
   let g:loaded_matchparen=1
   syntax off
endif
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top