Ich möchte die Übereinstimmungen auflisten, wenn ich drücke:
/example
so dass ich sehe, wo alle Spiele auf einmal sind.
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
node_modules
? - - Wie Perl-Regexe die Standardfunktion von Vim ändern? - - Im Folgenden habe ich meine Suche nach .tex-Dateien gestaltet. Askubuntu.com/a/789769/25388 Es wäre schön, von Ihnen zu lernen, wie Sie sie verbessern können. Es ist nicht so intuitiv, deshalb habe ich die Logik auch oft selbst vergessen.In seiner längeren Form:
Sie können das Muster / den regulären Ausdruck weglassen und Vim verwendet den vorherigen Suchbegriff erneut.
Wissenswertes: Das grep- Tool wurde nach dieser Befehlssequenz benannt.
quelle
:g//
- Da p (rint) die Standardaktion ist, können Sie dies auch weglassen.:g/
ist noch kürzer!--context 9
?:%s/regular-expression//gn
Es wird etwas in dieser Richtung produzieren:X matches on Y lines
Sie können auch Folgendes tun:
g/pattern/#
Dadurch werden das gewünschte Muster und die Nummer der Zeile gedruckt.
quelle
#
ist nicht erforderlich. Es zeigt standardmäßig ZeilennummernWenn Sie sich diese Liste ansehen und schnell zwischen den Spielen wechseln möchten, sollten Sie die Verwendung in Betracht ziehen
:vimgrep example %
oder
:grep example %
Dadurch wird die "Fehlerliste" mit allen Übereinstimmungen
:copen
gefüllt, sodass Sie sie alle im Quickfix-Puffer auflisten, in einer bestimmten Zeile die Eingabetaste drücken können, um zu dieser Übereinstimmung zu springen, oder Befehle wie:cn
und verwenden können:cp
, um hin und her zu gehen.Eine ausführliche Erklärung finden Sie in meiner Antwort auf eine ähnliche Frage
quelle
E499: Empty file name for '%' or '#', only works with ":p:h"
auf MacVim 8.1Habe gerade einen neuen gelernt: den
Location List
!Geben Sie in die aktuelle Datei ein,
:lvim foo %
nach dem gesuchtfoo
werden soll, und geben Sie alle Übereinstimmungenfoo
in die Standortliste ein .Geben Sie
:lopen
den Speicherort Liste im quickfix Fenster zu öffnen, die vollständig befahrbar wie es üblich ist.Verwenden Sie
:lnext
/:lprevious
to, um die Liste zu durchsuchen (verwenden Sie tpope / unbeeinträchtigte Zuordnungen, um die beste Erfahrung zu erzielen ).quelle
Eine andere Möglichkeit besteht darin, die Suchbefehle für Include-Dateien zu verwenden.
Dadurch werden alle Vorkommen des Wortes unter dem Cursor aufgelistet. Es kann jedoch mehr sein, als Sie benötigen, da auch alle Dateien durchsucht werden, die in der aktuellen Datei enthalten sind.
Das Schöne an diesem Befehl ist jedoch, dass in der Anzeige der Suchergebnisse neben der Zeilennummer jeder Übereinstimmung auch die Anzahl der Übereinstimmungen angezeigt wird.
viele Varianten zu sehen.
Ein Hinweis zu
Dies kann weiter reduziert werden auf
weil, wie andere gesagt haben, p (rint) die Standardaktion ist.
quelle
[I
Kontext zu erhalten, wie auf grep--context 9
?Sie können ein schönes
quickfix
Fenster mit den Übereinstimmungen aus Ihrem aktuellen Suchmuster erhaltenSuper praktisch, wenn Sie zuvor mit just ein komplexes Suchmuster erstellt haben
/pattern
Bearbeiten : Ich habe gerade herausgefunden, dass dies auch für alle offenen Puffer funktioniert
quelle
Mit
:set hlsearch
wird alle Übereinstimmungen gelb hervorgehoben, sodass Sie die Datei problemlos nach Übereinstimmungen durchsuchen können. Dies ist jedoch möglicherweise nicht das, was Sie nach der Suche möchten: g // p gibt Ihnen die aufgelisteten Übereinstimmungenquelle
:nohl
, um die Highlights zu löschen, wenn Sie sie nicht mehr benötigen.Darauf näher einzugehen ... statt
Sie können auch direkt schreiben
oder da p (rint) die Standardaktion für den Befehl: g (lobal) ist, kann dies auf verkürzt werden
Und anstelle von p (rint) sind andere Aktionen möglich, z. B. d (elete). Siehe: Hilfe: global
quelle
Wenn ja
:set number
, zeigt der obige Befehl auch Zeilennummern an.Wenn nicht
:set number
, dannzeigt die Zeilennummern an.
quelle
Ich habe dafür einen Code geschrieben. Es vermeidet tatsächlich die Probleme in
vimgrep
. Es funktioniert auch mit unbenannten Dateien. Und es ist einfacher zu bedienen.Wenn Sie es mit einem Muster aufrufen, werden die Standortfenster mit allen Übereinstimmungen geöffnet.
Dies könnte ein Befehl sein
Sie müssen also nur tippen
:Mat pattern
Ich verwende auch die folgende Zuordnung, um die Übereinstimmungen der aktuellen visuellen Auswahl zu erhalten.
quelle
Strg-F, um alle Suchergebnisse aufzulisten:
quelle