这是一个特定于Mac的问题。我想获取一个我在 Textmate2 上编辑的脚本,例如 mycode。R,并使其在iTerm中运行(终端也可以(。我不需要启动R,我已经有iTerm的顶部窗口运行它。 因此,在iTerm选项卡中应该出现以下行:> source("[path]/mycode.R", chdir = TRUE)
我需要的相当于您在 Rstudio 上拥有的带有组合键Cmd + Shift+S
.我找到了这个答案 如何将 TextMate 中的选定文本(或一行(发送到终端上运行的 R,但这是关于发送一行或回显整个代码,而我需要的应该更容易。我使用以下代码成功地采购到 R.app
#!/bin/bash
osascript -e 'tell application "R.app" to activate'
osascript -e "tell application "R.app" to cmd "source(file='"$TM_FILEPATH"',print.eval=TRUE, chdir=TRUE)""
osascript -e 'tell application "TextMate" to activate'
但是,如果我将"R.app"替换为"iTerm","iTerm2"或"终端",脚本将失败。
这确实是我想要的。我真的不精通脚本,这只是(很多(反复试验的结果。我相信存在更正确的 或优雅的解决方案。这是代码。
#!/usr/bin/env bash
[[ -f "${TM_SUPPORT_PATH}/lib/bash_init.sh" ]] && . "${TM_SUPPORT_PATH}/lib/bash_init.sh"
curDir=''
if [[ ${#TM_DIRECTORY} -gt 0 ]]; then
curDir="$TM_DIRECTORY"
fi
osascript
-e 'on run(theCode)'
-e 'tell application "iTerm2"'
-e 'tell current window'
-e 'tell current tab'
-e 'tell current session'
-e 'write text (item 1 of theCode)'
-e 'end tell'
-e 'end tell'
-e 'end tell'
-e 'end tell'
-e 'end run' -- "source("$TM_FILEPATH",print.eval=TRUE, chdir=TRUE)"