2010-05-25 16 views

Répondre

17

J'ai mis plusieurs raccourcis mon fichier .emacs. Les plus utiles sont:

C-onglet pour basculer entre la ligne de commande R et le fichier (similaire à josh réponse, mais beaucoup plus rapide):

(global-set-key [C-tab] 'other-window) 

contrôle et les touches fléchées haut/bas pour rechercher l'histoire avec correspondant à ce que vous avez déjà saisi:

(define-key comint-mode-map [C-up] 'comint-previous-matching-input-from-input) 
(define-key comint-mode-map [C-down] 'comint-next-matching-input-from-input) 

Commentaire-uncomment une région sélectionnée avec Cd ou C-maj-d

(defun uncomment-region (beg end) 
    "Like `comment-region' invoked with a C-u prefix arg." 
    (interactive "r") 
    (comment-region beg end -1)) 

(define-key ess-mode-map (kbd "C-d") 'comment-region) 
(define-key ess-mode-map (kbd "C-S-d") 'uncomment-region) 

Aussi j'ai aussi activé le mode ACU (à partir du menu des options) et reconfiguré beaucoup de raccourcis pour exiger que deux frappes (au lieu de quatre en mode standard):

;; Delete selection when pressing [delete] key 
    (delete-selection-mode t) 

;; ESS Mode (.R file) 
    (define-key ess-mode-map "\C-l" 'ess-eval-line-and-step) 
    (define-key ess-mode-map "\C-p" 'ess-eval-function-or-paragraph-and-step) 
    (define-key ess-mode-map "\C-r" 'ess-eval-region) 

;; iESS Mode (R console) 
    (define-key inferior-ess-mode-map "\C-u" 'comint-kill-input) 
    (define-key inferior-ess-mode-map "\C-w" 'backward-kill-word) 
    (define-key inferior-ess-mode-map "\C-a" 'comint-bol) 
    (define-key inferior-ess-mode-map [home] 'comint-bol) 

;; Comint Mode (R console as well) 
    (define-key comint-mode-map "\C-e" 'comint-show-maximum-output) 
    (define-key comint-mode-map "\C-r" 'comint-show-output) 
    (define-key comint-mode-map "\C-o" 'comint-kill-output) 

;; Search with C-f/C-F (control-maj-F for backware search) 
    (global-set-key "\C-f" 'isearch-forward) 
    (global-set-key (kbd "C-S-f") 'isearch-backward) 
    (define-key isearch-mode-map "\C-f" 'isearch-repeat-forward) 
    (define-key isearch-mode-map (kbd "C-S-f") 'isearch-repeat-backward) 

;; Save with C-s/C-S 
    (global-set-key (kbd "C-s") 'save-buffer) 
    (global-set-key (kbd "C-S-s") 'write-file) 
    ;; need to redefine them for isearch mode (don't know why) 
    (define-key isearch-mode-map (kbd "C-s") 'save-buffer) 
    (define-key isearch-mode-map (kbd "C-S-s") 'write-file) 

;; Pause = dedicate window. 
    (defun toggle-current-window-dedication() 
    (interactive) 
    (let* ((window (selected-window)) 
      (dedicated (window-dedicated-p window))) 
    (set-window-dedicated-p window (not dedicated)) 
    (message "Window %sdedicated to %s" 
       (if dedicated "no longer " "") 
       (buffer-name)))) 
    (global-set-key [pause] 'toggle-current-window-dedication) 

;; delete = delete 
    (global-set-key [delete] 'delete-char) 

;; C-b = list buffers 
    (global-set-key (kbd "C-b") 'bs-show) 

Vous trouverez beaucoup d'autres raccourcis utiles au ESS documentation.

+2

Puis-je modifier Ctrl r en ess-eval-line-and-step quand aucun code n'est sélectionné et ess-eval-region lorsque le code est sélectionné? Cela le rendra plus comme Rgui.exe. – ggg

+0

Y a-t-il des changements au code ci-dessus récemment? Lorsque j'ai essayé d'utiliser ces raccourcis clavier (sur Windows), il y avait une erreur avec la carte en mode comint et les paramètres ess-mode-map. – Anusha

+0

Sur emacs 24 (osx 10.10), la fonction uncomment-region signale une erreur: nombre incorrect d'arguments. – qed

5

Cc Cz ess-switch-bout-de-ESS

est agréable de sauter à partir de votre fichier source que vous modifiez foo.R à la console R

2

Great stuff,. Malheureusement, à compter du 15-11-2013, la liaison de la clé de décommission peut ne pas fonctionner en raison de modifications EMACS (je pense, au moins, il fonctionnait avant que je charge la dernière version). Cela est dû au fait que la fonction de décomptage par défaut comporte 3 arguments mais que celui défini ci-dessus en contient 2. La meilleure solution consiste à supprimer simplement la fonction de commentaire du code et à conserver la liaison, de manière à utiliser la fonction de décomptage par défaut. En d'autres termes utiliser ceci:

  • (define-key ess-mode carte (kbd "Cd") « commentaire région)
  • (define-key ess-mode carte (kbd « CSd ") 'uncomment-region)
0

Mn et Mp dans la console ESS R pour la commande suivante/précédente.