2013-02-13 9 views
7

Ich weiß, dass es möglich ist, zu verhindern, dass Vim bei jeder Suche hervorgehoben wird, aber gibt es eine Möglichkeit, es bei regulären Suchen hervorzuheben, aber nicht etwa bei Ersetzungen?Markieren Sie Suchen in Vim aber nicht Ersetzungen?

Ich werde markiert oft einen Textblock etwas tun, wie dann:

:s/^/#/ 

den ganzen Block kommentieren aus. Aber dann habe ich einen hässlichen gelben Balken, der auf der linken Seite meines Bildschirms rauf und runter läuft und ich muss jedes Mal :noh löschen.

Ich möchte markieren auf regulären/Suchvorgänge bleiben. Ist das möglich?

+0

Nicht sicher, ob etwas wie das funktioniert, aber vielleicht wäre es möglich, Ihre 'Suche' Highlight-Gruppe wie normaler Text aussehen zu lassen, und dann die '/' Such-Taste irgendwie zu ': match NewSearchGroup/searchterm/. Ich würde auch gerne einen besseren Weg hören. – Tim

+1

Dies beantwortet Ihre Frage nicht, ABER Sie sollten [tComment] (https://github.com/tomtom/tcomment_vim) (oder ein ähnliches Kommentar-Plugin) verwenden, um Textblöcke zu kommentieren. Sie können Bewegungen zum Kommentieren verwenden und können alles, einschließlich XML, einfach kommentieren. –

+0

Vielleicht können Sie [diese Antwort] (http://stackoverflow.com/a/13636203/778118) verwenden, um in die richtige Richtung zu zeigen ... – jahroy

Antwort

5

Diese Ihre Frage nicht vollständig beantwortet, aber für mich das gleiche Problem, es half: Ich habe diesen Befehl einfach die Markierung nach einer Suche oder einer Suche-und-Ersetzen-

nnoremap <esc> :noh<return><esc> 

(von deaktivieren Vim clear last search highlighting)

+0

Sie schlugen mich dazu ... Ich würde empfehlen, die Zuordnung 'ENTER' Taste. – jahroy

1

Meine Lösung: setzen sie diese in Ihre vimrc

set nohlsearch 

noremap * :set hlsearch<CR>:nohlsearch<CR>* 
noremap/:set hlsearch<CR>:nohlsearch<CR>/ 
noremap ? :set hlsearch<CR>:nohlsearch<CR>? 

nnoremap <F4> :set invhlsearch<CR> 
inoremap <F4> <ESC>:set invhlsearch<CR>gi 
nnoremap <CR> :set nohlsearch<CR> 

Was es tut:

  1. Suchvorgänge aktivieren immer Hervorhebungen.
  2. Verwenden Sie Geben Sie ein, um die Markierungen bis zur nächsten Suche zu deaktivieren, nicht jedoch die nächste. Drücken Sie Geben Sie erneut ein, aber sie werden nicht wieder eingeschaltet.
  3. Verwenden Sie F4 zum Deaktivieren von Highlights bis zur nächsten Suche, aber nicht als nächstes ersetzen. Durch erneutes Drücken von F4 schalten Sie die Lichter für das letzte Suchmuster um --- Suche ODER Ersatz --- wenn es eins gab.

Einige Hinweise auf Highlights, die nie wirklich gut erklärt werden:
Wenn die 'hlsearch' Option aktiviert ist, werden alle zukünftigen Suchen/Substitute auf "highlight visibility" wenden. Die aktuelle "highlight visibility" ist nicht wirklich eine Option, die Sie direkt abfragen oder einstellen können, aber Sie können Highlight Sichtbarkeit mit dem Befehl :nohlsearch unabhängig deaktivieren (das ist nicht dasselbe wie :set nohlsearch, weil die nächste Suche die Sichtbarkeit wieder aktiviert).

Darüber hinaus gibt es immer, wenn Sie den Befehl :set hlsearch ausführen, zwei Effekte: Es legt die Option UND macht vim vergessen, wenn Sie jemals :nohlsearch eingegeben haben. Mit anderen Worten, wenn Sie 'hlsearch' (entweder on oder off) ändern, wird der aktuelle "highlight visibility" logisch übereinstimmen.

Verwandte Themen