总体来说,我正在尝试创建一个 applescript,允许我从 Finder 打开 neovim 中的文件。虽然我找到了几个可以做到这一点的资源,但没有一个能完全按照原样工作,所以我必须自己做一些修改才能让它工作。这是我第一次摆弄 applescript,所以如果这是一个简单的修复,请原谅我。代码如下:
on run {input, parameters}
# Extract filenames and paths from the input
set filenames to ""
set filepaths to ""
if input is not {} then
repeat with currentFile in input
set filepaths to filepaths & quoted form of POSIX path of currentFile & " "
set filenames to filenames & name of (info for quoted form of POSIX path of currentFile) & " "
end repeat
end if
# Get the dirname of the input files
set parentDir to do shell script "dirname " & quoted form of filepaths
# seem to need the full path at least in some cases
# -p opens files in separate tabs
set nvimCommand to "/usr/local/bin/nvim -p " & filenames
# final command to send to iTerm
set finalCommand to "cd " & parentDir & "; " & nvimCommand
# Create an iTerm instance and write the nvim command
tell application "iTerm"
set newWindow to (create window with default profile)
tell current session of newWindow
write text finalCommand
end tell
end tell
end run
问题有两个方面:
- 当我给 applescript 一个要打开的文件时(即通过在 finder 中单击它或使用 Automator 中的“获取指定的 Finder 项目”),我得到了这错误,即使我知道该文件存在并且处于
/Users/cremocal
。 - 当我运行没有指定文件的脚本时,它会在 iTerm 中正确打开一个新的 nvim 环境(在
$HOME
),但是它还在 中打开另一个终端$HOME
。如果我再次运行脚本(nvim 和终端环境仍然打开),则只会创建 nvim 环境。我无论如何也想不出为什么会有第二个窗口。
怎么回事?为什么会有第二个窗口?为什么即使文件存在,applescript 也找不到它?任何帮助都将不胜感激。