2014-02-17 3 views
1

У меня есть код в одном буфере в виртуальном терминале экрана, который я хочу передать в другой буфер в виртуальном терминале. Как мне это сделать? Я пробовал убить код, но похоже, что каждый виртуальный терминал имеет свое собственное кольцо убийства, а код, который я убил, не был завален другим виртуальным терминалом.Как убить/выдернуть код между буферами emacs, используя экран

ответ

1

кажется, что буфер переменные, упомянутые @Ehvince (которые полезны BTW при работе с графическим интерфейсом Emacs) не являются полезными в терминалах. Обходной путь описан here. Я добавляю код в приведенную ниже статью, чтобы избежать мертвых ссылок.

(unless window-system 
     (when (getenv "DISPLAY") 
     ;; Callback for when user cuts 
     (defun xsel-cut-function (text &optional push) 
      ;; Insert text to temp-buffer, and "send" content to xsel stdin 
      (with-temp-buffer 
      (insert text) 
      ;; I prefer using the "clipboard" selection (the one the 
      ;; typically is used by c-c/c-v) before the primary selection 
      ;; (that uses mouse-select/middle-button-click) 
      (call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input"))) 
     ;; Call back for when user pastes 
     (defun xsel-paste-function() 
      ;; Find out what is current selection by xsel. If it is different 
      ;; from the top of the kill-ring (car kill-ring), then return 
      ;; it. Else, nil is returned, so whatever is in the top of the 
      ;; kill-ring will be used. 
      (let ((xsel-output (shell-command-to-string "xsel --clipboard --output"))) 
      (unless (string= (car kill-ring) xsel-output) 
       xsel-output))) 
     ;; Attach callbacks to hooks 
     (setq interprogram-cut-function 'xsel-cut-function) 
     (setq interprogram-paste-function 'xsel-paste-function))) 

Добавьте этот файл для инициализации. Для этого вам нужно будет установить внешнюю программу xsel.

0

Для этого вы можете использовать демон emacs. Запустите его с emacs --daemon, а затем на screen запустите emacs в качестве клиента с emacsclient (возможно, с -nw или -t, в зависимости от того, что вы хотите). Это работает для меня.

Надеется, что это помогает :)

0

У меня есть этот фрагмент кода, который помогает мне убить/дернуло между приложениями, расположенных за пределами этого редактора. Вы можете попробовать (но я не тестировал в вашей среде).

(setq x-select-enable-clipboard t  ;; copy-paste should work ... 
interprogram-paste-function   ;; ...with... 
'x-cut-buffer-or-selection-value)  ;; ...other X clients 

Источник: http://www.djcbsoftware.nl/dot-emacs.html

Смежные вопросы