如何删除复制/粘贴中的智能引号?

Modified on: Tue, 05 Mar 2019 01:20:02 +0800

我正在从Google Chrome或PDF中复制文本,并粘贴到Emacs中。

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

有没有办法在复制方面或在Pasting方面自动删除智能引号?

最佳答案

怎么样:

(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中,您应该可以使用 Mx replace-smart-quotes 来修复当前缓冲区或选定区域中的所有引号。

为避免重新启动Emacs以使~/.emacs更改生效,请将光标移至defun的末尾,并使用 MCe 并评估它 Cx Ce

更新重新评论:

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

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

然而,使用另一个键(可能是 Cc y )可能更好一点,因为这将使用一些默认的yank功能。

作者:,Tom

相关问答

添加新评论