Vim'de büyük / küçük harfe duyarlı olmayan arama nasıl yapılır


1650

Bir dosyada büyük harfli bir kelime, örneğin TELİF HAKKI aramak istiyorum. Şunun gibi bir arama yapmayı denedim:

/copyright/i    # Doesn't work

ama işe yaramıyor. Perl'de, eğer ibayrağı bir normal ifadeye verirsem, normal ifadeyi büyük / küçük harf duyarsız bir normal ifadeye dönüştüreceğini biliyorum. Görünüşe göre Vim, büyük / küçük harfe duyarlı olmayan bir normal ifadeyi belirtmek için kendi yoluna sahip.

Yanıtlar:


2107

Çıkış \cdizisini modelin herhangi bir yerinde kullanabilirsiniz . Örneğin:

/\ccopyrightveya /copyright\chatta/copyri\cght

Tersi (büyük / küçük harfe duyarlı eşleştirme) yapmak için \Cbunun yerine (büyük C) kullanın.


516
Ayrıca, \ckalıbın herhangi bir yerinde görünebilir, bu nedenle bir kalıp yazıp büyük / küçük harf duyarlı olmayan bir arama istediğinize karar verirseniz \c, sonuna bir a ekleyin .
Alok Singhal

269
Vimrc'mde büyük / küçük harfe set ignorecaseduyarsız arama eklemek istiyorum ve \C@AlokSinghal'ın bahsettiğine benzer büyük / küçük harfe duyarlı bir arama yapmak için kullanabilirim .
Nick McCurdy

164
Ayrıca set smartcasebüyük harfler kullanırsanız otomatik olarak büyük / küçük harfe duyarlı bir aramaya geçecektir.
Zaz

83
Sadece Zaz'ın yorumuna eklemek istiyorum. set smartcaseyalnızca set ignorecaseetkin olduğunda geçerlidir . Bir süre bununla karşılaştım. Bkz. Vim İpuçları .
Tan Wang

12
@coderMe, Bu büyük harfle \ckarşı\C
Aaron McDaid

680

Hem de için öneriler olarak \cve ignorecaseben bulmak smartcaseçok faydalı. Büyük harf içeren bir şey ararsanız, büyük / küçük harfe duyarlı bir arama yapılır; tamamen küçük bir şey ararsanız, büyük / küçük harf duyarsız bir arama yapar. Bunu geçersiz kılmak için \cve \Cöğelerini kullanabilirsiniz :

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

Görmek:

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

83
Sorun, ignorecaseikameleri ve aramaları etkilemesidir. Büyük / küçük harfe duyarlı olmayan aramaların, ancak büyük / küçük harfe duyarlı yer değiştirmelerin olması mantıklıdır. Ama bunu bilmemin bir yolu yok.
huyz

150
smartcaseÇalışmak için de ihtiyacınız var set ignorecase. Büyük ipucu olsa, teşekkürler!
Skilldrick

12
Ben sadece bu gibi değiştirmeler için arama ifadesinde bir \ C kullanabilirsiniz inanıyoruz: :%s/lowercasesearch\C/replaceString/g. Bu, istediğiniz varsayılan işlevselliği oluşturmaz, ancak arama yaparken akıllı kılıftan yararlanmaya devam ederken, değiştirmeler için büyük / küçük harf duyarlılığını zorlamanıza olanak tanır.
Anthony DiSanti

23
Deseni büyük / küçük harfe duyarlı olmaya zorlamak için Ibayrağı bir ikame üzerinde de ayarlayabilirsiniz . Gibi :%s/lowercasesearch/replaceString/gI.
Rory O'Kane

1
Yardım sayfasından not ("*" benim gibi bağımlıysanız faydalıdır):After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>.
mcella

291

icAramadan önce Vim'de seçeneği ayarlayabilirsiniz :

:set ic

Büyük / küçük harfe duyarlı aramalara geri dönmek için şunu kullanın:

:set noic

ic için kestirme ignorecase


ayrıca Vim yerine Vi kullanmaya yetecek kadar şanssızsanız tek seçeneğiniz. \cvi'da çalışmıyor.
bluppfisk

61

Komutu verebilirsiniz

:set ignorecase

ve bundan sonra aramalarınız büyük / küçük harfe duyarlı olmayacaktır.


50

Büyük / küçük harfe duyarlı ve duyarsız arama arasında geçiş yapmak için .vimrc dosyamda bu eşlemeyi kullanıyorum

nmap <F9> :set ignorecase! ignorecase?


15
Evet, ancak ignorecase?bayrağın geçerli durumunu gösterir. (komut satırında)
Boris Brodski

1
Teşekkür ederim! Bana göre, bu sayfadaki en yararlı cevaptır: tam olarak aradığınız şeye bağlı olarak iki mod arasında hızlı bir şekilde geçiş yapmanın bir yolu.
Ben Hillier

30

Bu vimrckomutlarınızda kullanabilirsiniz :

  • set ignorecase - Tüm aramalarınız büyük / küçük harfe duyarlı değildir
  • set smartcase - Aramanız büyük harf içeriyorsa büyük / küçük harfe duyarlı olacaktır

Sağlayanları ignorecasekullanmak isteyip istemediğinizi ayarlamanız gerekir smartcase.

Yakın zamanda Vim arama komutları hakkında bir makale yazdım (hem yerleşik komut hem de verimli bir şekilde arama yapmak için en iyi eklentiler).


1
set smartcaseBüyük harf kullanmazsam büyük / küçük harfe duyarlı olmayan aramalar yapmıyor gibi görünüyor ... bu normal mi?
caneta

1
Tamam, aşağıda çalışması için hem ignorecase'i hem de smartcase'i ayarlamanız gerektiğini okuyun. Bunun için üzgünüm!
caneta

24

Diğerlerinin önerdiği gibi:

:set ic

Ama harika şeyler: Bu modları şu şekilde değiştirebilirsiniz:

:set ic!

18

bu komutu vimrc dosyanıza koy

set ic 

her zaman büyük / küçük harfe duyarsız arama yapın


4
Neden bilmiyorum ama vim buna karşı koymak için varsayılan olarak büyük / küçük harfe duyarlı değildir. kullanın set noic.
user1510539

18

Eski güzel vim[grep]emir ..

:vimgrep /example\c/ &
  • \c büyük / küçük harfe duyarlı olmayanlar için
  • \C büyük / küçük harfe duyarlı
  • % geçerli arabellekte arama yapmaktır

resim açıklamasını buraya girin


Cannot open file "&"
Vitaly Zdanevich

Sanırım onun %yerine kastetmişlerdi %.
oarfish

15

\cArama dizesinin sonunda kullanmayı tercih ederim :

/copyright\c

10

@Huyz'un belirttiği gibi, bazen istenen davranış büyük / küçük harfe duyarlı olmayan aramalar kullanır, ancak büyük / küçük harfe duyarlı ikameler kullanır. Benim çözümüm:

nnoremap / /\c
nnoremap ? ?\c

Bununla her zaman vurduğunuzda /veya ?büyük / \cküçük harf duyarsız arama için eklenir .


1
Kötü bir öneri değil, ancak smartcaseseçeneği kullanmanızı engelliyor mu?
Trebor Rude

Görünen o ki \ c geçersiz kılıyorsmartcase
Matthew Woo

4

Vim 2 mod var

1. düzenleme modu

  1. normal mod (Esc)

Arama normal mod için çalışır

/ \ c büyük / küçük harfe duyarlı

/ \ c arama


Görsel mod ne olacak?
user202729

3

ignorecaseVarsayılan olarak ayarlayabilirsiniz , bunu kabukta çalıştırabilirsiniz

echo "set ic" >> ~/.vimrc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.