2010-05-25 22 views

risposta

17

ho impostato diversi collegamenti in il mio file .emacs. Il più utili sono:

C-tab per passare dalla riga di comando R e il file (simile a Josh risposta, ma molto più veloce):

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

di controllo e tasti su/giù per cercare la storia coordinata con quello che hai già scelto:

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

Commento-uncomment una regione selezionata con Cd 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) 

Inoltre ho anche attivato la modalità CUA (dal menu opzioni) e riconfigurato un sacco di scorciatoie da richiedere solo due sequenze di tasti (invece di quattro in modalità standard):

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

Troverete scorciatoie molti altri utili in ESS documentation.

+2

Posso modificare Ctrl r per ess-eval-line-and-step quando nessun codice è selezionato ed ess-eval-region quando il codice è selezionato? Questo renderà più simile a Rgui.exe. – ggg

+0

Sono state apportate modifiche al codice precedente di recente? Quando ho provato a usare questi binding di tasti (su Windows), c'è stato un errore nelle mappe in modalità comint e in quelle in ess-mode-map. – Anusha

+0

Su emacs 24 (osx 10.10) la funzione uncomment-region segnala un errore: numero errato di argomenti. – qed

5

Cc Cz ess-switch-to-end-of-ESS

è bello per saltare da file di origine che si sta modificando foo.R alla console R

2

Grande roba, hanno usata per secoli. Sfortunatamente a partire dal 15-11-2013 il binding della chiave di uncomment potrebbe non funzionare a causa di modifiche EMACS (penso che almeno funzionasse prima che avessi caricato l'ultima versione). Questo perché la funzione uncomment predefinita ha 3 argomenti ma quella definita sopra ha 2. Il modo migliore per risolvere questo problema è semplicemente eliminare la funzione uncomment dal codice e mantenere la combinazione di tasti, quindi usa la funzione uncomment predefinita. O in altre parole basta usare questo:

  • (define-chiave ess-mode-map (kbd "Cd") 'commento-regione)
  • (define-chiave ess-mode-map (kbd "CSD ")" uncomment-region)
0

Mn e Mp nella console ESS R per il comando successivo/precedente.

Problemi correlati