Alfred Workflow在终端的vim中打开一个文件

时间:2018-04-12 13:51:36

标签: macos vim alfred

我们如何编写alfred工作流来从finder打开文件到vim编辑器?

这是我第一次尝试在Alfred中创建工作流程。 我还在学习,并希望从一个简单的工作流程开始。

在这里,我首先创建了Hotkey和Keyword。

Run NSAppleScipt

复制并粘贴on alfred_script(q) tell application "Terminal" activate do script "vim '" & q & "'" end tell end alfred_script

内的以下内容
  $('#js-date').datepicker().on('changeDate', function(ev) {
    var currentDate = new Date($('#js-date').val());
    $('.datepicker-days th.dow').removeClass('active')
    switch (currentDate.getDay()) {
      case 0:
        $('th.dow').eq(0).addClass('active');
        break;
      case 1:
        $('th.dow').eq(1).addClass('active');
        break;
      case 2:
        $('th.dow').eq(2).addClass('active');
        break;
      case 3:
        $('th.dow').eq(3).addClass('active');
        break;
      case 4:
        $('th.dow').eq(4).addClass('active');
        break;
      case 5:
        $('th.dow').eq(5).addClass('active');;
        break;
      case 6:
        $('th.dow').eq(6).addClass('active');
        break;
    }
  });

此工作流程有效但打开两个终端而不是一个终端。 我们如何解决这个问题,以便只打开一个窗口?

工作流程摘要如下。 enter image description here

1 个答案:

答案 0 :(得分:0)

您需要Terminal Command操作。

只需将此对象与您的触发器相关联,然后在其上使用vim "{query}"

编辑:

我正在编辑答案以回复评论,询问后续问题:

  

工作流现在为每个文件创建新的termnial,如果终端已在运行,我们可以在同一个终端中打开吗?

在这种情况下,可以使用Run NSAppleScript对象,区别在于我们必须指定do script应该运行的位置,因为如果没有指定位置,它总是打开一个新窗口:

on alfred_script(q)
    tell application "Terminal"
        if not (exists window 1) then reopen
        activate
        do script "vim '" & q & "'" in window 1
    end tell
end alfred_script