कर्सर को स्थानांतरित किए बिना खोज शब्द को हाइलाइट करना


12

विम का उपयोग करते हुए, मैं कभी-कभी खुद को कुछ समय के लिए स्रोत कोड के एक खंड में घूरता हुआ पाता हूं और अचानक स्क्रीन पर कुछ चर बाहर पॉप करने के लिए चाहता हूं। यह आसान है: /<var>जो उन सभी को उजागर करता है। मेरा मुद्दा यह है कि यह अधिक बार नहीं होता है खोज मेरी खिड़की को स्थानांतरित नहीं करती है इसलिए मैं उसी स्थान से स्रोत कोड नहीं देख रहा हूं। यहां तक ​​कि अगर यह केवल कुछ लाइनों को स्थानांतरित कर दिया गया है, तो यह अभी भी मुझे फेंकता है क्योंकि मुझे यह पता लगाने के लिए कुछ सेकंड लेने की जरूरत है कि चीजें कहां स्थानांतरित हुई हैं।

क्या कर्सर को अगले मैच में स्थानांतरित किए बिना एक खोज शब्द को उजागर करना संभव है?


2
बिल्कुल जवाब नहीं, लेकिन मैं सिर्फ दो बैकटिक्स (``) का उपयोग करता हूं जहां मैं पहले था।
इज़काता जनता

जवाबों:


1

http://vim.wikia.com/wiki/VimTip1572

यदि आपने इस प्लगइन का उपयोग किया है, तो आप बस कार्यक्षमता को सक्षम कर सकते हैं

\ m

फिर अपने कर्सर को ले जाए बिना हर जगह उस शब्द को रंग असाइन करने के लिए एक न्यूपैड कुंजी का उपयोग करें।

1

यदि आप चाहें तो एक ही बार में कई अलग-अलग शब्दों, या अधिक जटिल खोज पैटर्न के लिए कई अलग-अलग हाइलाइट्स का उपयोग कर सकते हैं।


मैं इस प्लगइन प्यार करता हूँ!
एंड्रयू वुड

14

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

मैंने उस तकनीक को एक कीबाइंडिंग बनाकर विस्तारित किया जो *कमांड के समान काम करता है , लेकिन वास्तव में अगले मैच में जाने के बिना।

मेरा धन्यवाद शब्द चयन के समतुल्य इंगित करने के लिए ( स्वयं का उपयोग करने से बचने और दृश्य को पुनर्स्थापित करने के लिए) करने के लिए गैरीजोन को जाता है । यह कोड को इतना सरल करता है कि यह सीधे मैपिंग में जा सकता है (एक फ़ंक्शन का उपयोग करके)। मैंने एक मानचित्रण भी जोड़ा है जो आंशिक शब्दों (जैसे ) से मेल खाता है ।expand()**g*

:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>

1
आप कॉल करने के लिए winaveview (), winrestview () और के साथ normal *प्रतिस्थापित करने से बच सकते हैं । let @/ = @/let @/ = expand("<cword>")
गैरीजोन

@garyjohn: हाँ, यह बेहतर है। मुझे यकीन नहीं था कि द्वारा किए गए "शब्द" चयन के बराबर कुछ था *, लेकिन <cword>क्या यह है।
क्रिस जॉन्सन

11

आप जिस चर से मिलान करना चाहते हैं, उसके लिए आप खोज रजिस्टर भी सेट कर सकते हैं।

पहले, सुनिश्चित करें कि खोज हाइलाइटिंग चालू है:

:set hlsearch

फिर, आप के साथ खोज रजिस्टर सेट कर सकते हैं:

:let @/="variable"

यह अगले मैच में कूदने के बिना चर की सभी घटनाओं को उजागर करेगा।

अधिक जानकारी के लिए देखें :help @/


6

एक तरीका है :matchकमांड का उपयोग करना , जैसे,

:match Question '^R^W'

यह प्रश्न हाइलाइट समूह का उपयोग करके कर्सर के तहत शब्द को उजागर करेगा। मैं अक्सर प्रश्न समूह का उपयोग करता हूं क्योंकि मेरे टर्मिनल पर यह एक अच्छा हरा है। उपलब्ध हाइलाइट समूहों को देखने के लिए, निष्पादित करें

:hi

^Rऔर ^WCtrl-R और Ctrl-डब्ल्यू, क्रमशः रहे हैं, और कर्सर के तहत शब्द द्वारा प्रतिस्थापित कर रहे हैं। देख

:help c_CTRL-R_CTRL-W

उस पर और अधिक के लिए। देख

:help :match

:matchआदेश पर अधिक के लिए । स्पष्ट करने के लिए कि हाइलाइटिंग, बस निष्पादित करें

:match

कोई तर्क नहीं है।


1

के अतिरिक्त:

 :set hlsearch

आप चाहे तो:

 : set noincsearch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.