bagaimana cara menghapus kutipan pintar di copy / paste?

13

Saya menyalin teks dari Google Chrome atau PDF, dan menempelkannya ke Emacs.

Teks aslinya memiliki kutipan cerdas. Saya tidak ingin kutipan pintar di output.

Apakah ada cara, baik di sisi Menyalin atau di sisi Tempel, untuk secara otomatis menghapus tanda kutip pintar?

pijar
sumber
Masalah yang sama terjadi ketika menyalin dari berbagai editor teks pada OS X ketika preferensi sistem "gunakan kutipan cerdas" diaktifkan. Secara khusus, saya menemukan ini ketika menyalin dari Evernote ke formulir web, yang kemudian menghapus semua tanda kutip dan tanda kutip "pintar" sepenuhnya. Jawaban yang diterima memberikan langkah perantara yang rapi untuk menyelesaikan ini.
TheBamf

Jawaban:

14

Bagaimana tentang:

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

Masukkan itu di Anda ~/.emacsdan Anda harus dapat menggunakan M-x replace-smart-quotesuntuk memperbaiki semua kutipan di buffer saat ini atau wilayah yang dipilih.

Untuk menghindari memulai ulang Emacs agar ~/.emacsperubahan diterapkan, pindahkan kursor Anda ke ujung defunwith M-C-edan evaluasi C-x C-e.

Perbarui kembali komentar:

Untuk secara otomatis melakukan ini ketika menarik (menempel), Anda dapat melakukan sesuatu seperti berikut:

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

Jika Anda ingin melakukannya saat menekan C-y, Anda dapat mengikatnya menggunakan:

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

Namun mungkin lebih baik menggunakan kunci lain (mungkin C-c y) karena ini akan menggunakan beberapa yankfungsi default .

Tom
sumber
Terima kasih. Tapi bagaimana dengan fungsi yang akan menghapus tanda kutip selama copy / paste? Seperti "Tempel dan Cocokkan Pemformatan" dengan menghilangkan tanda kutip cerdas.
incandescentman
2
Anda dapat melakukannya juga, saya telah menambahkan contoh. Jangan lupa untuk menerima jawabannya jika itu memecahkan masalah Anda.
Tom