Полезные сочетания клавиш и советы для ESS / R - PullRequest
25 голосов
/ 25 мая 2010

Я хотел бы спросить обычных пользователей ESS / R, какие привязки клавиш они используют часто, и советы по использованию ESS / R.

Ответы [ 5 ]

17 голосов
/ 25 мая 2010

Я установил несколько ярлыков в моем файле .emacs. Наиболее полезными являются:

C-tab для переключения между командной строкой R и файлом (аналогично josh answer, но гораздо быстрее):

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

Клавиши управления и стрелки вверх / вниз для истории поиска, совпадающие с уже набранными:

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

Комментарий-раскомментируйте выбранный регион с помощью C-d или 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)

Кроме того, я также включил режим CUA (из меню параметров) и перенастроил довольно много сочетаний клавиш, чтобы требовать только двух нажатий клавиш (вместо четырех в стандартном режиме):

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

Вы найдете много других полезных ярлыков в документации ESS .

5 голосов
/ 25 мая 2010

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

приятно перейти с исходного файла, который вы редактируете, для foo.R на консоль R

2 голосов
/ 15 ноября 2013

Отличный материал, использую его целую вечность. К сожалению, по состоянию на 15-11-2013 привязка раскомментированного ключа может не работать из-за изменений EMACS (я думаю, по крайней мере, она работала до того, как я загрузил последнюю версию). Это связано с тем, что функция раскомментирования по умолчанию имеет 3 аргумента, а определенный выше имеет 2 аргумента. Лучший способ исправить это - просто удалить функцию раскомментирования из кода и сохранить привязку клавиш, поэтому она использует функцию раскомментирования по умолчанию. Или другими словами просто используйте это:

  • (ключ определения ess-mode-map (kbd "C-d") 'область комментариев)
  • (определить ключ-ключ ess-mode-map (kbd "C-S-d") 'uncomment-region)
2 голосов
/ 24 августа 2013

Я нашел эту ссылку очень полезной. Он предоставляет код elisp, чтобы Shift + Enter выполняли многие общие задачи в зависимости от контекста.

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

0 голосов
/ 27 октября 2014

M-n и M-p в консоли ESS R для следующей / предыдущей команды.

...