Domanda

Quando taglio (uccido) il testo in Emacs 22.1.1 (nella sua finestra su X, in KDE, su Kubuntu), non posso incollarlo (strapparlo) in nessun'altra applicazione.

È stato utile?

Soluzione 2

Inserisci quanto segue nel tuo .emacs file:

(setq x-select-enable-clipboard t)

Altri suggerimenti

Facciamo attenzione alle nostre definizioni qui

  • UN Copia emacs è il comando kill-ring-save (di solito legato a Mw).
  • UN copia del sistema è ciò che in genere ottieni premendo C-c (o scegliendo "Modifica->Copia" nella finestra dell'applicazione).
  • UN X copia evidenzia "fisicamente" il testo con il cursore del mouse.
  • UN Incolla Emacs è il comando yank (di solito legato a C-y).
  • UN pasta di sistema è ciò che in genere ottieni premendo CV (o scegliendo "Modifica-Incolla" nella finestra dell'applicazione).
  • UN X incolla sta premendo il "pulsante centrale del mouse" (simulato premendo insieme i pulsanti sinistro e destro del mouse).

Nel mio caso (su GNOME):

  • Sia Emacs che la copia di sistema di solito funzionano con X incolla.
  • La copia X di solito funziona con incolla di Emacs.
  • Per far sì che la copia di sistema funzioni con Incolla di Emacs e la copia di Emacs funzioni con Incolla di sistema, è necessario aggiungere (setq x-select-enable-clipboard t) alla tua .emacs.Oppure provaci

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

Penso che questo sia un comportamento Unix moderno piuttosto standard.

È anche importante notare (anche se dici che stai utilizzando Emacs in una finestra separata) che quando Emacs è in esecuzione in una console, è completamente separato dal sistema e dagli appunti di X:il taglia e incolla in questo caso è mediato dal terminale.Ad esempio, "Modifica->Incolla" nella finestra del terminale dovrebbe comportarsi esattamente come se avessi digitato il testo dagli appunti nel buffer di Emacs.

La difficoltà con il copia e incolla in Emacs è che vuoi che funzioni indipendentemente dal kill/yank interno, e vuoi che funzioni sia nel terminale che nella gui.Esistono soluzioni robuste sia per il terminale che per la GUI, ma non per entrambi.Dopo aver installato xsel (ad es. sudo apt-get install xsel), ecco cosa faccio per copiare e incollare per combinarli:

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

Inserisco questo nel mio .emacs:

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

Successivamente non ho praticamente problemi a tagliare e incollare avanti e indietro da qualsiasi cosa in Emacs a qualsiasi altra applicazione X11 o Gnome.

Bonus:per far sì che queste cose accadano in Emacs senza dover ricaricare l'intero .emacs, esegui C-x C-e con il cursore subito dopo la parentesi chiusa di ciascuna di quelle espressioni nel buffer .emacs.

Buona fortuna!

Presumo che per emacs intendi Emacs sotto X (cioè non all'interno di una finestra di terminale).

Ci sono due modi:

  1. (Si applica all'unico sistema operativo UNIX) Evidenzia il testo desiderato con il mouse (questo lo copia negli appunti X) e quindi fai clic in centro per incollare.
  2. Evidenzia il testo desiderato e quindi "MX Appunti-Kill-Ring-Save" (Nota È possibile vincolarlo a una chiave più semplice).Quindi "modifica-> incolla" nella tua app preferita.

Operazioni negli Appunti disponibili:

  • Appunti-pappelle-ring-save-Copia Selezione da EMACS agli Appunti
  • Appunti-regioni-regione-Taglia la selezione da EMACS agli Appunti
  • Appuntatori-giallo-Incolla dagli appunti a Emacs

C'è un articolo di EmacsWiki che spiega alcuni problemi con il copia e incolla in X e come configurarlo affinché funzioni.

Funziona con M-w su Mac OSX.Basta aggiungere al tuo .emacs file.

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

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

Il codice seguente, ispirato alla risposta di @RussellStewart sopra, aggiunge il supporto per x-PRIMARY e x-SECONDARY, sostituisce region-active-p con use-region-p per coprire il caso di una regione vuota, non ritorna silenziosamente se xsel non è stato installato (restituisce un messaggio di errore) e include una funzione "taglia" (emacs C-y, windows C-x).

(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, quale piattaforma e quale versione di emacs stai utilizzando?Con GNU Emacs 22.1.1 su Windows Vista, per me funziona perfettamente.

Se, per caso, lo stai facendo da Windows a Linux tramite un visualizzatore RealVNC, assicurati di eseguire prima "vncconfig -iconic" sulla macchina Linux.....

Uso sempre la pasta veloce: trascina la selezione in emacs, premi il pulsante centrale del mouse nella finestra di destinazione.

(Dal riferimento a Kate, suppongo che tu sia su Linux o simili e probabilmente usi emacs in X in un modo o nell'altro.)

Potresti voler specificare quale piattaforma stai utilizzando.È su Linux, Unix, Macosx, Windows, MS-DOS?

Credo che per Windows dovrebbe funzionare.Per MacOSX verrà aggiunto agli appunti di x-windows, che non è la stessa cosa degli appunti di macosx.Per Linux, dipende dal tuo gusto come gestore di finestre, ma credo che x-windows lo gestisca in modo carino sulla maggior parte di essi.

Quindi, per favore specifica.

Quello che faccio è utilizzare un buon strumento terminale (PuTTY su Windows, Konsole o Terminal su Linux) che abbia funzionalità di copia integrate.

In PuTTY, evidenzi il testo desiderato con il mouse e poi lo incolli altrove.Facendo clic con il pulsante destro del mouse in una finestra PuTTY si incolla il contenuto del buffer di copia/incolla di Windows.

In Konsole o Terminale su Linux, evidenzia ciò che desideri, quindi premi Maiusc+Ctrl+C per copiare e Maiusc+Ctrl+V per incollare.

Nella compilazione win32 di emacs, lo strappo del testo lo inserisce nel buffer copia/incolla.La maggior parte delle volte.

Su Mac OS X, le scorciatoie dei tasti Apple funzionano bene, perché Terminal le intrappola.

Non esiste un modo diretto per farlo dalla riga di comando perché la shell non mantiene un buffer di copia/incolla per ciascuna applicazione.bash fa mantiene un buffer di copia/incolla per se stesso e, per impostazione predefinita, le scorciatoie ^k/^y di emacs funzionano.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top