Ich habe eine harte Zeit, diese Emacs-nw effektiv unter dem Terminal-Modus (Emacs-Nw) zu arbeiten. Einige Setup-Informationen: Der funktionierende Server ist über SSH verbunden, und Emacs läuft auf dem Server. Normalerweise verbinde ich mich mit SSH und "emacs -nw", um an meinen Dateien zu arbeiten.Emacs Terminal-Modus: wie man effizient kopieren und einfügen
Die Emacs-Config wird aufgenommen von: 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
))
Der Grund zu haben:
(require 'mouse)
(xterm-mouse-mode t)
(defun track-mouse (e))
(setq mouse-sel-mode t)
ist Mausauswahl über den Text zu ermöglichen, so dass der Textbereich nur als „Cx hervorgehoben SPC "Kennzeichnung der Region. Dann kann ich "M-x w" zum Kopieren und "C-x y" verwenden, um Text in Emacs und zwischen Emacs und anderen Apps einzufügen.
Alles sieht perfekt aus, außer dass alle mit X verbundenen Operationen wirklich LANGSAM sind! Meine Verbindung zum Remote-Server ist flüssig - die Latenz liegt normalerweise unter 100ms. Aber um eine Textzeile mit "C-x k" zu löschen, dauert es ~ 5 Sekunden! Um es einzufügen, dauert es weitere 5 Sekunden!
Wenn Copy/Paste manchmal häufig ist, wird dies wirklich ärgerlich. Ich denke, das hängt mit dem X-Server-Messaging zusammen, aber ich bin mir nicht sicher, ob es einen guten Weg gibt, das zu beheben.
Irgendwelche Ideen? Danke!
Haben Sie versucht, emacs lokal und mit tramp-Modus ausgeführt werden – Squidly
dass der erste Versuch war ich gemacht -.!? jedes Mal, wenn ich irgendwelche Änderungen speichern Es synchronisiert sich mit der Datei auf dem Remote-Server, die nicht glatt ist. Außerdem möchte ich Emacs nicht oft starten (lokaler Computer ist ein Notebook). – galactica
Haben Sie aus Neugierde Probleme mit der (setq interprogram-paste ...) Zeile, die nicht läuft? Ich muss sie manuell ausführen. –