Réponses:
Il existe un terminal ouvert ici AppleScript que vous devriez pouvoir modifier pour appeler iTerm à la place. Ce message MacOSXHints devrait également être utile.
(Je ne suis pas sur mon Mac sinon je le testerais.)
Cet applescript fonctionne pour moi:
-- 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
En utilisant les autres réponses de cette page, j'ai créé une application qui peut être glissée dans la barre des tâches du Finder.
Vous pouvez le télécharger ici: https://github.com/rc1/iTermTo
Il est intégré à iTerm2 à partir de la version 3.1.0.
Pour utiliser la fonctionnalité:
dans le Finder, cliquez avec le bouton droit sur un dossier -> Services -> Nouvelle fenêtre iTerm2 ici
Remarque: le Services
sous-menu est tout en bas du menu contextuel.
Référence
Sur ce lien, cliquez sur Afficher les versions antérieures , puis sous iTerm2 3.1.0, cliquez sur Afficher le journal des modifications et recherchez les services , vous trouverez ceci:
Ajoutez la prise en charge des services de recherche. Vous pouvez cliquer avec le bouton droit dans le Finder pour lancer iTerm2 à cet emplacement.
Jetez un œil au cdto
projet hébergé sur https://github.com/jbtule/cdto
"Application Finder Toolbar pour ouvrir le répertoire actuel dans le terminal (ou iTerm, X11). Cette application est conçue (y compris son icône) pour être placée dans la barre d'outils de la fenêtre du Finder. "
Juste pour être complet, avant de trouver cette question, ce qui a fonctionné pour moi était:
Applescript Editor-> File-> Export-> File Format = .app
..app
déposez la barre d'outils du Finder.Il en résulte un bouton de la barre d'outils du Finder qui ouvre le répertoire actuel dans un nouvel iTerm2
onglet. XtraFinder propose un tel bouton, mais il ouvre de nouvelles fenêtres.
Une solution similaire utilisant des services peut être trouvée ici , qui renvoie à des solutions AppleScript encore plus connexes:
Mon AppleScript adapté est:
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
Cette solution a été commentée dans ce fil de discussion relatif aux boutons .
Merci à la réponse iTermTo ci-dessus.
Je suppose que c'est parce que les composants internes d'iTerm ont changé, mais aucune des solutions n'a fonctionné pour moi. Quel a été le code suivant:
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 en utilisant Automator comme service de recherche:
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
Voici un script simplifié qui ouvre toujours un nouvel onglet (comme le script de 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
Si vous souhaitez que le script réutilise les onglets existants, remplacez le tell current terminal
bloc par quelque chose comme ceci:
tell current session of current terminal
write text "cd " & quoted form of p
end tell
Mais cela ne fonctionnera pas si, par exemple, la session en cours est occupée ou exécute un processus less ou vim.
Envelopper le script dans un bloc try le fait échouer silencieusement. reopen
ouvre une nouvelle fenêtre de terminal s'il n'y a pas de fenêtres visibles ou si seulement par exemple la fenêtre des préférences est ouverte. Le Finder possède également une insertion location
propriété, qui est généralement target of Finder window 1
le bureau. Mais il y a un bogue dans 10.7 et versions ultérieures où il fait souvent référence à une autre fenêtre que la fenêtre la plus en avant.
Quelques problèmes potentiels avec le script de bulljit:
front window
( window 1
), qui peut être une fenêtre d'informations ou une fenêtre de préférences. Finder window 1
serait toujours une fenêtre de navigateur de fichiers./
si la fenêtre du Finder la plus en avant affiche une vue qui n'a pas de chemin (comme la vue Réseau).Je préfère simplement utiliser une fonction comme celle-ci:
cf () {
c "$(osascript -e 'tell application "Finder"
POSIX path of (target of Finder window 1 as alias
end tell)' 2> /dev/null)"
}