Bagaimana melakukan pencarian case-sensitive di Vim


1650

Saya ingin mencari kata huruf besar, misalnya HAK CIPTA dalam file. Saya mencoba melakukan pencarian seperti:

/copyright/i    # Doesn't work

tetapi tidak berhasil. Saya tahu bahwa di Perl, jika saya memberikan ibendera ke regex, itu akan mengubah regex menjadi regex case-insensitive. Tampaknya Vim memiliki caranya sendiri untuk menunjukkan regex case-insensitive.

Jawaban:


2107

Anda dapat menggunakan \curutan pelarian di mana saja dalam pola. Sebagai contoh:

/\ccopyrightatau /copyright\catau bahkan/copyri\cght

Untuk melakukan kebalikannya ( pencocokan sensitif huruf besar -kecil), gunakan \C( huruf kapital C).


516
Juga, \cdapat muncul di mana saja di dalam pola, jadi jika Anda mengetik pola dan kemudian memutuskan Anda ingin pencarian case-sensitive, tambahkan saja \cdi akhir.
— Alok Singhal

269
Saya suka menambahkan set ignorecaseuntuk pencarian case-insensitive di vimrc saya, dan saya bisa gunakan \Cuntuk melakukan pencarian case-sensitive mirip dengan apa yang @AlokSinghal sebutkan.
— Nick McCurdy

164
Ada juga set smartcaseyang secara otomatis akan beralih ke pencarian case-sensitive jika Anda menggunakan huruf kapital apa pun.
— Zaz

83
Hanya ingin menambahkan komentar Zaz. set smartcasehanya berlaku ketika set ignorecasesudah aktif. Saya bingung tentang ini untuk sementara waktu. Lihat Tips Vim .
— Tan Wang

12
@coderMe, Ini huruf kapital, \cversus\C
— Aaron McDaid

680

Serta saran untuk \cdan ignorecase, saya menemukan smartcasesangat berguna. Jika Anda mencari sesuatu yang mengandung karakter huruf besar, itu akan melakukan pencarian case sensitif; jika Anda mencari sesuatu huruf kecil, itu akan melakukan pencarian case sensitif. Anda dapat menggunakan \cdan \Cmenimpa ini:

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

Lihat:

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

83
Masalahnya ignorecaseadalah bahwa itu mempengaruhi substitusi serta pencarian. Saya menemukan bahwa masuk akal untuk memiliki pencarian (pandai) yang tidak peka terhadap huruf besar tetapi penggantian case-sensitive secara default. Tapi saya tahu tidak ada cara untuk melakukan itu.
— huyz

150
Perlu dicatat bahwa untuk smartcasebekerja, Anda juga perlu set ignorecase. Tip yang bagus, terima kasih!
— Skilldrick

12
Saya percaya Anda hanya bisa menggunakan \ C dalam ekspresi pencarian Anda untuk substitusi, seperti ini: :%s/lowercasesearch\C/replaceString/g. Ini tidak membuat fungsionalitas default yang Anda inginkan, tetapi memungkinkan Anda untuk memaksa sensitivitas huruf untuk penggantian sambil tetap mendapatkan manfaat dari smartcase saat mencari.
— Anthony DiSanti

23
Anda juga dapat mengatur Ibendera pada substitusi untuk memaksa pola menjadi case-sensitive. Seperti :%s/lowercasesearch/replaceString/gI.
— Rory O'Kane

1
Catatan dari halaman bantuan (berguna jika Anda "*" kecanduan seperti saya):After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>.
— mcella

291

Anda dapat mengatur icopsi di Vim sebelum pencarian:

:set ic

Untuk kembali ke pencarian case-sensitive gunakan:

:set noic

ic adalah singkatan ignorecase


juga satu-satunya pilihan Anda jika Anda cukup beruntung masih menggunakan Vi, bukan Vim. \ctidak bekerja di vi.
— bluppfisk

61

Anda bisa mengeluarkan perintah

:set ignorecase

dan setelah itu pencarian Anda akan menjadi case-sensitive.


50

Untuk beralih antara pencarian case sensitif dan tidak sensitif saya menggunakan pemetaan ini di .vimrc saya

nmap <F9> :set ignorecase! ignorecase?


15
Ya, tetapi ignorecase?menunjukkan kepada Anda keadaan bendera saat ini. (di baris perintah)
— Boris Brodski

1
Terima kasih! Bagi saya, ini adalah jawaban yang paling berguna di halaman: cara untuk dengan cepat beralih di antara dua mode tergantung pada apa yang Anda cari pada saat yang tepat.
— Ben Hillier

31

Anda dapat menggunakan vimrcperintah-perintah itu:

  • set ignorecase - Semua pencarian Anda akan peka terhadap huruf besar-kecil
  • set smartcase - Pencarian Anda akan peka huruf besar-kecil jika mengandung huruf besar

Anda perlu mengatur ignorecasejika Anda ingin menggunakan apa yang smartcasedisediakan.

Baru - baru ini saya menulis sebuah artikel tentang perintah pencarian Vim (baik perintah bawaan dan plugin terbaik untuk mencari secara efisien).


1
Tampaknya set smartcasetidak melakukan pencarian case sensitif jika saya tidak menggunakan huruf besar ... apakah itu normal?
— caneta

1
Ok, baca saja di bawah ini bahwa Anda harus menyetel ignorecase dan smartcase agar berfungsi. Maaf soal itu!
— caneta

24

Seperti yang disarankan orang lain:

:set ic

Tapi yang paling keren adalah Anda dapat beralih mode seperti itu dengan:

:set ic!

18

letakkan perintah ini di file vimrc Anda

set ic 

selalu melakukan pencarian case-sensitive


4
Saya tidak tahu mengapa tetapi vim saya disetel ke case-insensitive secara default, untuk melawan ini. gunakan set noic.
— user1510539

18

vim[grep]Perintah lama yang bagus ..

:vimgrep /example\c/ &
  • \c untuk case sensitive
  • \C untuk case sensitif
  • % adalah mencari di buffer saat ini

masukkan deskripsi gambar di sini


Cannot open file "&"
— Vitaly Zdanevich

Saya kira dia yang mereka maksudkan %alih-alih %.
— oarfish

15

Saya lebih suka menggunakan \cdi akhir string pencarian:

/copyright\c

10

Seperti @huyz menyebutkan kadang-kadang perilaku yang diinginkan menggunakan pencarian case-insensitive tetapi penggantian case-sensitive. Solusi saya untuk itu:

nnoremap / /\c
nnoremap ? ?\c

Dengan itu selalu ketika Anda menekan /atau ?itu akan menambah \cpencarian case-sensitive.


1
Bukan saran yang buruk, tetapi apakah itu mencegah Anda menggunakan smartcaseopsi?
— Trebor Rude

Sepertinya itu akan menggantikansmartcase
— Matthew Woo

4

Vim memiliki 2 mode

1.edit mode

  1. mode normal (Esc)

Pencarian akan bekerja untuk mode normal

/ \ c untuk case sensitif

/ \ c pencarian


Bagaimana dengan mode visual?
— user202729

3

Anda dapat mengatur ignorecasesecara default, jalankan ini di shell

echo "set ic" >> ~/.vimrc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.