emacs终端模式下,如何拷贝浏览器网页内容到终端,或者从终端emacs中拷贝内容到浏览器网页中。
linux 下用 xsel, 示例(来自陈斌的配置
(defun my-pclip (str-val)
(if simpleclip-works (simpleclip-set-contents str-val)
(cond
((eq system-type 'darwin)
(with-temp-buffer
(insert str-val)
(call-process-region (point-min) (point-max) "/usr/bin/pbcopy")))
((eq system-type 'cygwin)
(with-temp-buffer
(insert str-val)
(call-process-region (point-min) (point-max) "putclip")))
((memq system-type '(gnu gnu/linux gnu/kfreebsd))
(with-temp-buffer
(insert str-val)
(call-process-region (point-min) (point-max) "xsel" nil nil nil "--clipboard" "--input"))))))
;; }}
1 个赞
mac 下我是这样做的,直接从源头上修改, 不用额外绑定,linux 下 应该也有相应的命令 模仿着做
;; 如果在mac 终端下使用emacs ,则使用pbpaste从clipboard 获取内容
(defadvice gui-backend-get-selection (around get-clip-from-terminal-on-osx activate)
ad-do-it
(when (and (equal system-type 'darwin)
(not (display-graphic-p))
(not (window-system))
(equal (ad-get-arg 0) 'CLIPBOARD))
(let ((default-directory "~/"))
(setq ad-return-value (shell-command-to-string "pbpaste")))))
;; "+yy 设置内容到系统clipboard
;; 如果在mac 终端下使用emacs ,则使用pbpaste从clipboard 获取内容
(defadvice gui-backend-set-selection (around set-clip-from-terminal-on-osx activate)
ad-do-it
;; (message "%s %s" (ad-get-arg 0) (ad-get-arg 1))
(when (and (equal system-type 'darwin)
(not (display-graphic-p))
(not (window-system))
(equal (ad-get-arg 0) 'CLIPBOARD))
(let ((process-connection-type nil) ; ; use pipe
(default-directory "~/"))
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
(process-send-string proc (ad-get-arg 1))
(process-send-eof proc)))))
更多内容见,
我用evil-mode 的时候 希望kill-ring 与系统剪切版分开, 即 只有我明确要求复制到剪切板的时候 才修改剪切板的内容
4 个赞