Existe um Open Terminal Here AppleScript que você deve poder modificar para chamar o iTerm. Esta postagem MacOSXHints também deve ser útil.
(Eu não estou no meu Mac, caso contrário eu testaria isso.)
Acho que o título indica exatamente o que quero fazer. Eu quero um atalho ou até mesmo um botão dentro do Finder que aciona uma nova guia iTerm e altera o local para o local que eu abri no Finder. Algum tipo de open .
no reverso. : -)
Obrigado, Malax
Este applescript funciona para mim:
-- script was opened by click in toolbar
on run
tell application "Finder"
try
set currFolder to (folder of the front window as string)
on error
set currFolder to (path to desktop folder as string)
end try
end tell
CD_to(currFolder, false)
end run
-- script run by draging file/folder to icon
on open (theList)
set newWindow to false
repeat with thePath in theList
set thePath to thePath as string
if not (thePath ends with ":") then
set x to the offset of ":" in (the reverse of every character of thePath) as string
set thePath to (characters 1 thru -(x) of thePath) as string
end if
CD_to(thePath, newWindow)
set newWindow to true -- create window for any other files/folders
end repeat
return
end open
-- cd to the desired directory in iterm
on CD_to(theDir, newWindow)
set theDir to quoted form of POSIX path of theDir as string
tell application "iTerm"
activate
delay 1
-- talk to the first terminal
try
set myterm to the first terminal
on error
set myterm to (make new terminal)
end try
tell myterm
try
-- launch a default shell in a new tab in the same terminal
launch session "Default Session"
on error
display dialog "There was an error creating a new tab in iTerm." buttons {"OK"}
end try
tell the last session
try
-- cd to the finder window
write text "cd " & theDir
on error
display dialog "There was an error cding to the finder window." buttons {"OK"}
end try
end tell
end tell
end tell
end CD_to
Usando as outras respostas nesta página, criei um aplicativo que pode ser arrastado para a barra de tarefas do buscador.
Você pode baixá-lo aqui: link
Dê uma olhada no projeto cdto
hospedado no link
"App Finder Toolbar para abrir o diretório atual no Terminal (ou iTerm, X11). Este aplicativo é projetado (incluindo o seu ícone) para colocado na barra de ferramentas da janela do Finder."
Isto está embutido no iTerm2 a partir da versão 3.1.0.
Para usar a funcionalidade:
no Finder, clique com o botão direito do mouse em uma pasta - > Serviços - > Nova janela iTerm2 aqui
Observação: o submenu Services
está na parte inferior do menu do botão direito do mouse.
Referência Neste link clique Mostrar versões anteriores em>, então sob iTerm2 3.1.0 clique Mostrar Changelog e procure por serviços , você encontrará isto:
Add support for finder services. You can right click in Finder to launch iTerm2 in that location.
Apenas pela perfeição, antes de encontrar essa pergunta, o que funcionou para mim foi:
Applescript Editor-> File-> Export-> File Format = .app
. .app
para a barra de ferramentas do Finder. Isso resulta em um botão da barra de ferramentas do Finder que abre o diretório atual na nova guia iTerm2
.
O XtraFinder oferece esse botão, mas abre novas janelas.
Uma solução semelhante usando serviços pode ser encontrada aqui , que vincula a um AppleScript ainda mais relacionado soluções:
Meu AppleScript adaptado é:
try
tell application "iTerm2"
tell the last terminal
launch session "Default Session"
tell the last session
tell i term application "Finder"
set cur_dir to (the target of the front Finder window) as string
end tell
set cur_dir to POSIX path of cur_dir
write text "cd " & cur_dir
end tell
end tell
end tell
end try
Esta solução foi comentada em este tópico relacionado a botões .
Graças à resposta iTermTo acima.
Eu acho que é porque o interior do iTerm mudou, mas nenhuma das soluções funcionou para mim. O que foi o seguinte código:
tell application "Finder"
set cur_dir to POSIX path of ((the target of the front Finder window) as string)
end tell
tell application "iTerm"
tell (create window with default profile)
write current session text "cd " & quoted form of cur_dir
end tell
end tell
Ou usando o Automator como um serviço localizador:
on run {input, parameters}
tell application "Finder"
set cur_dir to POSIX path of (input as string)
end tell
tell application "iTerm"
tell (create window with default profile)
write current session text "cd " & quoted form of cur_dir
end tell
end tell
end run
Com iTerm:
Na guia Preferências do Iterm e Abaixo dos perfis, vá para a subguia Geral e defina o Diretório de trabalho para "Reutilizar o diretório da sessão anterior".Aqui está um script simplificado que sempre abre uma nova aba (como o script do bulljit):
try
tell application "Finder"
if number of Finder windows is 0 then
set p to POSIX path of (desktop as alias)
else
set p to POSIX path of (target of Finder window 1 as alias)
end if
end tell
tell application "iTerm"
reopen
tell current terminal
tell (launch session "Default Session")
write text "cd " & quoted form of p
end tell
end tell
activate
end tell
end try
Se você quiser que o script reutilize as guias existentes, substitua o bloco tell current terminal
por algo assim:
tell current session of current terminal
write text "cd " & quoted form of p
end tell
Mas isso não funcionará se, por exemplo, a sessão atual estiver ocupada ou executando um processo menor ou vim.
Envolver o script em um bloco try faz com que ele falhe silenciosamente. reopen
abre uma nova janela de terminal se não houver janelas visíveis ou se apenas, por exemplo, a janela de preferências estiver aberta. O Finder também possui uma propriedade insertion location
, que geralmente é target of Finder window 1
ou a área de trabalho. Mas há um bug no 10.7 e mais tarde, onde muitas vezes se refere a alguma outra janela que a janela da frente.
Alguns possíveis problemas com o script do bulljit:
front window
( window 1
), que pode ser uma janela de informações ou uma janela de preferências. Finder window 1
seria sempre uma janela do navegador de arquivos. /
se a janela do Finder mais avançada estiver exibindo uma visualização que não tenha um caminho (como a exibição de Rede). Eu prefiro apenas usar uma função como esta:
cf () {
c "$(osascript -e 'tell application "Finder"
POSIX path of (target of Finder window 1 as alias
end tell)' 2> /dev/null)"
}
Tags finder macos script iterm applescript