come rimuovere le virgolette intelligenti in copia / incolla?


13

Sto copiando il testo da Google Chrome o PDF e incollandolo in Emacs.

Il testo originale ha virgolette intelligenti. Non voglio virgolette intelligenti nell'output.

Esiste un modo, sul lato Copia o sul lato Incolla, di eliminare automaticamente le virgolette?



Lo stesso problema si verifica quando si copia da vari editor di testo su OS X quando è abilitata la preferenza di sistema "usa virgolette intelligenti". In particolare, l'ho riscontrato durante la copia da Evernote a un modulo Web, che ha quindi eliminato completamente tutte le virgolette e gli apostrofi "intelligenti". La risposta accettata ha fornito un preciso passo intermedio per risolvere questo problema.
TheBamf,

Risposte:


14

Che ne dite di:

(defun replace-smart-quotes (beg end)
  "Replace 'smart quotes' in buffer or region with ascii quotes."
  (interactive "r")
  (format-replace-strings '(("\x201C" . "\"")
                            ("\x201D" . "\"")
                            ("\x2018" . "'")
                            ("\x2019" . "'"))
                          nil beg end))

Inseriscilo nel tuo ~/.emacse dovresti essere in grado di utilizzare M-x replace-smart-quotesper correggere tutte le virgolette nel buffer corrente o nell'area selezionata.

Per evitare il riavvio di Emacs per ~/.emacsrendere effettive le modifiche, spostare il cursore alla fine del defuncon M-C-ee valutarlo C-x C-e.

Aggiorna commento:

Per fare questo automaticamente quando si strappa (si incolla), è possibile fare qualcosa del tipo:

(defun yank-and-replace-smart-quotes ()
  "Yank (paste) and replace smart quotes from the source with ascii quotes."
  (interactive)
  (yank)
  (replace-smart-quotes (mark) (point)))

Se vuoi farlo quando colpisci C-y, puoi vincolarlo usando:

(global-set-key (kbd "C-y") 'yank-and-replace-smart-quotes)

Probabilmente è un'idea migliore usare un'altra chiave (forse C-c y) in quanto utilizzerà alcune delle yankfunzionalità predefinite .


Grazie. Ma che dire di una funzione che eliminerà le virgolette durante il copia / incolla? Un po 'come "Incolla e abbina la formattazione" con l'eliminazione delle virgolette intelligenti.
incandescentman,

2
Puoi farlo anche tu, ho aggiunto un esempio. Non dimenticare di accettare la risposta se risolve il tuo problema.
Tom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.