Frage

Wenn ich schneide (kill) Text in Emacs 22.1.1 (in einem eigenen Fenster auf X, in KDE, auf Kubuntu), ich nicht (yank) einfügen kann es in einer anderen Anwendung.

War es hilfreich?

Lösung 2

Bitte geben Sie den folgenden in Ihre .emacs-Datei:

(setq x-select-enable-clipboard t)

Andere Tipps

Lassen Sie sich mit unseren Definitionen vorsichtig sein, hier

  • Ein Emacs kopieren ist der Befehl kill-ring-save (in der Regel gebunden M-w ).
  • A Systemkopie ist, was normalerweise von Ihnen erhalten Drücken von C-c (oder "Bearbeiten-> Kopieren" in einem Anwendungsfenster wählen).
  • Ein X Kopie ist "physisch" Text markieren mit der Maus-Cursor.
  • An Emacs Einfügen ist der Befehl yank (normalerweise gebunden C-y ).
  • A System Paste ist, was normalerweise von Ihnen erhalten Drücken von C-v (oder "Edit-Paste" in einem Anwendungsfenster wählen).
  • Ein X Paste das Drücken der "mittlere Maustaste" (simuliert durch die linke und rechte Maustaste zusammen drücken).

In meinem Fall (auf GNOME):

  • Sowohl Emacs und Systemkopie in der Regel mit X Paste arbeiten.
  • X Kopie in der Regel arbeitet mit Emacs Paste.
  • Um die Systemkopie Arbeit mit Emacs Paste und Emacs kopiert Arbeit mit dem System Paste zu machen, müssen Sie (setq x-select-enable-clipboard t) zu Ihrem .emacs hinzuzufügen. Oder versuchen

    META-X set-variable RET x-select-enable-clipboard RET t
    

Ich denke, das ist ziemlich Standard modernes Verhalten Unix ist.

Es ist auch wichtig zu beachten, (obwohl Sie sagen, Sie verwenden Emacs in einem separaten Fenster), dass, wenn Emacs in einer Konsole ausgeführt wird, ist es vollständig aus dem System ist geschieden und X notiz: Ausschneiden und Einfügen in diesem Fall vermittelt wird durch das Endgerät. Zum Beispiel: „Bearbeiten-> Einfügen“ in Ihren Terminal-Fenstern sollten genau so, als ob Sie den Text aus der Zwischenablage in den Emacs-Puffer eingegeben.

Die Schwierigkeit mit Kopie und in Emacs einfügen, ist, dass Sie es wollen aus der internen Kill / Yank, selbständig arbeiten, und Sie wollen es beide in der Klemme und die GUI zu arbeiten. Es gibt bestehende robuste Lösungen für entweder Terminal oder gui, aber nicht beide. Nach der Installation von xsel (z sudo apt-get install xsel), hier ist das, was ich für die Kopie tun, und fügen Sie sie kombinieren:

(defun copy-to-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(defun paste-from-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (shell-command-to-string "xsel -o -b"))
    )
  )

(global-set-key [f8] 'copy-to-clipboard)
(global-set-key [f9] 'paste-from-clipboard)

Ich bleibe in meinem .emacs:

(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)

Ich habe anschließend im Grunde keine Probleme Schneiden und hin und her von allem, was in Emacs zu jeder anderen X11 oder Gnome-Anwendung einfügen.

Bonus: diese Dinge zu bekommen in Emacs passieren, ohne Ihre ganze .emacs neu laden zu müssen, tun C-x C-e mit dem Cursor direkt nach dem Ende paren jedes dieser Ausdrücke in dem .emacs Puffer

.

Viel Glück!

Ich gehe davon aus von Emacs Sie bedeutet Emacs unter X (also nicht in einem Terminal-Fenster).

Es gibt zwei Möglichkeiten:

  1. (Gilt für Unix-Betriebssysteme nur) Markieren Sie den gewünschten Text mit Ihrem Maus (dies kopiert sie in die X Zwischenablage) und dann Mitte Klick auf Paste.
  2. Markieren Sie den gewünschten Text ein und dann "M-x Zwischenablage-kill-Ring-save" (Hinweis: Sie können diese binden an einem einfacheren Schlüssel). Dann einfach „Bearbeiten-> Einfügen“ in Ihr Lieblings-App.

Zwischenablage-Operationen zur Verfügung:

  • Zwischenablage-kill-Ring-speichern - Kopie Auswahl von Emacs in die Zwischenablage kopieren
  • Zwischenablage-kill-Region - Schnitt Auswahl von Emacs in die Zwischenablage kopieren
  • Zwischenablage-yank - Paste aus Zwischenablage Emacs

Es gibt einen EmacsWiki Artikel , das einige Probleme mit Copy & Einfügen unter X erklärt und wie zu konfigurieren, damit arbeiten.

Das funktioniert mit M-w auf Mac OSX. Fügen Sie einfach auf Ihren .emacs Datei.

(defun copy-from-osx ()
   (shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
   (let ((process-connection-type nil))
      (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
         (process-send-string proc text)
         (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

https://gist.github.com/the-kenny/267162

Der folgende Code, inspiriert von @ RussellStewart Antwort oben, fügt Unterstützung für x-PRIMARY und x-NEBEN, ersetzt region-active-p mit use-region-p den Fall einer leeren Region zu decken, nicht stillschweigend zurückkehrt, wenn xsel hat (kehrt nicht installiert wird eine Fehlermeldung) und enthält eine Funktion "Ausschneiden" (emacs Cy, Fenster Cx).

(defun my-copy-to-xclipboard(arg)
  (interactive "P")
  (cond
    ((not (use-region-p))
      (message "Nothing to yank to X-clipboard"))
    ((and (not (display-graphic-p))
         (/= 0 (shell-command-on-region
                 (region-beginning) (region-end) "xsel -i -b")))
      (error "Is program `xsel' installed?"))
    (t
      (when (display-graphic-p)
        (call-interactively 'clipboard-kill-ring-save))
      (message "Yanked region to X-clipboard")
      (when arg
        (kill-region  (region-beginning) (region-end)))
      (deactivate-mark))))

(defun my-cut-to-xclipboard()
  (interactive)
  (my-copy-to-xclipboard t))

(defun my-paste-from-xclipboard()
  "Uses shell command `xsel -o' to paste from x-clipboard. With
one prefix arg, pastes from X-PRIMARY, and with two prefix args,
pastes from X-SECONDARY."
  (interactive)
  (if (display-graphic-p)
    (clipboard-yank)
   (let*
     ((opt (prefix-numeric-value current-prefix-arg))
      (opt (cond
       ((=  1 opt) "b")
       ((=  4 opt) "p")
       ((= 16 opt) "s"))))
    (insert (shell-command-to-string (concat "xsel -o -" opt))))))

(global-set-key (kbd "C-c C-w") 'my-cut-to-xclipboard)
(global-set-key (kbd "C-c M-w") 'my-copy-to-xclipboard)
(global-set-key (kbd "C-c C-y") 'my-paste-from-xclipboard)

Hmm, welche Plattform und welche Version von Emacs verwenden Sie? Mit GNU Emacs 22.1.1 unter Windows Vista, es funktioniert gut für mich.

Wenn durch Zufall, Sie tun dies aus den Fenstern über einen RealVNC-Viewer auf Linux, stellen Sie sicher, dass Sie laufen „vncconfig -iconic“ auf der Linux-Box zuerst .....

Ich benutze immer schnelle Einfügen - Drag Auswahl in Emacs, die mittlere Maustaste in Zielfenster treffen

.

(Aus dem Verweis auf kate, ich nehme es bist du auf Linux oder ähnlich und wahrscheinlich Emacs in X eine oder andere Weise verwenden.)

Vielleicht möchten Sie angeben, welche Plattform Sie verwenden. Ist es auf Linux, Unix, Mac OS X, Windows, MS-DOS?

Ich glaube, dass für Fenster sollte es funktionieren. Für MacOSX wird es zur x-Windows-Zwischenablage hinzugefügt bekommen, was nicht dasselbe wie die macosx Zwischenablage ist. Für Linux, es hängt von Ihrem Geschmack von Window-Manager, aber ich glaube, dass x-Fenster, die es auf eine nette Art Griffe an den meisten von ihnen.

Also, bitte angeben.

Was ich tue, ist ein gutes Terminal-Tool (PuTTY auf Windows, Konsole oder Terminal auf Linux) zu verwenden, die Kopiermöglichkeiten hat eingebaute.

In PuTTY, markieren Sie den Text, den Sie mit der Maus will und es dann an anderer Stelle einfügen. Ein Rechtsklick in einem PuTTY Fenster fügt den Inhalt der Windows-Copy / Paste-Puffer.

In Konsole oder Terminal auf Linux, markieren Sie, was Sie dann die Umschalttaste drücken Sie + Strg + C zum Kopieren und Umschalt + Strg + V für Paste.

In der win32 Kompilierung von Emacs, zerrte Text, um ihn auf dem Kopieren / Einfügen Puffer setzen nicht .. die meiste Zeit.

Unter Mac OS X, das Apple-Taste chortcuts funktionieren, weil Klemme sie einfängt.

Es gibt keinen direkten Weg, um es auf der Kommandozeile zu tun, weil die Shell keine Kopie / Paste-Puffer für jede Anwendung nicht erhalten. bash hat pflegen eine Copy / Paste-Puffer für sich selbst, und in der Standardeinstellung Emacs ^ k / ^ y Verknüpfungen arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top