2010-05-25 11 views

Respuesta

17

he puesto varios accesos directos en mi archivo .emacs Los más útiles son:

C-Tab para cambiar entre la línea de comandos R y el archivo (similar a josh respuesta, pero mucho más rápido):

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

Control y arriba/abajo flecha para buscar la historia a juego con lo que ya has proporcionado:

(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) 

comentario-uncomment una región seleccionada mediante el CD o 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) 

Además también he activado el modo CUA (desde el menú de opciones) y reconfigurar un buen montón de atajos para requerir sólo dos pulsaciones de teclas (en lugar de cuatro en el modo estándar):

;; 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) 

Va a encontrar muchos más accesos directos útiles en ESS documentation.

+2

¿Puedo modificar Ctrl r para ess-eval-line-and-step cuando no se selecciona ningún código y ess-eval-region cuando se selecciona el código? Esto lo hará más parecido a Rgui.exe. – ggg

+0

¿Hay algún cambio en el código anterior recientemente? Cuando traté de usar estos enlaces de teclas (en Windows), hubo un error con el mapa de modo comint y la configuración de ess-mode-map. – Anusha

+0

En emacs 24 (osx 10.10), la función uncomment-region informa un error: número incorrecto de argumentos. – qed

5

Cc Cz ess-switch-to-end-of-ESS

es agradable para saltar de su archivo fuente que se está editando foo.R a la consola R

2

Grandes cosas, han estado usando durante siglos. Lamentablemente, desde el 15-11-2013, la combinación de teclas de descompresión puede no funcionar debido a los cambios de EMACS (creo que al menos funcionaba antes de cargar la última versión). Esto se debe a que la función de descompresión predeterminada tiene 3 argumentos, pero el definido anteriormente tiene 2. La mejor manera de solucionar esto es simplemente eliminar la función de descompresión del código y conservar la vinculación, por lo que utiliza la función de descompresión predeterminada. O en otras palabras, sólo tiene que utilizar esto:

  • (define-clave ess-mode-map (KBD "CD") 'comment-región)
  • (define-clave ess-mode-map (KBD "SCd ") 'uncomment-region)
0

Mn y Mp en la consola ESS R para el comando siguiente/anterior.

Cuestiones relacionadas