So führen Sie in Vim eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch


1650

Ich möchte nach einem Wort in Großbuchstaben suchen, zum Beispiel COPYRIGHT in einer Datei. Ich habe versucht, eine Suche durchzuführen wie:

/copyright/i    # Doesn't work

aber es funktioniert nicht. Ich weiß, dass in Perl, wenn ich die iFlagge in einen regulären Ausdruck gebe, der reguläre Ausdruck in einen regulären Ausdruck ohne Berücksichtigung der Groß- und Kleinschreibung umgewandelt wird. Es scheint, dass Vim seine eigene Methode hat, um einen Regex ohne Berücksichtigung der Groß- und Kleinschreibung anzuzeigen.

Antworten:


2107

Sie können die \cEscape-Sequenz an einer beliebigen Stelle im Muster verwenden. Zum Beispiel:

/\ccopyrightoder /copyright\coder sogar/copyri\cght

Verwenden Sie stattdessen (Groß- und Kleinschreibung\C C) , um die Umkehrung durchzuführen (Groß- und Kleinschreibung beachten) .


516
Auch \ckann erscheinen überall in dem Muster, also , wenn Sie ein Muster eingeben und dann entscheiden Sie Groß- und Kleinschreibung suchen wollten, nur hinzufügen , \cam Ende.
— Alok Singhal

269
Ich füge set ignorecasein meinem vimrc gerne eine Suche hinzu, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird, und ich kann \Ceine Suche verwenden , bei der die Groß- und Kleinschreibung beachtet wird, ähnlich wie bei @AlokSinghal.
— Nick McCurdy

164
Es gibt auch eine, set smartcasedie automatisch zu einer Suche mit Groß- und Kleinschreibung wechselt, wenn Sie Großbuchstaben verwenden.
— Zaz

83
Ich möchte nur zu Zaz 'Kommentar hinzufügen. set smartcasegilt nur, wenn set ignorecasebereits aktiv ist. Ich war eine Weile ratlos darüber. Siehe Vim-Tipps .
— Tan Wang

12
@coderMe, es ist die Großschreibung im \cVergleich zu\C
— Aaron McDaid

680

Neben den Vorschlägen für \cund ignorecasefinde ich das smartcasesehr nützlich. Wenn Sie nach etwas suchen, das Großbuchstaben enthält, wird zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie nach etwas suchen, das nur in Kleinbuchstaben geschrieben ist, wird die Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchgeführt. Sie können dies verwenden \cund \Cüberschreiben:

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

Sehen:

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

83
Das Problem dabei ignorecaseist, dass es sowohl Substitutionen als auch Suchen betrifft. Ich finde, dass es sinnvoll ist, (intelligente) Suchanfragen ohne Berücksichtigung der Groß- und Kleinschreibung, aber standardmäßig Ersetzungen ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen. Aber es gibt keine Möglichkeit, das zu tun, die ich kenne.
— Huyz

150
Erwähnenswert ist, dass Sie smartcasezum Arbeiten auch benötigen set ignorecase. Toller Tipp, danke!
— Skilldrick

12
Ich glaube, Sie könnten einfach ein \ C in Ihrem Suchausdruck für Substitutionen verwenden, wie folgt : :%s/lowercasesearch\C/replaceString/g. Dadurch wird nicht die gewünschte Standardfunktionalität erstellt, aber Sie können die Groß- und Kleinschreibung für Ersetzungen erzwingen, während Sie bei der Suche weiterhin von Smartcase profitieren.
— Anthony DiSanti

23
Sie können das IFlag auch für eine Ersetzung setzen, um zu erzwingen, dass das Muster zwischen Groß- und Kleinschreibung unterscheidet. Wie :%s/lowercasesearch/replaceString/gI.
— Rory O'Kane

1
Anmerkung von der After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>.
— Hilfeseite

291

Sie können die icOption in Vim vor der Suche festlegen :

:set ic

Um zu Suchanfragen zurückzukehren, bei denen zwischen Groß- und Kleinschreibung unterschieden wird, verwenden Sie:

:set noic

ic ist eine Abkürzung für ignorecase


Auch Ihre einzige Option, wenn Sie das Pech haben, weiterhin Vi anstelle von Vim zu verwenden. \cfunktioniert nicht in vi.
— Bluppfisk

61

Sie können den Befehl ausgeben

:set ignorecase

und danach wird bei Ihren Suchanfragen die Groß- und Kleinschreibung nicht mehr berücksichtigt.


50

Um zwischen Groß- und Kleinschreibung zu wechseln, verwende ich diese Zuordnung in meiner .vimrc

nmap <F9> :set ignorecase! ignorecase?


15
Ja, ignorecase?zeigt aber den aktuellen Status der Flagge an. (in der Kommandozeile)
— Boris Brodski

1
Vielen Dank! Für mich ist dies die nützlichste Antwort auf der Seite: eine Möglichkeit, schnell zwischen den beiden Modi umzuschalten, je nachdem, wonach Sie genau in diesem Moment suchen.
— Ben Hillier

30

Sie können in Ihren vimrcBefehlen Folgendes verwenden:

  • set ignorecase - Bei all Ihren Suchanfragen wird die Groß- und Kleinschreibung nicht berücksichtigt
  • set smartcase - Bei Ihrer Suche wird zwischen Groß- und Kleinschreibung unterschieden, wenn sie einen Großbuchstaben enthält

Sie müssen festlegen, ignorecaseob Sie das verwenden möchten, was smartcasebereitgestellt wird.

Ich habe kürzlich einen Artikel über Vim-Suchbefehle geschrieben (sowohl integrierte Befehle als auch die besten Plugins für eine effiziente Suche).


1
Es scheint, dass set smartcasekeine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchgeführt wird, wenn ich keine Großbuchstaben verwende ... ist das normal?
— Caneta

1
Ok, lesen Sie einfach weiter unten, dass Sie sowohl ignorecase als auch smartcase einstellen müssen, damit es funktioniert. Das tut mir leid!
— Caneta

24

Wie andere vorgeschlagen haben:

:set ic

Aber das Coole ist, dass Sie solche Modi umschalten können mit:

:set ic!

18

Fügen Sie diesen Befehl in Ihre vimrc-Datei ein

set ic 

Führen Sie immer eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch


4
Ich weiß nicht warum, aber mein vim ist standardmäßig auf Groß- und Kleinschreibung eingestellt, um dem entgegenzuwirken. verwenden set noic.
— user1510539

18

Der gute alte vim[grep]Befehl ..

:vimgrep /example\c/ &
  • \c für Groß- und Kleinschreibung nicht berücksichtigen
  • \C für Groß- und Kleinschreibung
  • % ist im aktuellen Puffer zu suchen

Geben Sie hier die Bildbeschreibung ein


Cannot open file "&"
— Vitaly Zdanevich

Ich denke er meinten sie %statt %.
— Oarfish

15

Ich bevorzuge die Verwendung \cam Ende der Suchzeichenfolge:

/copyright\c

10

Wie @huyz erwähnt, verwendet das gewünschte Verhalten manchmal Suchanfragen ohne Berücksichtigung der Groß- und Kleinschreibung, aber Substitutionen ohne Berücksichtigung der Groß- und Kleinschreibung. Meine Lösung dafür:

nnoremap / /\c
nnoremap ? ?\c

Damit immer, wenn Sie drücken, /oder ?es wird \cfür die Suche ohne Berücksichtigung der Groß- und Kleinschreibung hinzugefügt .


1
Kein schlechter Vorschlag, aber hindert er Sie daran, die smartcaseOption zu verwenden?
— Trebor Rude

Sieht so aus, als würde es seit \ c überschreibensmartcase
— Matthew Woo

4

Vim haben 2 Modi

1.edit-Modus

  1. normaler Modus (Esc)

Die Suche funktioniert im normalen Modus

/ \ c für Groß- und Kleinschreibung beachten

/ \ c suchen


Was ist mit dem visuellen Modus?
— user202729

3

Sie können dies ignorecasestandardmäßig festlegen und in der Shell ausführen

echo "set ic" >> ~/.vimrc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.