Mac OS X panosuna metin kesmek ve kopyalamak için emac'ları yapılandırma


16

emacsEmacs (varsayılan Terminal sürümü) metin kopyalamak / kesmek ve başka bir yere (X Pencere programına) yapıştırabilir, böylece yapılandırabilir miyim ?


Nitpick: "varsayılan Terminal sürümü" diyorsunuz, ancak Emacs için varsayılan çalışma modu metin terminali yerine GUI kullanmaktır. Belki /usr/bin/emacsApple tarafından OSX ile birlikte gelen ve keyfi olarak metin terminaliyle sınırlı olan eski yürütülebilir dosyadan bahsediyorsunuz ?
Stefan

Yanıtlar:


4

Geçerli bölgeyi OS X panosuna kopyalamak için şunu kullanabilirsiniz:

(shell-command-on-region (region-beginning) (region-end) "pbcopy")

OS X macunu tamponunu Emacs kill halkasına kopyalayan tersi önerilmez. Öldürme halkaları ve panoları çok farklı yapılardır ve bir panoyu bir öldürme halkasına itmenin tam olarak ne yapacağına dair iyi bir cevap yoktur. Yine de, pbpastegeçerli pano içeriğini almak için manuel olarak çalıştırabilirsiniz .


Bu benim için işe yaramadı. Ancak bu Emacs gönderisindeki belirgin çözüm işe yarıyor.
Galder Zamarreño

8

Bunu şuraya ekle ~/.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)

İTerm 2'de Emacs kullanıyorsanız, tuş kombinasyonlarını tercihlerde de yeniden eşleyebilirsiniz:

Sonra şuna böyle bir şey ekleyin ~/.emacs:

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)

Hala en iyi cevap. Teşekkürler! Bu "Eylemler" oluşturmak için iterm için "Escape kodu gönder" i seçin ve önde gelen "^ [. ("Metin gönder" işlem türüyle çalışmadı)
Jay

3

OS X Panosunu Daniel Nelson tarafından Emacs'ın öldürme halkasına entegre etmek için bir çözüm: https://github.com/wesen/emacs/blob/master/pbcopy.el

Yazarın yorumları:

Mac OSX terminalinden Emacs çalıştırırken kill halkasının pano ile etkileşime girmesini sağlar (tam kill halkası işlevini kaybetmeden). Tek yaptığım değiştirmek oldu xclip.elile çalışmalarına pbcopyve pbpaste. Gerçek teşekkürler xclip.el yazarı Leo Shidai Liu'ya gidin.


1

Aşağıdakiler işe yarıyor, buradan aldım :)

(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))

Orijinal yayına bir bağlantı ekleyebilir misiniz?
Vincent

0

OS X'te bulunan emacs sürümü bu işlevi sağlamak için çok eski.

Neyse ki emacs'ı panonuzla entegre edilmiş bir sürüme buradan güncelleyebilirsiniz: http://emacsformacosx.com

Güncellemeden sonra emacs yapıştırmak için Ctrl+ kullandığınıza inanıyorum Y.


Ah - Söylemeyi unuttum - o siteden indireceğiniz emacs sürümü grafikseldir (yani Terminalde çalışmaz). Terminal'deki uygulamaların artık bulamadığım bir kesmek olmadan panoya erişmesi imkansızdır. : /
Faiz Saleem

2
pbcopyve pbpastehala var ve korsan değiller.

Bu mümkündür, ancak OP kopyalamak ve yapıştırmak için klavye komutları kullanmak istediğini varsaydım. Demek istediğim, Terminal uygulamalarının, kesmeksiz OS X panosuyla birlikte kopyalayıp yapıştırmak için klavye kısayollarını kullanamamasıydı.
Faiz Saleem

"Terminal uygulamaları, kesmeksiz OS X panosuyla birlikte kopyalayıp yapıştırmak için klavye kısayollarını kullanamaz." Bu durum, tabii ki doğru değildir pbcopyve pbpasteher ikisi de uç uygulamalardır; başka herhangi bir terminal uygulaması yaptıklarını yapabilir ya da doğrudan arayabilir.

Aradığım şey pbcopyEmacs'ın kes ve kopyasını takmak. Mümkün mü?
syntagma

0

Bu gönderiyi gerçekten yararlı buldum (2 işlevi tanımlamak ve ~ / .emacs dosyanızda bunlara kısayollar atamak).

Bu satırları .emacs dosyanıza ekledikten sonra, yeni bir kabuk oturumu (sekme / pencere) açana kadar bu kısayollara erişemezsiniz. Değişikliklerin uygulanmasına izin verin.


0

GNU ELPA'dan (yani üzerinden ) yükleyebileceğiniz paket xclip-modetarafından sağlanan etkinleştirmeyi etkinleştirerek metin terminalinde Emacs'ı çalıştırırken pano ile bu tür bir etkileşimi şeffaf bir şekilde alabilirsiniz .xclipM-x package-list-packages RET

Benzer bir soru ve cevap için /emacs/10900/ adresine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.