emacsがコマンドラインでクリップボード共有をサポートするようにする
10877 ワード
1、ネット上で広く伝わるemacsとシステム剪断板を共有する方法は.Emacsファイルに追加
(setq x-select-enable-clipboard t)
この方法はグラフィックス化emacsにのみ有効であり、emacs-nwコマンドでemacsを開くと、コマンドラインの下でXのクリップボードにアクセスする権限がないため、コマンドラインでは無効です(http://unix.stackexchange.com/questions/72605/emacs-copy-and-paste).
2、第1点だからこそ、ネット上にはもう一つの方法が同時に伝わっている.
;;start設定クリップボード共有(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-eofproc))))(setq intererfeinterfer(defun-copy-from-osx()))(setq program-cut-function'paste-to-osx)(setq interprogram-paste-function 'copy-from-osx) ;;endクリップボード共有の設定
この方法は確かに利用できますが、中のpbpasteとpbcopyコマンドはlinuxではなくmacで実行されます.だからlinuxの下で等価なコマンドを見つけて置き換えるべきです.
3、linuxでのクリッピングボード操作コマンド
2種類見つかりました:xclipとxsel
この2つのコマンドlinuxは持参せず、インストールする必要があります.2つのコマンドの具体的な使用方法については説明しませんが、とにかくnicekはlinuxの下での構成に適していることをネット上で見つけました(http://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/):
次はubuntuの下のクリップボード構造の推測です.
(setq x-select-enable-clipboard t)
この方法はグラフィックス化emacsにのみ有効であり、emacs-nwコマンドでemacsを開くと、コマンドラインの下でXのクリップボードにアクセスする権限がないため、コマンドラインでは無効です(http://unix.stackexchange.com/questions/72605/emacs-copy-and-paste).
2、第1点だからこそ、ネット上にはもう一つの方法が同時に伝わっている.
;;start設定クリップボード共有(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-eofproc))))(setq intererfeinterfer(defun-copy-from-osx()))(setq program-cut-function'paste-to-osx)(setq interprogram-paste-function 'copy-from-osx) ;;endクリップボード共有の設定
この方法は確かに利用できますが、中のpbpasteとpbcopyコマンドはlinuxではなくmacで実行されます.だからlinuxの下で等価なコマンドを見つけて置き換えるべきです.
3、linuxでのクリッピングボード操作コマンド
2種類見つかりました:xclipとxsel
この2つのコマンドlinuxは持参せず、インストールする必要があります.2つのコマンドの具体的な使用方法については説明しませんが、とにかくnicekはlinuxの下での構成に適していることをネット上で見つけました(http://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/):
;; http://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/
;; I prefer using the "clipboard" selection (the one the
;; typically is used by c-c/c-v) before the primary selection
;; (that uses mouse-select/middle-button-click)
(setq x-select-enable-clipboard t)
;; If emacs is run in a terminal, the clipboard- functions have no
;; effect. Instead, we use of xsel, see
;; http://www.vergenet.net/~conrad/software/xsel/ -- "a command-line
;; program for getting and setting the contents of the X selection"
(unless window-system
(when (getenv "DISPLAY")
;; Callback for when user cuts
(defun xsel-cut-function (text &optional push)
;; Insert text to temp-buffer, and "send" content to xsel stdin
(with-temp-buffer
(insert text)
;; I prefer using the "clipboard" selection (the one the
;; typically is used by c-c/c-v) before the primary selection
;; (that uses mouse-select/middle-button-click)
(call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
;; Call back for when user pastes
(defun xsel-paste-function()
;; Find out what is current selection by xsel. If it is different
;; from the top of the kill-ring (car kill-ring), then return
;; it. Else, nil is returned, so whatever is in the top of the
;; kill-ring will be used.
(let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
(unless (string= (car kill-ring) xsel-output)
xsel-output )))
;; Attach callbacks to hooks
(setq interprogram-cut-function 'xsel-cut-function)
(setq interprogram-paste-function 'xsel-paste-function)
;; Idea from
;; http://shreevatsa.wordpress.com/2006/10/22/emacs-copypaste-and-x/
;; http://www.mail-archive.com/[email protected]/msg03577.html
))
次はubuntuの下のクリップボード構造の推測です.