search maiuscola - Come fare la ricerca senza distinzione tra maiuscole e minuscole in Vim




latex lettere (12)

Poiché @huyz menziona il comportamento a volte desiderato si utilizzano le ricerche insensibili alle maiuscole e minuscole, ma le sostituzioni con distinzione tra maiuscole e minuscole. La mia soluzione per questo:

nnoremap / /\c
nnoremap ? ?\c

Con quello sempre quando colpisci / o ? aggiungerà \c per la ricerca senza distinzione tra maiuscole e minuscole.

Mi piacerebbe cercare una parola in maiuscolo, ad esempio COPYRIGHT in un file. Ho provato a eseguire una ricerca come:

/copyright/i    # Doesn't work

ma non funziona. So che in Perl, se attribuisco il flag i in un'espressione regolare, trasformerà la regex in un'espressione regolare senza distinzione tra maiuscole e minuscole. Sembra che Vim abbia il suo modo di indicare una regex insensibile alle maiuscole e minuscole.


Vim ha 2 modalità

Modalità 1.edit

  1. modalità normale (Esc)

La ricerca funzionerà per la modalità normale

/ \ c per maiuscole / minuscole

/ \ c cerca


Il buon vecchio comando vim[grep] ..

:vimgrep /example\c/ &
  • \ c per case insensitive
  • \ C per maiuscole e minuscole
  • % è cercare nel buffer corrente


È possibile impostare ignorecase per impostazione predefinita, eseguirlo nella shell

echo "set ic" >> ~/.vimrc

Preferisco usare \c alla fine della stringa di ricerca:

/copyright\c

È possibile emettere il comando

:set ignorecase

e dopo che le tue ricerche saranno senza distinzione tra maiuscole e minuscole.


Per passare da maiuscole e minuscole alla ricerca, utilizzo questa mappatura nel mio .vimrc

nmap <F9> :set ignorecase! ignorecase?


Puoi impostare l'opzione ic in Vim prima della ricerca:

:set ic

Per tornare alle ricerche con distinzione tra maiuscole e minuscole, utilizzare:

:set noic

ic è una scorciatoia per ignorecase


Come altri hanno suggerito:

:set ic

Ma il bello è che puoi cambiare queste modalità con:

:set ic!

Oltre ai suggerimenti per \c e ignorecase , trovo la smartcase molto utile. Se cerchi qualcosa contenente caratteri maiuscoli, eseguirà una ricerca sensibile al maiuscolo / minuscolo; se cerchi qualcosa di puramente minuscolo, eseguirà una ricerca senza distinzione tra maiuscole e minuscole. Puoi usare \c e \C per sovrascrivere questo:

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

Vedere:

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

È necessario utilizzare la sequenza di escape \c . Così:

/\ccopyright

Per eseguire l'inverso (corrispondenza sensibile al maiuscolo / minuscolo ), utilizzare invece \C


La risposta accettata copre tutto, quindi darò un altro esempio di una scorciatoia che uso, per la cronaca.

Aggiungilo a etc/vim/vimrc (o ~/.vimrc ):

  • cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!

Dove:

  • cnoremap : dice vim che il seguente collegamento deve essere associato nella riga di comando.
  • w!! : la scorciatoia stessa.
  • execute '...' : un comando che esegue la seguente stringa.
  • silent! : eseguilo silenziosamente
  • write !sudo tee % >/dev/null : la domanda OP, aggiunto un reindirizzamento dei messaggi a NULL per fare un comando pulito
  • <bar> edit! : questo trucco è la ciliegina sulla torta: chiama anche il comando di edit per ricaricare il buffer e quindi evitare che messaggi come il buffer siano cambiati . <bar> è come scrivere il simbolo pipe per separare qui due comandi.

Spero che sia d'aiuto. Vedi anche per altri problemi:







search vim case-insensitive