कर्सर के नीचे शब्द हाइलाइट करें, कर्सर के नीचे वाले को छोड़कर


1

मैं एक है autocmdसे शुरू हो रहा CursorMovedहै कि इच्छा matchएक वाक्य रचना नियम यह है कि बस अग्रभूमि / पृष्ठभूमि उलट के रूप में कर्सर के तहत एक के रूप में ही शब्द।

मैं इसका उपयोग कर्सर के नीचे के सभी शब्दों को तत्काल टाइपो जांच के लिए खोजने के लिए करता हूं। यह रहा:

autocmd CursorMoved * exe printf('match lCursor /\V\<%s\>/', escape(expand('<cword>'), '/\'))

मैं वर्तमान लाइन को मैच से कैसे बाहर कर सकता हूं?

जवाबों:


1

वर्तमान लाइन पर किसी भी मैच से बचने के लिए, आप :help /\%lवर्तमान लाइन नंबर से मेल खाने के लिए विशेष परमाणु का उपयोग कर सकते हैं , और फिर नकारात्मक रूपांतर के माध्यम से एक गैर मैच का दावा कर सकते हैं :

exe printf('match lCursor /\V\%%%dl\@!\<%s\>/', line('.'), escape(expand('<cword>'), '/\'))

लेकिन आपके उत्तर में आप यह भी इंगित करते हैं कि वर्तमान शब्द (संपूर्ण रेखा नहीं) को हाइलाइट नहीं किया जाना चाहिए। यह नकारात्मक रूप से फिर से प्राप्त किया जा सकता है, यह कहते हुए कि कर्सर ( \%#) वर्तमान शब्द के अंदर नहीं है ( \<\k*...\k*\>) और ( \&) भी वर्तमान शब्द से मेल खाता है:

exe printf('match lCursor /\V\%%(\<\k\*\%%#\k\*\>\)\@!\&\<%s\>/', escape(expand('<cword>'), '/\'))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.