Ho difficoltà a fare in modo che emacs -nw funzioni efficacemente in modalità terminale (emacs -nw). Alcune informazioni di configurazione: Il server di lavoro è connesso tramite SSH ed emacs è in esecuzione sul server. Di solito mi sto connettendo usando SSH e "emacs -nw" per lavorare sui miei file.Modalità terminale emacs: come copiare e incollare in modo efficiente
La configurazione emacs viene prelevato da: https://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/
;; make mouse selection to be emacs region marking
(require 'mouse)
(xterm-mouse-mode t)
(defun track-mouse (e))
(setq mouse-sel-mode t)
;; enable clipboard in emacs
(setq x-select-enable-clipboard t)
;; enable copy/paste between emacs and other apps (terminal version of emacs)
(unless window-system
(when (getenv "DISPLAY")
;; Callback for when user cuts
(defun xsel-cut-function (text &optional push)
;; Insert text to temp-buffer, and "send" content to xsel stdin
(with-temp-buffer
(insert text)
;; I prefer using the "clipboard" selection (the one the
;; typically is used by c-c/c-v) before the primary selection
;; (that uses mouse-select/middle-button-click)
(call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
;; Call back for when user pastes
(defun xsel-paste-function()
;; Find out what is current selection by xsel. If it is different
;; from the top of the kill-ring (car kill-ring), then return
;; it. Else, nil is returned, so whatever is in the top of the
;; kill-ring will be used.
(let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
(unless (string= (car kill-ring) xsel-output)
xsel-output)))
;; Attach callbacks to hooks
(setq interprogram-cut-function 'xsel-cut-function)
(setq interprogram-paste-function 'xsel-paste-function)
;; Idea from
;; http://shreevatsa.wordpress.com/2006/10/22/emacs-copypaste-and-x/
;; http://www.mail-archive.com/[email protected]/msg03577.html
))
La ragione per avere:
(require 'mouse)
(xterm-mouse-mode t)
(defun track-mouse (e))
(setq mouse-sel-mode t)
è quello di consentire la selezione del mouse sul testo tale che la regione testo è evidenziato come "Cx SPC "che segna la regione. Quindi posso usare "M-x w" per copiare e "C-x y" per incollare il testo all'interno di emacs e tra emacs e altre app.
Tutto sembra perfetto tranne che tutte le operazioni relative a X sono DAVVERO LENTAMENTE! La mia connessione al server remoto è fluida: la latenza di solito è inferiore a 100ms. Ma per uccidere una riga di testo usando "C-x k", ci vogliono ~ 5 secondi! Per incollarlo, ci vogliono altri 5 secondi!
Quando la copia/incolla è frequente a volte, questo diventa davvero fastidioso. Penso che questo sia legato alla messaggistica di X sever, ma non sono sicuro che ci sia un buon modo per risolvere questo problema.
Qualche idea? Grazie!
hai provato in esecuzione emacs a livello locale e utilizzando la modalità vagabondo – Squidly
questo è stato il primo tentativo che ho fatto -.!? ogni volta che li risparmio tutte le modifiche , si sta sincronizzando con il file sul server remoto, che non è fluido. Inoltre, preferisco non avviare emacs spesso (la macchina locale è un notebook). – galactica
Per curiosità, hai problemi con la riga (setq interprogram-paste ...) non in esecuzione? Devo eseguirli manualmente. –