Atajos de teclado y consejos útiles para ESS / R


Me gustaría preguntar a los usuarios regulares de ESS/R qué enlaces de teclas usan con frecuencia y consejos sobre el uso de ESS/R.

Author: ggg , 0000-00-00

5 answers

He establecido varios atajos 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 answer, pero mucho más rápido):

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

Control y arriba / abajo teclas de flecha para buscar el historial con la coincidencia de lo que ya ha escrito:

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

Comment-descomentar una región seleccionada con C-d 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)

También he habilitado el modo CUA (desde el menú de opciones) y reconfigurado una gran cantidad de accesos directos para requerir solo 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)

Encontrará muchos más atajos útiles en La documentación de ESS.

 17
Author: Calimo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-25 09:18:55

C-c C-z ess-switch-to-end-of-ESS

Es bueno saltar de su archivo de origen que está editando foo.R a la consola R

 5
Author: josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-25 05:13:29

Me pareció que este enlace es extremadamente útil. Proporciona código elisp para hacer que Shift + Enter haga muchas tareas comunes de manera dependiente del contexto.

Http://kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess /

 2
Author: raco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-23 22:38:42

Gran material, lo han estado usando durante siglos. Desafortunadamente, a partir del 15-11-2013, el enlace de clave de descomento puede no funcionar debido a los cambios en EMACS (creo que al menos funcionaba antes de cargar la última versión). Esto se debe a que la función uncomment por defecto tiene 3 argumentos, pero el definido anteriormente tiene 2. La mejor manera de solucionar esto es simplemente eliminar la función de descomento del código y conservar el enlace de teclas, por lo que utiliza la función de descomento predeterminada. O en otras palabras, solo use esto:

  • (define-key ess-mode-map (kbd "C-d") 'comment-region)
  • (define-key ess-mode-map (kbd "C-S-d") 'uncomment-region)
 2
Author: Chris Howden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-15 02:54:58

M-n y M-p en la consola ESS R para el comando siguiente/anterior.

 0
Author: qed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-27 15:34:09