أسماء الطبقة والوظائف تسليط الضوء على VIM
-
09-09-2019 - |
سؤال
لقد أقامت مؤخرا بيئة VIM الخاصة بي من زميله، بعد أن أصبح مدمنا على مدخلاتها المشرف.
ومع ذلك، يبدو أن تسليط الضوء على بناء الجملة ليست جميلة جدا في VIM. أنا رمز في C ++ وبينما لا يمكن تمييز أسماء المكالمة والفئات، من الصعب قراءة التعليمات البرمجية. لقد لعبت مع مخطط الألوان قليلا، لكن لم أتمكن من العثور على أي مجال يتوافق مع "اسم الفصل" أو "اسم الدالة".
في الصورة أدناه، لاحظ كيف DroughtLayer::
و *.size()
لا يتم تسليط الضوء على اليمين في ماكفيم.
(مصدر: Ivzhao.com.)
هل توجد أية أفكار لحل هذا؟ إنه يزعجني حقا لأنني رجل حساس بالبصرية.
المحلول
ومن المثير للاهتمام، من المثير للاهتمام، لا يدعم مقلق بناء الجملة في VIM تطبيق بناء جملة للحصول على معرفات أو أسماء الوظائف - على الأقل ليس معايير بناء الجملة ل C و C ++. حتى لو كنت تفعل:
:hi Function guifg=red
أو
:hi Identifier guifg=red
لا يعطي هذه اللون. يبدو أنني ليس أكثر من الكلمات الرئيسية والثوابت لهذه اللغات.
هنا، بدأ شخص ما تمديد ملف بناء الجملة CPP لدعم أسماء الأسلوب. انها بداية أعتقد.http://vim.wikia.com/wiki/highlighting_of_method_names_in_the_definition.
نصائح أخرى
كان لدي هذه المشكلة نفسها عندما بدأت في استخدام VIM. الحل بسيط، عليك فقط تحرير ملف بناء الجملة C المستخدمة بواسطة VIM، إليك كيفية القيام بذلك:
عند بدء تشغيل ملف C / C ++، يقرأ VIM ملف بناء الجملة الافتراضي الموجود في
$VIMRUNTIME/syntax/c.vim
(حيث يتم تثبيت VIMRuntime حيث لديك VIM. يمكنك معرفة القيمة الافتراضية من خلال فتح VIM واستخدام الأمر ": Echo $ vimruntime").
يمكنك ببساطة الكتابة فوق هذا الملف، أو يمكنك إنشاء ملف بناء جملة مخصص C (الذي سيتم تحميله بواسطة VIM بدلا من الإعداد الافتراضي) في هذا الموقع:
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(لم أستخدم ماك ماك لذلك أنا لا أعمل من أجلك. يمكنك معرفة المزيد في مساعدة VIM ": مساعدة Vimfiles":
الآن الجزء المرح. انسخ الملف الافتراضي "$ vimruntime / syntax / syntax / c.vim" إلى دليل vimfiles الخاص بك ("$ home / .vim / syntax / c.vim" ل UNIX)، وتعديله عن طريق إضافة هذه الخطوط:
" Highlight Class and Function names syn match cCustomParen "(" contains=cParen,cCppParen syn match cCustomFunc "\w\+\s*(" contains=cCustomParen syn match cCustomScope "::" syn match cCustomClass "\w\+\s*::" contains=cCustomScope hi def link cCustomFunc Function hi def link cCustomClass Function
هذا هو! سيتم تسليط الضوء على الوظائف والأسماء الفئة مع اللون المعرف في تسليط الضوء على "الوظيفة" (": مرحبا وظيفة"). إذا كنت ترغب في تخصيص الألوان، فيمكنك تغيير آخر سطرين أعلاه إلى شيء مثل هذا:
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00
أو يمكنك ترك ملف بناء الجملة C وحده وتحديد الألوان في ملف Vimrc الخاص بك (": Help Vimrc"):
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(لاحظ عدم وجود كلمة "Def"، انتقل إلى ": مساعدة تسليط الضوء على الافتراضي" للحصول على التفاصيل). بالنسبة للمعلمات المتوفرة إلى ": مرحبا" See ": Help: تسليط الضوء على".
يمكنك العثور على ملف C.VIM الكامل ل VIM 7.2 على هذا الرابط (ملاحظة: استخدم هذا فقط إذا كان لديك Vim غير تعديل، الإصدار 7.2):
وقطة جلطة إلزامية:
هذا هو أول مشاركتي هنا وأنا لم أكن أعرف كيفية إجراء ملاحظة، إجابة Eduardo يجعل "(و" ("و" {"تبدو صياغة بناء جملة غير مرغوب فيها وخلل، لقد غيرت ذلك قليلا لإصلاح هذا.
syn match cCustomParen "?=(" contains=cParen,cCppParen
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
syn match cCustomScope "::"
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def link cCustomClass Function
الحل الوحيد هو استخدام قاعدة بيانات CTags بنيت. لذلك إنشاء واحد مع ctags. جدوى. ثم قم بتعيين متغير العلامات ووضع ما يلي
~/.vim/after/syntax/c.vim
function! s:highlight()
let list = taglist('.*')
for item in list
let kind = item.kind
if kind == 'f' || kind == 'c'
let name = item.name
exec 'syntax keyword Identifier '.name
endif
endfor
endfunction
call s:highlight()
يجب أن أحذرك من أن هذا يمكن أن يعمل بطيئا جدا في قاعدة بيانات CTags الكبيرة للغاية.
أيضا هناك حل واحد على vim.org لكنني لم أحاول هذا واحد. دعني اعلم ان كانت تعمل ل.
تحرير: قد يكون color_coded ثقيلا جدا بالنسبة لك. يحاول اوكتول / VIM-CPP-heightlight. وبعد وهو يدعم C ++ 11/14 ويدمج ما @ reduardo الإجابات.
متعلق بدلالات الألفاظ مقرها
أوصي jeaye / color_coded، البرنامج المساعد VIM لتسليط الضوء على libclang
آسف جدا لأنني جديد في Stackoverflow مما يعني أنني لا أسمع كاف لنشر الصور. اذهب لرؤية آثارها إذا كنت تريد أن تعطيها لقطة. :)
الايجابيات:
- سهلة التركيب
- تسليط الضوء الدلالي
- تخفيف المذكورة على النحو الوارد أعلاه، تحتاج إلى vim جمعت
python2.7
وبعد ومع ذلك، يتم كتابة color_coded في C ++ ويوفر Lua Binding -> C ++.
سلبيات:
- إنها تؤخر إلا إذا قمت بإجراء بعض الأحداث VIM للحكومة.
- التخصيص أصعب بعض الشيء؛ تحتاج إلى تحرير بناء الجملة / color_coded.vim بنفسك. لكن التخصيص قد وضعت على خارطة الطريق.
على الرغم من أنه لا يزال قيد التطوير، إلا أنه يكتسب الاهتمام بشكل متزايد.
سيرجي، تغيير الخط الأول من
syn match cCustomParen "(" contains=cParen,cCppParen
ل
syn match cCustomParen "(" contains=cParen contains=cCppParen
يبدو أن إصلاحه بالنسبة لي.
استخدام المكون الإضافي ل vim مثل قائمة العلامات أو إعداد ctags
أو cscope
التكامل مع VIM (هنا برنامج تعليمي لخدمة VIM / CSCOPE.)
حاول استخدام هذا البرنامج المساعد http://www.vim.org/scripts/script.php؟script_id=2646.لها كل ctags تسليط الضوء بك بكفاءة جدا
أنا حقا أوصي لك taghighlight
البرنامج المساعد، انقر. هنا لأنه موقع الويب.
ال Clighter
يمكن أيضا النظر في البرنامج المساعد، وهو
plugin for c-family semantic source code highlighting, based on Clang
ومع ذلك، يتطلب الإصدارات والبرامج الأخيرة إلى حد ما: vim 7.4.330 +python2
و libclang
.