كيفية تجاوز الافتراضي تسليط الضوء على بناء الجملة في همة?

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

  •  06-07-2019
  •  | 
  •  

سؤال

في همة ، يجب تنفيذ مهمة بسيطة - تسليط الضوء "(" و ")".يمكنني القيام بذلك بسهولة عن طريق إصدار الأمرين:

:syn match really_unique_name display "[()]"
:hi really_unique_name guifg=#FF0000

ولكن إذا أضيف نفس الأوامر (دون ':' بالطبع) فارغة .vimrc وإعادة تشغيل همة - "(" و ")" لم يتم تسليط الضوء عليها الآن .cpp الملفات.ويبدو أنه إذا كنت إنشاء/تحميل .الملف cpp, همة الأحمال جملة الملفات التي يتجاوز عادتي الضوء.كيف يمكنني تكوين ويبرز في بلدي .vimrc الملف لذلك سوف تجري بعد القياسية جملة التعاريف أو لن تتأثر القياسية جملة التعريف ؟

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

المحلول

هناك أربعة خيارات (وهما من التي تم اقتراحها من قبل الآخرين):

  1. استخدام after هيكل في vimfiles (~/.همة/بعد/جملة/cpp.همة):

    :help after-directory
    
  2. استخدام تطابق النافذة الحالية:

    :match really_unique_name "[()]"
    
  3. استخدام matchadd () ، مرة أخرى على النافذة الحالية ، ولكن هذا يسمح لك لحذف المباريات الفردية إذا كنت بحاجة إلى وقت لاحق:

    :call matchadd('really_unique_name', "[()]")
    " Or
    :let MyMatchID = matchadd('really_unique_name', "[()]")
    " and then if you want to switch it off
    :call matchdelete(MyMatchID)
    
  4. تثبيت الدكتور رقاقة قوس قزح.همة البرنامج المساعد للحصول على هدفين تسليط الضوء في ألوان مختلفة اعتمادا على مستوى المسافة البادئة.

في هذا الوضع, أنصح الخيار 1 كما يبدو أنك تريد أن تجعل جزءا من الجملة.إذا كنت ترغب في استخدام المباريات تريد لها أن تكون عازلة محددة (بدلا من نافذة محددة), سوف تحتاج شيئا مثل:

function! CreateBracketMatcher()
    call clearmatches()
    call matchadd('really_unique_name', "[()]")
endfunc
au BufEnter <buffer> call CreateBracketMatcher()

للحصول على مزيد من المعلومات ، انظر:

:help after-directory
:help :match
:help matchadd()
:help matchdelete()
:help clearmatches()
:help function!
:help autocmd
:help autocmd-buffer-local
:help BufEnter

قد تكون مهتمة ايضا في جوابي هذا السؤال, الذي يغطي أكثر العامة المشغل تسليط الضوء.

نصائح أخرى

ووضع الإعدادات في ~ / .vim / بعد / تركيب / cpp.vim

وبدلا من استخدام مباراة اصطناعي، ومجرد استخدام مباراة. على سبيل المثال:

hi really_unique_name guifg=#FF0000
match really_unique_name "[()]"

وmatch له الأسبقية أعلى من SYN مباراة (أي: تسليط الضوء على ستتجاوز تسليط الضوء الناتجة عن SYN مباراة)، و (حسن تصرف) الملفات جملة يجب أن لا فوضى معها

والتحذير واحدة مع مباراة هو أنه في النافذة، وليس لكل العازلة.

إذا كنت بحاجة إلى مباريات إضافية يمكنك استخدام 2match و3match.

وانظر :help :match في فيم للمزيد من المعلومات.

وأنا عادة القيام بذلك مثل هذا:

:hi really_unique_name guifg=#FF0000
:au BufNewFile,BufRead * :syn match really_unique_name display "[()]"

وau لتقف على autocmd. مساعدة وسوف اقول أكثر من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top