2011-09-14 1 views
18

Comment est-ce que je peux remapper la recherche incrémentale (C-s) à C-f dans Emacs?Comment lier 'search' et 'search-repeat' à C-f dans Emacs?

J'essaie de faire (global-set-key (kbd "C-f") 'isearch-forward) mais le second C-f ne se répète pas la recherche et je dois utiliser C-s.

J'ai ensuite essayé (global-set-key (kbd "C-f") 'isearch-repeat-forward) mais le premier C-f n'a pas commencé la recherche.

Et j'ai même essayé (global-set-key (kbd "C-f C-f") 'isearch-repeat-forward), mais cela provoque une erreur.

Je souhaite utiliser C-f pour les commandes de recherche et de répétition de recherche, comment faire?

Merci.

Répondre

16

(define-key isearch-mode-map "\C-f" 'isearch-repeat-forward)

+3

A travaillé! '(-clé FIXER GLOBALES (kbd "C-f") 'isearch-forward) (define-key isearch-mode carte "\ C-f"' isearch-repeat-avant)' Merci beaucoup. –

5

isearch-repeat-forward est défini dans la isearch-mode-map

Pour résoudre votre problème, procédez comme suit:

(global-set-key (kbd "C-f") 'isearch-forward) 

(add-hook 'isearch-mode-hook 
(lambda() 
(define-key isearch-mode-map (kbd "C-f") 'isearch-repeat-forward) 
) 
) 

EDIT: En fait, vous n'avez pas besoin d'ajouter un crochet. La réponse acceptée par Ross Patterson est correcte.

+0

A travaillé avec cette solution. Merci. –

+0

Pourquoi faire cela dans le mode hook et ne pas simplement changer la carte de mode une fois, avec un seul 'define-key' comme @ ross-patterson l'a fait dans sa réponse? –

+0

@Davor Cubranic oui, la réponse acceptée est correcte –