コピー/貼り付けでスマート引用符を削除する方法は?


13

Google ChromeまたはPDFからテキストをコピーして、Emacsに貼り付けています。

元のテキストにはスマート引用符があります。出力にスマート引用符が必要ない。

コピー側でも貼り付け側でも、スマート引用符を自動的に削除する方法はありますか?



「スマートクォートを使用する」システム設定が有効になっている場合、OS Xのさまざまなテキストエディターからコピーするときに同じ問題が発生します。具体的には、EvernoteからWebフォームにコピーするときにこの問題が発生し、すべての「スマート」引用符とアポストロフィが完全に削除されました。受け入れられた答えは、これを解決するためのきちんとした中間ステップを提供しました。
-TheBamf

回答:


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
あなたもそれを行うことができます、私は例を追加しました。問題を解決する場合は、回答を受け入れることを忘れないでください。
トム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.