emacsを設定して、テキストをMac OS Xクリップボードに切り取り、コピーします


16

を構成してemacs、emacs(デフォルトのターミナルバージョン)からテキストをコピー/カットし、別の場所(X Windowプログラム)に貼り付けることができますか?


Nitpick:「デフォルトのターミナルバージョン」と言いますが、Emacsのデフォルトの機能モードは、テキストターミナルではなくGUIを使用することです。たぶん/usr/bin/emacs、AppleがOSXにバンドルしており、テキスト端末に任意に制限されている古代の実行可能ファイルについて言及しているのでしょうか?
ステファン

回答:


4

現在の領域をOS Xクリップボードにコピーするには、次を使用できます。

(shell-command-on-region (region-beginning) (region-end) "pbcopy")

OS XペーストバッファーをEmacsキルリングにコピーする逆の方法は推奨されません。キルリングとクリップボードは非常に異なる構造であり、クリップボードをキルリングに押し込むことの正確な答えはありません。それでも、pbpaste手動で実行して現在のクリップボードの内容を取得できます。


これはうまくいきませんでした。ただし、このEmacs投稿でマークされたソリューションは機能します。
ガルダーザマレーニョ

8

これを追加~/.emacs

(defun pbcopy ()
  (interactive)
  (call-process-region (point) (mark) "pbcopy")
  (setq deactivate-mark t))

(defun pbpaste ()
  (interactive)
  (call-process-region (point) (if mark-active (mark) (point)) "pbpaste" t t))

(defun pbcut ()
  (interactive)
  (pbcopy)
  (delete-region (region-beginning) (region-end)))

(global-set-key (kbd "C-c c") 'pbcopy)
(global-set-key (kbd "C-c v") 'pbpaste)
(global-set-key (kbd "C-c x") 'pbcut)

iTerm 2でEmacsを使用する場合は、設定でキーの組み合わせを再マップすることもできます。

次に、次のようなものを追加します~/.emacs

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)

それでも最良の答え。ありがとう!itermに注意してください。これらの「アクション」を作成するには、「エスケープコードの送信」を選択し、先頭の「^ [」を省略します。(「テキストを送信」アクションタイプでは機能しませんでした)
ジェイ

3

以下は、ダニエル・ネルソンによるEmacsのキルリングにOS Xクリップボードを統合するソリューションです:https : //github.com/wesen/emacs/blob/master/pbcopy.el

著者のコメント:

Mac OSXターミナルからEmacsを実行するときに、キルリングがクリップボードと対話できるようにします(キルリング機能を完全に失うことはありません)。私がしたすべては、変更したxclip.elで動作するようにpbcopypbpaste。xclip.elの著者であるLeo Shidai Liuに心から感謝します。


1

以下はちょうど動作します、ここからそれを得ました:)

(defun copy-from-osx ()
  (shell-command-to-string "pbpaste"))

(defun paste-to-osx (text &optional push)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx))

元の投稿へのリンクを追加できますか?
ビンセント

0

OS Xに含まれているemacsのバージョンは、この機能を提供するには古すぎます。

幸いなことに、Emacsをクリップボードに統合されているバージョンに更新できます:http : //emacsformacosx.com

更新後に、Ctrl+ Yを使用してemacsに貼り付けると思います。


ああ-言い忘れました-そのサイトからダウンロードするemacsのバージョンはグラフィカルです(つまり、ターミナルで実行されません)。ターミナル内のアプリケーションがハックなしでクリップボードにアクセスすることは不可能です。これはもう見つかりません。:/
ファイズサレム

2
pbcopyそしてpbpasteまだ存在してハックではありません。

それは可能ですが、OPはキーボードコマンドを使用してコピーと貼り付けを行うことを想定していました。私が言いたいのは、ターミナルアプリケーションは、ハッキングなしでOS Xのクリップボードと一緒にキーボードショートカットを使用してコピーアンドペーストできないことです。
ファイズサレム

「端末アプリケーションは、キーボードショートカットを使用して、ハッキングなしでOS Xクリップボードと一緒にコピーアンドペーストすることはできません。」両方とも端末アプリケーションであるためpbcopy、これは明らかに正しくありませんpbpaste。他の端末アプリは、何をするか、または単にそれらを直接呼び出すことができます。

私が探していたのはpbcopy、Emacsのカット&コピーに夢中です。出来ますか?
シンタグマ

0

私が見つかりました。この記事は本当に便利(2つの関数を定義し、あなたの〜/の.emacsファイルにそれらへのショートカットを割り当てます)。

これらの行を.emacsファイルに追加すると、新しいシェルセッション(タブ/ウィンドウ)を開くまで、これらのショートカットにアクセスできなくなります。変更を適用します。


0

テキスト端末でEmacsを実行しているときに、GNU ELPAからインストールできるパッケージがxclip-mode提供するxclip(つまりを介してM-x package-list-packages RET)を有効にすることで、クリップボードとの対話を透過的に取得できます。

同様の質問と回答については、https://emacs.stackexchange.com/questions/10900/も参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.