Как я могу вставить выбранную область вне 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.