12

Я копирую текст из Google Chrome или PDF-файлов и вставляю их в Emacs.

Оригинальный текст имеет умные цитаты. Я не хочу умных цитат в выводе.

Есть ли способ, либо на стороне копирования, либо на стороне вставки, автоматически вырезать умные цитаты?

1 ответ1

13

Как насчет:

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

Обновить комментарий:

Чтобы автоматически сделать это при рывке (вставке), вы можете сделать что-то вроде следующего:

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

Если вы хотите сделать это, когда вы нажмете Cy, вы можете связать его, используя:

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

Однако, возможно, лучше использовать другой ключ (возможно, Cc y), так как он будет использовать некоторые функции по умолчанию для yank .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .