Help us understand the problem. What is going on with this article?

Spacemacsでクリップボードにコピー&ペースト

More than 3 years have passed since last update.

背景

Emacsは独自バッファでヤンク(コピー)・ペーストを行っています。
これ自体は便利なのですが、Emacsの環境外とのやり取りについて考慮する必要があります。

Emacsでは強引にドラッグしてクリップボードにコピーするなどしていました(恥ずかしい)。

そして最近Spacemacsに移行したのですが、なんとそれが出来なくなっていました。
うまくドラッグできないし、何よりOSのコピーコマンドが無効になっています。

応急処置的にorg-modeからhtmlを出力・ブラウザに吐き出してコピペしていたのですが、
文字コードや改行コードの都合で求めるビューが出なかったりするので、
いよいよ重い腰を上げてクリップボード操作をEmacsから出来るようにしようと思い立ちました。

解決法

Spacemacsのissueで上がってました。
https://github.com/syl20bnr/spacemacs/issues/2222

そもそもspacemacsのカスタマイズを何処に記述すべきか分かっていなかったのですが、ここなのですね。

.spacemacs
(defun dotspacemacs/user-config ()
;;ここに設定を書く
)

Macの場合

以下を.spacemacs(defun dotspacemacs/user-config ()の下に追加。
spc o y / spc o pでコピー/ペーストができます。

.spacemacs
(defun copy-to-clipboard ()
  "Copies selection to x-clipboard."
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (shell-command-on-region (region-beginning) (region-end) "pbcopy")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(defun paste-from-clipboard ()
  "Pastes from x-clipboard."
  (interactive)
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (shell-command-to-string "pbpaste"))
    )
  )
(evil-leader/set-key "o y" 'copy-to-clipboard)
(evil-leader/set-key "o p" 'paste-from-clipboard)

Linuxの場合

はじめに、xselのインストールが必要です。

$ apt install xsel

続いて以下を.spacemacs(defun dotspacemacs/user-config ()の下に追加。

spc o y / spc o pでコピー/ペーストができます。

.spacemacs
(defun copy-to-clipboard ()
  "Copies selection to x-clipboard."
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (shell-command-on-region (region-beginning) (region-end) "xsel --clipboard --input")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(defun paste-from-clipboard ()
  "Pastes from x-clipboard."
  (interactive)
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (shell-command-to-string "xsel --clipboard --output"))
    )
  )
(evil-leader/set-key "o y" 'copy-to-clipboard)
(evil-leader/set-key "o p" 'paste-from-clipboard)

pbcopy / pbpaste がないのでクリップボードを操作するコマンド xsel --clipboard --input / xsel --clipboard --output を使用します。

コピペは SPC o y SPC o p

Spaceキー操作は病みつきになりますね。
それだけでもSpacemacsにして良かったです。

taumu
デジタル文字は美しく進化する。
https://bit.ly/2KlaW7R
dmmcom
総合エンタテイメントサイト「DMM.com」を運営。会員数は2,900万人を突破。動画配信、FX、英会話、ゲーム、太陽光発電、3Dプリンタなど40以上のサービスを展開。沖縄での水族館事業参入、ベルギーでのサッカークラブ経営など、様々な事業を手掛ける。また2018年より若手起業家の支援を強化、「DMM VENTURES」による出資や、M&Aなどを積極的に展開している。
https://dmm-corp.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした