विम में असंवेदनशील खोज कैसे करें


1649

मैं ऊपरी केस शब्द की खोज करना चाहता हूँ, उदाहरण के लिए किसी फ़ाइल में COPYRIGHT। मैंने एक खोज करने की कोशिश की जैसे:

/copyright/i    # Doesn't work

लेकिन यह काम नहीं करता है। मुझे पता है कि पर्ल में, अगर मैं iध्वज को एक रेगेक्स में देता हूं तो यह रेगेक्स को केस-असंवेदनशील रेगेक्स में बदल देगा। ऐसा लगता है कि विम के पास केस-असंवेदनशील रेगेक्स को इंगित करने का अपना तरीका है।

जवाबों:


2106

आप \cपैटर्न में कहीं भी भागने के क्रम का उपयोग कर सकते हैं । उदाहरण के लिए:

/\ccopyrightया /copyright\cभी/copyri\cght

उलटा (केस संवेदी मिलान) करने के लिए, \C(कैपिटल सी) का उपयोग करें।


516
इसके अलावा, \cपैटर्न में कहीं भी दिखाई दे सकता है, इसलिए यदि आप एक पैटर्न टाइप करते हैं और फिर तय करते हैं कि आप केस-असंवेदनशील खोज चाहते हैं, तो बस \cअंत में जोड़ें ।
आलोक सिंघल

268
मैं set ignorecaseअपने vimrc में केस-असंवेदनशील खोज के लिए जोड़ना पसंद करता हूं, और मैं \C@AlokSinghal के समान केस-संवेदी खोज करने के लिए उपयोग कर सकता हूं ।
निक मैक्किर्डी

163
भी नहीं है set smartcaseअगर आप किसी भी बड़े अक्षरों का उपयोग जो स्वत: एक केस-संवेदी खोज में बदल जाएगी।
ज़ज़

82
बस ज़ाज़ की टिप्पणी में जोड़ना चाहते हैं। पहले से ही सक्रिय set smartcaseहोने पर ही लागू होता set ignorecaseहै। मैं इस पर थोड़ी देर के लिए रुक गया था। देखें विम युक्तियाँ
तान वांग

12
@ कोडर, यह कैपिटलाइज़ेशन है, \cबनाम\C
हारून मैकडैड

680

साथ ही के लिए सुझाव के रूप में \cऔर ignorecase, मुझे लगता है smartcaseबहुत उपयोगी। यदि आप अपरकेस वर्णों वाली किसी चीज़ की खोज करते हैं, तो यह केस सेंसिटिव सर्च करेगा; अगर आप कुछ विशुद्ध रूप से लोअरकेस की खोज करते हैं, तो यह एक असंवेदनशील खोज करेगा। आप इसका उपयोग कर सकते हैं \cऔर \Cइसे ओवरराइड कर सकते हैं :

:set ignorecase
:set smartcase
/copyright      " Case insensitive
/Copyright      " Case sensitive
/copyright\C    " Case sensitive
/Copyright\c    " Case insensitive

देख:

:help /\c
:help /\C
:help 'smartcase'

83
इसके साथ समस्या ignorecaseयह है कि यह प्रतिस्थापन के साथ-साथ खोजों को भी प्रभावित करता है। मुझे लगता है कि यह (स्मार्ट) केस-असंवेदनशील खोजों लेकिन डिफ़ॉल्ट रूप से केस-संवेदी प्रतिस्थापन के लिए समझ में आता है। लेकिन ऐसा करने का कोई तरीका नहीं है जो मुझे पता है।
जुए

150
ध्यान देने योग्य है कि smartcaseकाम करने के लिए, आपको भी आवश्यकता है set ignorecase। महान टिप हालांकि, धन्यवाद!
स्किलड्रिक

12
मेरा मानना है कि आप सिर्फ प्रतिस्थापन के लिए अपनी खोज अभिव्यक्ति में एक \ सी इस्तेमाल कर सकते हैं, इस तरह: :%s/lowercasesearch\C/replaceString/g। यह आपकी इच्छा के अनुसार डिफ़ॉल्ट कार्यक्षमता नहीं बनाता है, लेकिन यह आपको खोज के दौरान स्मार्टकेस से लाभान्वित करते हुए प्रतिस्थापन के लिए केस-संवेदनशीलता को मजबूर करने की अनुमति देता है।
एंथनी डिसेंटी

23
आप पैटर्न को केस-संवेदी होने के लिए बाध्य करने के लिए एक प्रतिस्थापन पर Iध्वज सेट कर सकते हैं। की तरह :%s/lowercasesearch/replaceString/gI
रोरी ओ'केन

1
मदद पृष्ठ से नोट करें (यदि आप मेरे जैसे "*" आदी हैं तो उपयोगी):After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>.
mcella

290

आप icखोज से पहले Vim में विकल्प सेट कर सकते हैं:

:set ic

केस-संवेदी खोजों पर वापस जाने के लिए:

:set noic

ic के लिए आशुलिपि है ignorecase


अगर आप अभी भी बदकिस्मत हैं तो आपका एकमात्र विकल्प विम के बजाय वीआई का उपयोग करना है। \cvi में काम नहीं करता है।
ब्लॅकफिस्क


50

संवेदनशील और असंवेदनशील खोज के बीच स्विच करने के लिए मैं अपने .vimrc में इस मैपिंग का उपयोग करता हूं

nmap <F9> :set ignorecase! ignorecase?


15
हां, लेकिन ignorecase?आपको ध्वज की वर्तमान स्थिति दिखाता है। (कमांड लाइन में)
बोरिस ब्रोडस्की

1
धन्यवाद! मेरे लिए, यह पृष्ठ पर सबसे उपयोगी उत्तर है: उस सटीक क्षण में जो आप खोज रहे हैं, उसके आधार पर दो मोड के बीच जल्दी से टॉगल करने का एक तरीका।
बेन हिलियर

30

आप vimrcउन आदेशों में उपयोग कर सकते हैं :

  • set ignorecase - आपकी सभी खोजें केस असंवेदनशील होंगी
  • set smartcase - अगर आपका अपरकेस अक्षर है तो आपकी खोज संवेदनशील होगी

आपको यह निर्धारित करने की आवश्यकता है ignorecaseकि क्या आप smartcaseप्रदान करना चाहते हैं ।

मैंने हाल ही में विम सर्च कमांड्स के बारे में एक लेख लिखा था (दोनों कमांड में निर्मित और कुशलता से खोज करने के लिए सबसे अच्छा प्लगइन्स)।


1
ऐसा लगता है कि set smartcaseअगर मैं अपरकेस अक्षरों का उपयोग नहीं करता तो असंवेदनशील खोजें नहीं करता ... क्या यह सामान्य है?
caneta

1
ठीक है, बस नीचे पढ़ें कि आपको यह काम करने के लिए अज्ञानता और स्मार्टकेस दोनों को सेट करना होगा। उसके लिए माफ़ करना!
caneta

24

जैसा कि दूसरों ने सुझाव दिया है:

:set ic

लेकिन शांत सामान आप इस तरह के मोड के साथ टॉगल कर सकते हैं:

:set ic!

18

इस कमांड को अपनी vimrc फाइल में डालें

set ic 

हमेशा असंवेदनशील खोज करें


4
मैं नहीं जानता कि क्यों, लेकिन इस मामले का जवाब देने के लिए मेरा विम केस-असंवेदनशील पर सेट है। का उपयोग करें set noic
user1510539

18

अच्छी पुरानी vim[grep]आज्ञा ।।

:vimgrep /example\c/ &
  • \c मामले के लिए असंवेदनशील
  • \C संवेदनशील मामले के लिए
  • % वर्तमान बफ़र में खोजना है

यहां छवि विवरण दर्ज करें



मुझे लगता है कि वह %इसके बजाय मतलब था %
ओरफिश

15

मैं \cखोज स्ट्रिंग के अंत में उपयोग करना पसंद करता हूं :

/copyright\c

10

जैसा कि @huyz उल्लेख करते हैं कि कभी-कभी वांछित व्यवहार केस-असंवेदनशील खोजों का उपयोग करता है, लेकिन केस-संवेदी प्रतिस्थापन। उस के लिए मेरा समाधान:

nnoremap / /\c
nnoremap ? ?\c

इसके साथ हमेशा जब आप हिट करते हैं /या ?यह \cकेस-असंवेदनशील खोज के लिए जोड़ देगा ।


1
एक बुरा सुझाव नहीं है, लेकिन क्या यह आपको smartcaseविकल्प का उपयोग करने से रोकता है?
ट्रेबोर रूड

ऐसा लगता है कि यह \ c ओवरराइड होगाsmartcase
मैथ्यू वू

4

विम के 2 मोड हैं

1.edit मोड

  1. सामान्य मोड (Esc)

खोज सामान्य मोड के लिए काम करेगा

केस संवेदनशील के लिए / \ c

/ \ c खोज


दृश्य विधा के बारे में क्या?
user202729

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