Mac OS X: como abrir o vim no terminal ao clicar duas vezes em um arquivo

19

Eu defini meu próprio tipo de arquivo vim personalizado com destaque etc. Gostaria de abri-lo usando o vim baseado em terminal quando clicar duas vezes nele. Estou usando o mac os x. Alguma dica sobre como começar isso?

sixtyfootersdude
fonte

Respostas:

17

Crie um aplicativo Automator para executar o seguinte AppleScript:

on run {input}
   set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      activate
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
   end tell
end run

Salve o aplicativo de automação. (por exemplo, nomeie-o Vim Launcher )

Clique com o botão direito do mouse (ou clique com a tecla Control pressionada) no seu arquivo personalizado do tipo vim (por exemplo, use .vim como extensão) e, em Abrir com ... escolha a opção inferior Outros ... e encontre seu aplicativo Automator (por exemplo, Vim Launcher ), Clique.

Estrondo.

ghoppe
fonte
4
Para criar no Automator, você pode clicar em New Document, selecionar o Applicationmodelo. Na Actions->Libraryguia, clique Utilitiesem Run AppleScript.
Cevaris
11
Não funciona em Yosemite.
Keyvan
Tenho coisas que trabalham em Yosemite, embora eu uso iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N
trabalha para mim em Yosemite. existe um caso estranho, no entanto ...
Ilias Karim
11
Isso parece não funcionar com o iTerm em 10.12.5
oarfish
1

Dos cinco minutos que passei jogando com ele, para ver se não encontraria uma opção integrada para fazer isso.

No entanto, você provavelmente pode escrever um Applescript simples que pegará o caminho absoluto dos arquivos e depois executará vim {path}em um shell bash.

Josh K
fonte
1
set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path & "; exit"
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
      activate
   end tell
end run

Eu uso esse AppleScript. Ativa o Terminal.app após (não antes!) A execução para impedir que as coisas funcionem de forma estranha ao usar o Spaces. Também fecha a janela após a saída do Vim. Basta definir o Terminal.app para fechar após saídas limpas.

ggustafsson
fonte
1

Eu só queria adicionar um comentário à resposta aceita com as alterações de código necessárias para fazê-lo funcionar em Yosemite, mas como não tenho reputação suficiente, não poderia adicionar um comentário e, portanto, tentar responder por meio de uma resposta.

O script "Abrir arquivo no terminal do Finder" estava funcionando bem no Mavericks, mas parou de funcionar após a atualização para o Yosemite. Em Yosemite, o código na resposta aceita funcionaria apenas na primeira vez - ou seja, quando clico duas vezes no primeiro arquivo no Finder, ele abre bem, mas quando clico nos arquivos subsequentes, eles apenas abrem novas janelas de terminal em branco (vim não será aberto) com o prompt de comando.

Depois de percorrer vários sites, remendamos uma versão que funciona muito bem. Estou certo de que existe uma maneira melhor de fazê-lo, mas não tenho experiência com o Applescript e, portanto, deixarei que outras pessoas sugiram melhorias.

on run {input}
    set the_path to POSIX path of input
    -- set cmd to "vim " & quoted form of the_path
    -- we can do a change directory to make NerdTree happy
    set cmd to "clear;cd `dirname " & the_path & "`;vim " & quoted form of the_path & "; exit"

    tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
    tell application "Terminal"
        if terminalIsRunning is true then
            -- CHANGED code starts --
            set newWnd to do script with command cmd
            do script with command cmd in newWnd
            -- CHANGED code ends --
        else
            do script with command cmd in window 1
        end if
        activate
    end tell
end run
protoiyer
fonte
Em um Macbook Pro de 2017 com Touchbar, acho que a [resposta aceita] ( superuser.com/a/139949/44785 ) funciona bem. Mas ainda quero adicionar a linha "change directory" (cd) para garantir que o pwd esteja onde está o arquivo. Isso ajuda o NerdTree a exibir apenas os arquivos da pasta do arquivo aberto.
protoiyer