[英]Useful keyboard shortcuts and tips for ESS/R
我想向常規的ESS / R用戶詢問他們經常使用的關鍵綁定以及使用ESS / R的提示。
我在.emacs文件中設置了幾個快捷方式。 最有用的是:
C-tab在R命令行和文件之間切換(類似於josh的答案,但更快):
(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)
注釋 - 使用Cd或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文檔中找到更多有用的快捷方式。
Cc Cz ess-switch-to-end-of-ESS
很高興從您正在編輯foo.R的源文件跳轉到R控制台
我發現這個鏈接非常有幫助。 它提供了elisp代碼,使Shift + Enter能夠以上下文相關的方式執行許多常見任務。
http://kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/
很棒的東西,已經使用了很長時間。 不幸的是,截至2013年11月15日,由於EMACS的變化,取消注釋密鑰綁定可能不起作用(我認為,至少它在我加載最新版本之前工作)。 這是因為默認的取消注釋函數有3個參數,但上面定義的一個有2.最好的解決方法是從代碼中刪除取消注釋函數並保留鍵綁定,因此它使用默認的取消注釋函數。 或者換句話說就是使用它:
用於下一個/上一個命令的ESS R控制台中的Mn和Mp。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.