Ответы:
Чтобы скопировать текущий регион в буфер обмена OS X, вы можете использовать
(shell-command-on-region (region-beginning) (region-end) "pbcopy")
Обратное, копирование буфера вставки OS X в список уничтожений Emacs, не рекомендуется. Кольца уничтожения и буферы обмена - это очень разные структуры, и нет хорошего ответа на вопрос, что именно нужно делать, помещая буфер обмена в список уничтожений. Тем не менее, вы можете запустить pbpaste
вручную, чтобы получить текущее содержимое буфера обмена.
Добавьте это к ~/.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)
Если вы используете Emacs в iTerm 2, вы также можете переназначить комбинации клавиш в настройках:
Затем добавьте что-то вроде этого ~/.emacs
:
(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)
Вот решение по интеграции буфера обмена OS X в Emacs, разработанное Дэниелом Нельсоном: https://github.com/wesen/emacs/blob/master/pbcopy.el
Комментарии автора:
Позволяет kill-ring взаимодействовать с буфером обмена при запуске Emacs из терминала Mac OSX (без потери полной функциональности kill-ring). Все, что я сделал, это изменил
xclip.el
для работы сpbcopy
иpbpaste
. Огромное спасибо Лео Шидай Лю, автору xclip.el.
Следующее просто работает, получил его отсюда :)
(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))
Версия emacs, включенная в OS X, слишком старая, чтобы обеспечить эту функциональность.
К счастью, вы можете обновить emacs до версии, которая интегрирована с вашим буфером обмена здесь: http://emacsformacosx.com
Я считаю, что вы используете Ctrl+ Yдля вставки в Emacs, после обновления.
pbcopy
и pbpaste
оба терминальные приложения; любое другое приложение терминала может делать то, что они делают, или просто вызывать их напрямую.
pbcopy
к Emacs Cut & Copy. Является ли это возможным?
Я нашел этот пост действительно полезным (определение 2 функций и назначение им ярлыков в вашем файле ~ / .emacs).
После добавления этих строк в ваш файл .emacs у вас не будет доступа к этим ярлыкам, пока вы не откроете новый сеанс оболочки (вкладка / окно). Пусть изменения будут применены.
Вы можете прозрачно получить такое взаимодействие с буфером обмена при запуске Emacs в текстовом терминале, включив xclip-mode
предоставляемый xclip
пакетом, который вы можете установить из GNU ELPA (то есть через M-x package-list-packages RET
).
Смотрите также /emacs/10900/ для похожих вопросов и ответов.
/usr/bin/emacs
исполняемый файл, который Apple поставляет вместе с OSX и который произвольно ограничен текстовым терминалом?