ESS/R の常連ユーザーに、よく使うキー バインドと、ESS/R の使用上のヒントをお聞きしたいと思います。
5 に答える
.emacs ファイルにいくつかのショートカットを設定しました。最も有用なものは次のとおりです。
Rコマンドラインとファイルを切り替えるC-tab(josh answerに似ていますが、はるかに高速です):
(global-set-key [C-tab] 'other-window)
すでに入力したものと一致する履歴を検索するには、Ctrl キーと上下矢印キーを使用します。
(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 モードを (オプション メニューから) 有効にし、かなりの数のショートカットを再構成して、(標準モードでは 4 回ではなく) 2 回のキーストロークだけで済むようにしました。
;; 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 コンソールにジャンプすると便利です
このリンクは非常に役立つことがわかりました。Shift+Enter で多くの一般的なタスクをコンテキスト依存の方法で実行できるようにする elisp コードを提供します。
http://kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/
素晴らしいもので、何年も使用しています。残念ながら、2013 年 11 月 15 日現在、EMACS の変更により、コメント解除キー バインドが機能しない可能性があります (少なくとも、最新バージョンをロードする前は機能していたと思います)。これは、デフォルトの uncomment 関数には 3 つの引数があるのに対し、上記で定義したものには 2 つの引数があるためです。これを修正する最善の方法は、単にコードから uncomment 関数を削除し、キーバインドを保持することです。これにより、デフォルトの uncomment 関数が使用されます。または、言い換えれば、これを使用してください:
- (define-key ess-mode-map (kbd "Cd") 'comment-region)
- (define-key ess-mode-map (kbd "CSd") 'uncomment-region)
次/前のコマンドの ESS R コンソールの Mn と Mp。