Useful keyboard shortcuts and tips for ESS/R Useful keyboard shortcuts and tips for ESS/R r r

Useful keyboard shortcuts and tips for ESS/R


I have set several shortcuts in my .emacs file. The most useful are:

C-tab to switch between the R command line and the file (similar to josh answer, but much faster):

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

Control and up/down arrow keys to search history with matching what you've already typed:

(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-uncomment a selected region with C-d or 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)

Also I've also enabled CUA mode (from options menu) and reconfigured quite a lot of shortcuts to require only two keystrokes (instead of four in standard mode):

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

You will find many more useful shortcuts in ESS documentation.


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

is nice to jump from your source file that you are editing foo.R to the R console


I found this link to be extremely helpful. It provides elisp code to make Shift+Enter do many common tasks in a context dependent fashion.

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