MacOS X: Wie bekomme ich eine praktische Verknüpfung "Diesen Ordner in iTerm öffnen"?

10654
Malax

Ich denke, der Titel sagt genau, was ich machen will. Ich möchte eine Verknüpfung oder sogar eine Schaltfläche in Finder, die ein neues iTerm-Register startet und den Ort in den Ort ändert, den ich im Finder geöffnet habe. Irgendwie open .umgekehrt. :-)

Danke, Malax

11

9 Antworten auf die Frage

10
bulljit

Dieses Applescript funktioniert für mich:

-- 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 
Ich denke, das sollte die akzeptierte Antwort sein. dhilipsiva vor 11 Jahren 1
8
Ross

Mit den anderen Antworten auf dieser Seite habe ich eine App erstellt, die in die Taskleiste des Finders gezogen werden kann.

Sie können es hier herunterladen: https://github.com/rc1/iTermTo

Exzellente Arbeit! Funktioniert perfekt. Dies sollte die akzeptierte Antwort sein. rcd vor 11 Jahren 1
Ich stimme zu - scheint perfekt zu funktionieren. Zip herunterladen. Ziehen Sie die Anwendung zum Installieren in den Ordner "Programme". Ziehen Sie die Anwendung zur Finder-Symbolleiste, um eine praktische Verknüpfung zu erhalten. justingordon vor 11 Jahren 1
5
Forgotten Semicolon

Es gibt ein offenes Terminal Hier AppleScript, das Sie ändern können sollten, um stattdessen iTerm aufzurufen. Dieser MacOSXHints-Beitrag sollte ebenfalls hilfreich sein.

(Ich bin nicht auf meinem Mac, sonst würde ich es testen.)

2
Lloyd Dewolf

Schauen Sie sich cdtodas auf https://github.com/jbtule/cdto " gehostete Projekt an, um das aktuelle Verzeichnis im Terminal (oder iTerm, X11) zu öffnen. Diese App ist (einschließlich ihres Symbols) zum Platzieren vorgesehen die Symbolleiste des Sucherfensters. "

Aber es öffnet zwei iTerms-Fenster, was nach einiger Zeit sehr nervig wird. Mike Lischke vor 11 Jahren 0
2
Brad Cupit

Dies ist in iTerm2 ab Version 3.1.0 integriert.

So verwenden Sie die Funktion:
Klicken Sie im Finder mit der rechten Maustaste auf einen Ordner -> Dienste -> Neues iTerm2-Fenster hier

Hinweis: Das ServicesUntermenü befindet sich ganz unten im Rechtsklick-Menü.

Referenz
Zu diesem Link klicken anzeigen Ältere Versionen, dann unter iTerm2 3.1.0 klicken anzeigen Changelog und suchen nach Dienstleistungen, werden Sie diese finden:

Unterstützung für Suchdienste hinzufügen. Sie können mit der rechten Maustaste in den Finder klicken, um iTerm2 an diesem Ort zu starten.

1
Ioannis Filippidis

Nur zur Vollständigkeit, bevor ich diese Frage fand, was für mich funktionierte, war:

  • new_tab.sh (von bash-Skript ausgegebenes AppleScript) an eine reine AppleScript-Lösung angepasst .
  • dann aus dem Applescript Editor-> File-> Export-> File Format = .app.
  • Drag & Drop der .appFinder-Symbolleiste

Daraufhin wird eine Finder-Symbolleistenschaltfläche angezeigt, die das aktuelle Verzeichnis auf einer neuen iTerm2Registerkarte öffnet . XtraFinder bietet eine solche Schaltfläche, öffnet aber neue Fenster.

Eine ähnliche Lösung mit Diensten finden Sie hier, die Links zu noch mehr verwandten AppleScript-Lösungen enthält:

Mein angepasstes AppleScript ist:

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 

Diese Lösung wurde in diesem knopfbezogenen Thread kommentiert .

Dank der iTermTo Antwort oben.

1
fikovnik

Ich vermute, es liegt daran, dass sich die Innenausstattung von iTerm geändert hat, aber keine der Lösungen funktionierte für mich. Was war der folgende Code:

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 

Oder verwenden Sie Automator als Suchdienst:

on run  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 
0
coto

Mit iTerm:

Iterm-Voreinstellungen und Wechseln Sie auf der Registerkarte "Profile" auf die Unterregisterkarte Allgemein, und legen Sie im Arbeitsverzeichnis die Option "Vorheriges Sitzungsverzeichnis wiederverwenden" fest.

0
user495470

Hier ist ein vereinfachtes Skript, das immer eine neue Registerkarte öffnet (wie das Skript von 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 

Wenn Sie möchten, dass das Skript vorhandene Registerkarten wiederverwendet, ersetzen Sie den tell current terminalBlock durch Folgendes:

tell current session of current terminal write text "cd " & quoted form of p end tell 

Dies funktioniert jedoch nicht, wenn beispielsweise die aktuelle Sitzung beschäftigt ist oder ein weniger oder vim Prozess ausgeführt wird.

Wenn Sie das Skript in einen try-Block einschließen, schlägt es im Hintergrund fehl. reopenÖffnet ein neues Terminalfenster, wenn keine sichtbaren Fenster vorhanden sind oder wenn beispielsweise nur das Einstellungsfenster geöffnet ist. Finder hat auch eine insertion locationEigenschaft, die normalerweise target of Finder window 1der Desktop ist. In 10.7 und später gibt es jedoch einen Fehler, bei dem häufig auf ein anderes Fenster als das vorderste Fenster Bezug genommen wird.

Einige mögliche Probleme mit dem Skript von Bulljit:

  • Es hat eine Verzögerung von einer Sekunde. Ich weiß nicht, ob es für etwas gebraucht wird, aber ich habe keine Verzögerungen gebraucht, als ich dieses Skript getestet habe.
  • Wenn Sie iTerm so eingestellt haben, dass neue Fenster im Vollbildmodus geöffnet werden und keine Fenster geöffnet sind, wird ein Fenster ohne Vollbildschirm geöffnet.
  • Finder wird angewiesen, den Pfad von front window( window 1) abzurufen, der ein Informationsfenster oder ein Voreinstellungsfenster sein kann. Finder window 1wäre immer ein Datei-Browser-Fenster.
  • Das Verzeichnis wechselt zu, /wenn im vordersten Finder-Fenster eine Ansicht angezeigt wird, die keinen Pfad enthält (wie die Netzwerkansicht).

Ich ziehe es jedoch vor, nur eine Funktion wie diese zu verwenden:

cf () { c "$(osascript -e 'tell application "Finder" POSIX path of (target of Finder window 1 as alias end tell)' 2> /dev/null)" }