Wie kann ich alle Vorkommen eines ausgewählten Wortes in GVim wie in Notepad ++ hervorheben?
159
Im normalen Modus:
:set hlsearch
Dann suchen Sie nach einem Muster mit dem Befehl /
im Normalmodus oder <Ctrl>o
gefolgt von /
im Insert - Modus. *
Im normalen Modus wird nach dem nächsten Vorkommen des Wortes unter dem Cursor gesucht. Die hlsearch
Option hebt alle hervor, falls festgelegt. #
sucht nach dem vorherigen Vorkommen des Wortes.
So entfernen Sie die Markierung der vorherigen Suche:
:nohlsearch
Möglicherweise möchten Sie :nohlsearch<CR>
einem praktischen Schlüssel zuordnen.
hlsearch
viel umschalten möchten, möchten Sie möglicherweise:set hlsearch!
statt zuordnen:set nohlsearch
. Dadurch wird die Einstellung umgeschaltet, anstatt sie immer auszuschalten.*
oder#
von<Ctrl>o
im Normalbetrieb.:nohlsearch
können Sie einfach verwenden:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
zum Umschalten zwischen Hervorheben und Entfernen von Hervorheben durch<F4>
.Die
*
Taste hebt alle Vorkommen des Wortes hervor, das sich unter dem Cursor befindet.quelle
&hlsearch
ist.#
.Ich weiß, dass es eine wirklich alte Frage ist, aber wenn jemand an dieser Funktion interessiert ist, kann er diesen Code überprüfen http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
quelle
Am einfachsten tippen Sie im normalen Modus
*
Ich habe auch diese Zuordnungen zum Aktivieren und Deaktivieren
Wählen Sie ein Wort aus, indem Sie darauf klicken
Bonus: CountWordFunction
Wort mit der Maus auswählen und Vorkommen gleichzeitig zählen: OBS: Beachten Sie, dass in dieser Version am Ende der Befehl "CountWord" steht
quelle
nnoremap * *``cgn
undnnoremap # #``cgN
*
, wie schalte ich die Markierung aus?:noh
oder:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
undnnoremap <silent> # :execute "normal! #n"<cr>
? Diese markieren nur das Wort unter dem Cursor, verschieben es jedoch nicht zum nächsten Vorkommen.Suchbasierte Lösungen ( *, /...) bewegen den Cursor, was unglücklich sein kann.
Eine Alternative besteht darin, das erweiterte mark.vim- Plugin zu verwenden und dann das
.vimrc
Doppelklicken auf Trigger-Hervorhebung abzuschließen (ich weiß nicht, wie eine Tastaturauswahl einen Befehl auslösen kann):Es ermöglicht mehrere Hervorhebungen, Persistenz usw.
So entfernen Sie Hervorhebungen:
:Mark
(bis zur nächsten Auswahl ausschalten):MarkClear
quelle
:set noincsearch
. Meiner Meinung nach ist dies eine der nervigsten Funktionen in Vim und eines der ersten Dinge, die ich für Neuinstallationen deaktiviere.*
wird den Cursor bedingungslos bewegen. Und ich kann nicht sehen, wieincsearch
ärgerlich es sein könnte, da es nur ein Blick nach vorne ist, eine aktuelle Suche durchzuführen, ohne Ihre Position tatsächlich zu ändern.incsearch
, dass das Ausschalten die Bewegung verhindern würde, aber ein schneller Test bestätigt, dass Sie korrekt sind. Entschuldigen Sie. Es ist jedoch sehr einfach, ein Mapping zu erstellen, das die Bewegung verhindert ::nnoremap * *N
. Ich kann nicht glauben, dass du es nicht tust ärgerlich finden, wenn Ihr Cursor während einer Suche über den gesamten Bildschirm springt. Aber ... diese Dinge sind völlig subjektiv. Vive la différence ;-):let @/='hilight_this'
, vorausgesetzt, Sie habenhlsearch
aktiviert. Es hebt Text hervor, ohne zu springen, und Sie müssen vorhandene Einstellungen nicht ändern. Dies ändert den Wert, der aktuell im Suchregister gespeichert ist.Zuerst (oder in Ihrer .vimrc):
Positionieren Sie dann den Cursor über dem Wort, das hervorgehoben werden soll, und drücken Sie
*
.hlsearch
bedeutet, alle Vorkommen der aktuellen Suche hervorzuheben und*
nach dem Wort unter dem Cursor zu suchen.quelle
Stellen Sie zunächst sicher, dass hlsearch aktiviert ist, indem Sie den folgenden Befehl eingeben
Sie können dies auch wie festgelegt zu Ihrer .vimrc-Datei hinzufügen
Wenn Sie jetzt den Schnellsuchmechanismus im Befehlsmodus oder einen regulären Suchbefehl verwenden, werden alle Ergebnisse hervorgehoben. Um zwischen den Ergebnissen vorwärts zu wechseln, drücken Sie 'n', um rückwärts zu gehen. Drücken Sie 'N'.
Um im normalen Modus eine schnelle Suche nach dem Wort unter dem Cursor durchzuführen und mit einem Befehl zum nächsten Vorkommen zu springen, drücken Sie '*'. Sie können auch nach dem Wort unter dem Cursor suchen und zum vorherigen Vorkommen wechseln, indem Sie '# drücken '
Im normalen Modus kann die Schnellsuche auch mit dem aufgerufen werden
Um Markierungen bei der Verwendung von Okulenzen zu entfernen, habe ich dies an eine Verknüpfung in meiner .vimrc gebunden
quelle
Aktivieren Sie die Hervorhebung der Suche:
Dann suchen Sie nach dem Wort:
quelle
Mein Favorit dafür ist das mark.vim Plugin. Es ermöglicht die gleichzeitige Hervorhebung mehrerer Wörter in verschiedenen Farben.
Beispiel Screenshot
quelle
Um ein Wort hervorzuheben, ohne den Cursor zu bewegen, ploppieren Sie
in dein vimrc.
Das Schöne daran ist
g*
undg#
bleibt wie "normal"*
und#
.Zum
hlsearch
Starten können Sie "Kurzform" verwenden (es sei denn, Sie haben eine andere Funktion, die im Befehlsmodus mit "noh" beginnt) ::noh
. Oder Sie können eine lange Version verwenden::nohlsearch
Für extreme Bequemlichkeit (ich schalte
hlsearch
vielleicht 20 Mal pro Tag um) können Sie etwas zum Umschaltenhlsearch
wie folgt zuordnen :.:. Wenn dies der Fall
<leader>
ist \(dies ist standardmäßig der Fall), können Sie \stim normalen Modus (schnell) drücken, um umzuschaltenhlsearch
.Oder vielleicht möchten Sie nur
:noh
kartiert haben:Das obige wird einfach
:nohlsearch
so ausgeführt, dass es (anders als:set hlsearch!
) das Wort beim nächsten Drücken *oder #im normalen Modus immer noch hervorhebt .Prost
quelle
vielleicht ?
quelle
Verwenden
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Stellen Sie sicher, dass Sie etwas
IncSearch
eingestellt haben. zBcall s:Attr('IncSearch', 'reverse')
. Alternativ können Sie stattdessen eine andere Markierungsgruppe verwenden.Dadurch werden alle Vorkommen von Wörtern unter Ihrem Cursor unverzüglich hervorgehoben. Ich stelle fest, dass mich eine Verzögerung verlangsamt, wenn ich durch den Code flitze. Die Hervorhebungsfarbe stimmt mit der Farbe des Wortes überein, sodass sie mit Ihrem Schema übereinstimmt.
quelle
Warum nicht einfach: z /
Dadurch werden das aktuelle Wort unter dem Cursor und alle anderen Vorkommen hervorgehoben. Und Sie müssen nicht für jedes gesuchte Element einen separaten Befehl eingeben. Vielleicht ist das in der unheiligen GVIM nicht verfügbar? Es ist standardmäßig in vim.
* ist nur dann gut, wenn der Cursor zum nächsten Vorkommen bewegt werden soll. Wenn Sie zwei Dinge visuell vergleichen, möchten Sie oft nicht, dass sich der Cursor bewegt, und es ist ärgerlich, jedes Mal die Taste * zu drücken.
quelle
~/.vimrc
Datei ein" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
Im normalen Modell gehen Sie über das Wort.
Drücken Sie * Drücken Sie F8, um rekursiv unter Ihrem gesamten Projekt über das Wort zu suchen
quelle
Zum Beispiel diese PlugIns:
https://github.com/rrethy/vim-illuminate
https://github.com/itchyny/vim-cursorword
Suchen Sie einfach nach unter dem Cursor in vimawesome.com
Der Schlüssel ist, wie bereits erwähnt, dass das Highlight NICHT mit Ihrer Suche in Konflikt steht : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Screenshot davon, wie es NICHT mit der Suche in Konflikt steht: Hinweise:
quelle