emacs / aquamacs - 将当前行或选择发送到活动终端

时间:2014-04-03 11:02:18

标签: emacs remote-server aquamacs iterm2

我一直在努力为我的aquamacs做一个简单的任务。

我通过ssh在远程服务器上运行R会话。

我的Aquamacs在我的机器上本地运行。

我想要的是能够将当前行或当前选择发送到我的iterm2上的活动R会话。这可以通过命令“Cmd-Enter”和插件sendText在sublime text 2上轻松完成。

我们如何才能完成这项简单的任务?

最佳,

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并找到了以下解决方案。我修改了(非常轻微)this gist,并将其作为包添加到Aquamacs。

以下是基本步骤:

将上面的要点复制到新文件中,然后将函数iterm-send-string更改为以下内容:

(defun iterm-send-string (str)   
  "Send STR to a running iTerm instance."
  (let* ((str (iterm-maybe-remove-empty-lines str))
         (str (iterm-handle-newline str))
         (str (iterm-escape-string str)))
    (shell-command (concat "osascript "
                          "-e 'tell app \"iTerm2\"' "
                          "-e 'tell current window' "
                          "-e 'tell current session' "
                          "-e 'write text \"" str "\"' "
                          "-e 'end tell' "
                          "-e 'end tell' "
                          "-e 'end tell' "))))

要将其设为包,您可以将以下内容添加到文件顶部

;;; iterm.el --- sends selections to iTerm.app -*- lexical-binding: t; -*-

;; modified from: https://gist.github.com/johnmastro/88cc318f4ce33b626c9d

;; Author: David Little <david.frank.little@gmail.com>
;; Keywords: lisp
;; Version: 0.0.1

;;; Commentary:

;; Works on Mac OS X: sends a selction to iTerm
;; To match SublimeText's key binding:
;; (global-set-key (kbd "<C-return>") 'iterm-send-text)

;;; Code:

然后你只需要致电M-x package-install-file。将iterm-send-text函数绑定到快捷方式(例如上面评论中的C-return)后,您应该开展业务!