2014-09-10 2 views
5

Ich versuche Emacs + Evil nach fast zwei Jahrzehnten als Vim-Benutzer. Ich verschiebe die meisten meiner Vim-Konfiguration auf Evil, aber eine Sache, die ich viele Probleme habe, ist die Suche und Hervorhebung wie die, die ich mit Vim verwende. Was ich versuche zu erreichen, ist eine nicht-inkrementelle Suche und die Highlights zu bleiben, bis ich sie manuell lösche oder eine andere Suche mache.Emacs + Evil: nicht inkrementelle Suche und dauerhafte Hervorhebung?

Ich habe diese Einstellungen auf meine Config-Datei festgelegt:

;; keep the search highlights 
(setq lazy-highlight-cleanup nil) 
(setq lazy-highlight-max-at-a-time nil) 
(setq lazy-highlight-initial-delay 0) 

die / Taste verwenden, mit dem Bösen zu suchen, funktioniert die inkrementelle Sache und auch die Highlights, sobald ich andere Bewegungstaste drücken entfernt (. wie j Schlüssel aber mit C-s (emacs interne i-Suche) die Highlights bleiben mit C-s RET (nicht inkrementelle Suche) die Highlights bleibt nicht

+1

congrats für den Sprung! Ich habe keine Option gefunden. Zumindest könnten Sie den Schlüssel '/' der eingebauten nicht-inkrementellen Suche zuordnen. Siehe 'C-h k ' um den Namen der Funktion zu sehen. Also so etwas wie '(define-key evil-normal-state-map '/' 'search-forward)'? – Ehvince

+1

wäre es schön, wenn Sie dieses Dokument bearbeiten, wenn Sie es zu spärlich fühlen: http://wikemacs.org/index.php/Evil – Ehvince

+0

@Ehvince danke für den Tipp, ich habe es getan. Ich überprüfe die Quelle von Evil, um zu sehen, ob es einen Weg gibt, zu haben, was ich will. Ich schreibe einen Artikel über die Einstellungen, die ich ändere, und ich werde es bald veröffentlichen. Ich werde auch dieses Wiki überprüfen, um zu sehen, ob ich etwas Nützliches hinzufügen kann. – juanjux

Antwort

3

Ok, eine funktionierende Lösung für die Markierung gefunden:.

(defun highlight-remove-all() 
    (interactive) 
    (hi-lock-mode -1) 
    (hi-lock-mode 1)) 

(defun search-highlight-persist() 
    (highlight-regexp (car-safe (if isearch-regexp 
            regexp-search-ring 
           search-ring)) (facep 'hi-yellow))) 

(defadvice isearch-exit (after isearch-hl-persist activate) 
    (highlight-remove-all) 
    (search-highlight-persist)) 

(defadvice evil-search-incrementally (after evil-search-hl-persist activate) 
    (highlight-remove-all) 
    (search-highlight-persist)) 

Dadurch werden alle Suchen hervorgehoben, die mit isearch oder Evil search durchgeführt wurden. Die Hervorhebung bleibt bestehen, bis Sie einen weiteren Anruf tätigen oder highlight-remove-all anrufen. Ich habe es auf leader SPC mit abgebildet:

(evil-leader/set-key "SPC" 'highlight-remove-all) 

PS: Ich habe ein Paket gemacht, es ist bereits auf Melpa mit dem Namen "Übel-search-Highlight-persistieren" und: https://github.com/juanjux/evil-search-highlight-persist

1

machen ‚/ 'suchen Arbeit, wie es in vim tut (Highlight bleibt bestehen, bis Sie wieder suchen), setzen Sie diese, bevor Sie (require 'evil):

(setq evil-search-module 'evil-search) 
+1

Wenn ich es auf diese Weise einrichten, funktionieren einige Tasten nicht richtig i. e. Suche erneut (n-Taste) versuchte, isearch aufzurufen. Für mich bestand die Lösung darin, '' bösen-suchen-suchen-modul 'böse-suchen-modul' bösen-suchen) 'nach' (bösen-mode 1) '. – Tahtisilma

Verwandte Themen