Как вставить в Emacs из буфера обмена на OSX? - PullRequest
34 голосов
/ 03 апреля 2012

Это может быть чрезвычайно просто, но я играю с Emacs (22.1.1), и я не могу заставить его вставлять текст в буфер обмена, используя Control - Y .

Ответы [ 7 ]

40 голосов
/ 03 апреля 2012

Попробуйте использовать команду M-x clipboard-yank.Если вы хотите скопировать текст в буфер обмена, вам нужно M-x clipboard-kill-region.

. Это работает в Linux и Windows, я думаю, в Mac это тоже самое.

25 голосов
/ 04 апреля 2012

Если вы используете встроенный Emacs, то вы запускаете Emacs в терминале.«Буфер обмена» - это функция вашей оконной системы.Emacs в терминальном режиме (-nw) не имеет доступа к каким-либо специфическим API оконной системы.Это верно для большинства инструментов командной строки, предназначенных для работы в терминале.

Вам нужно обновить Emacs, как предлагали другие, и запустить в графическом режиме.При использовании Emacs 24 в Mac OS X желаемое поведение по умолчанию.

Если вы хотите сделать это в терминале, тогда этот хак заставит работать буфер обмена.

(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) 
18 голосов
/ 03 апреля 2012

Я обычно использую Shift + insert для вставки в буфер emacs, хотя я не знаю, есть ли на вашей клавиатуре эти клавиши.

1 голос
/ 07 июня 2013

См. http://blog.binchen.org/?p=589

Вот код:

(require 'simpleclip)
(defun copy-to-clipboard ()
  (interactive)
  (let ((thing (if (region-active-p)
                   (buffer-substring-no-properties (region-beginning) (region-end))
                 (thing-at-point 'symbol))))
    (simpleclip-set-contents thing)
    (message "thing => clipboard!")))

(defun paste-from-clipboard()
  "Paste string clipboard"
  (interactive)
  (insert (simpleclip-get-contents)))

Код использует simpleclip (https://github.com/rolandwalker/simpleclip)

Simpleclip требует установки какого-либо инструмента командной строки на Mac/ Linux / Cygwin, который. Таким образом, даже emacs без графической поддержки может также получить доступ к буферу обмена.

Это решение работает на любой версии Emacs, любой ОС. Оно также работает, когда ваш удаленный ssh, если сервер разрешает X вперед,полная команда: ssh -X -C -c blowfish-cbc,arcfour name@host.com)

0 голосов
/ 21 апреля 2014

ОС suse 12.2 - версия по умолчанию emacs 24.2-15.8.2 (x86_64) просто проигнорировала вставку из буфера обмена с помощью ctrl-y Наконец, проблема решена путем понижения до версии 23.3-15.5.1 (x86_64)

0 голосов
/ 08 марта 2013

Странно.

Я использую команду-V, и она работает каждый раз.

Когда вы сосредотачиваетесь на окне терминала, все, что вы вставляете с помощью команды-V, становится отдельными нажатиями клавиш, посылаемыми в терминал.

Я использую Mac OS X 10.5 (Leopard) и emacs 22.1.1.

0 голосов
/ 03 апреля 2012

Вкл Windows?У меня M-ins привязан к h-insert-x-selection, который я определил следующим образом:

(defun h-insert-x-selection () (interactive)
  (insert (x-selection 'CLIPBOARD))) 
(global-set-key [(meta insert)] 'h-insert-x-selection)

На XEmacs это отличается, где у меня

(global-set-key  [(shift insert)] 'x-insert-selection)
...