如何删除复制/粘贴中的智能报价?


13

我要从Google Chrome或PDF复制文本,然后粘贴到Emacs中。

原始文本带有引号。我不想在输出中使用智能引号。

在“复制”端还是“粘贴”端,有没有办法自动剔除智能报价?



当启用“使用智能引号”系统首选项时,从OS X上的各种文本编辑器进行复制时,会发生相同的问题。具体来说,我在从Evernote复制到Web表单时遇到了此问题,然后将其完全剥离了所有“智能”引号和撇号。公认的答案为解决此问题提供了一个简洁的中间步骤。
TheBamf

Answers:


14

怎么样:

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

将其放入您的目录中~/.emacs,您应该可以使用它M-x replace-smart-quotes来修复当前缓冲区或选定区域中的所有报价。

为避免重新启动Emacs以使~/.emacs更改生效,请将光标移到defunwith 的末尾M-C-e并对其求值C-x C-e

更新评论:

要在粘贴(粘贴)时自动执行此操作,可以执行以下操作:

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

如果您想在点击时执行此操作C-y,则可以使用以下方法进行绑定:

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

但是,最好使用另一个键(也许是C-c y),因为这将使用一些默认yank功能。


谢谢。但是在复制/粘贴过程中会删除引号的函数呢?有点像“粘贴和匹配格式”,其中包含智能引号。
白炽灯

2
您也可以这样做,我添加了一个示例。如果解决了您的问题,别忘了接受答案。
汤姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.