Как я могу вставить выбранную область вне emacs?
Я использую Mac OS и emacs -nw
(режим терминала).
Я не знаю, как можно вставить вещи (которые были реализованы M-w в emacs -nw) вне emacs.
Я знаю, что emacs -ns
может это сделать.
Поиск в Интернете и команда C-h b, я узнаю этот метод, но это не сработало.
(setq x-select-enable-clipboard t)
(setq interprogram-cut-function 'x-select-text)
Я не очень разбираюсь в аргументе функции interprogram-cut.
Откуда появляется текст x-select-text и что это значит?
Ответы
Ответ 1
x-select-text
используется, только если вы используете Emacs в графическом интерфейсе. (Emacs сопоставляет API-интерфейс Mac/Windows для картона/буфера обмена для модели X11, отсюда и название). Вы всегда можете использовать C-h f
, чтобы узнать больше о такой функции, как эта, и просмотреть ее определение, если оно написано в elisp.
На Mac нет понятия выбора CLIPBOARD
по сравнению с PRIMARY
, поэтому нет смысла устанавливать x-select-enable-clipboard
.
Весь смысл работы emacs -nw
заключается в том, что он не взаимодействует с системой окон. Зачем использовать Emacs в терминале, когда есть много графических Emacsen, которые очень хорошо работают на Mac?
Тем не менее, если вы действительно хотели подключить терминал Emacs к картону Mac, вы можете сделать что-то вроде этого:
(setq interprogram-cut-function
(lambda (text &optional push)
(let* ((process-connection-type nil)
(pbproxy (start-process "pbcopy" "pbcopy" "/usr/bin/pbcopy")))
(process-send-string pbproxy text)
(process-send-eof pbproxy))))
Ответ 2
Если вы используете Ubuntu 12.04 или Fedora 21, есть несколько вариантов, чтобы сделать эту работу.
Сначала вам нужно установить xclip
sudo apt-get install xclip
Первый вариант: для Emacs 24
Если вы используете emacs24, вы можете установить его из списка пакетов
M-x package-list-packages
Выбрать
xclip //mine was version 1.3
В вашем .emacs добавьте:
(xclip-mode 1)
Второй вариант. Для emacs до версии 24
Установите xclip.el:
Интеграция Emacs с буфером X11 в Linux
Третий вариант. Используя код @Nicholas Riley, показанный в ответе
Чтобы использовать код в ответе, вам нужно
pbcopy/pbpaste в Ubuntu (буфер обмена командной строки)
Ответ 3
Если вы хотите поместить содержимое области emacs в буфер обмена только иногда, в отличие от каждого раза, когда вы делаете emacs yank (что заставляет содержимое буфера обмена переписываться все время), вы должны проверить это ответьте на соответствующий вопрос:
fooobar.com/info/58418/...
Я обнаружил, что он решил мою проблему намного лучше, чем установка режима xclip.