タイトルは私がやりたいことを正確に述べていると思います。新しいiTermタブを起動し、場所をFinderで開いた場所に変更するショートカットまたはFinder内のボタンが必要です。ある種のopen .
逆に。 :-)
ありがとう、マラックス
ここでターミナルを開く AppleScriptがあり、代わりにiTermを呼び出すように変更できるはずです。これ MacOSXHints post も役立つはずです。
(私はMacを使用していません。そうでない場合は、テストします。)
このapplescriptは私のために働きます:
-- 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
このページの他の回答を使用して、Finderタスクバーにドラッグできるアプリを作成しました。
ここからダウンロードできます: https://github.com/rc1/iTermTo
これは、バージョン3.1.0以降のiTerm2に組み込まれています。
機能を使用するには:
Finderでフォルダを右クリック->サービス->新しいiTerm2ウィンドウはこちら
注:Services
サブメニューは、右クリックメニューの一番下にあります。
参照
このリンクで クリック古いバージョンを表示、次にiTerm2 3.1.0の下変更ログの表示をクリックし、サービスを探します。
Finderサービスのサポートを追加します。 Finderを右クリックして、その場所でiTerm2を起動できます。
https://github.com/jbtule/cdto "Finderツールバーアプリでホストされているcdto
プロジェクトを見て、ターミナル(またはiTerm、X11)で現在のディレクトリを開きます。 。このアプリは(アイコンを含めて)Finderウィンドウのツールバーに配置されるように設計されています。」
完全を期すために、この質問を見つける前に、私にとって何がうまくいったかは次のとおりでした。
Applescript Editor-> File-> Export-> File Format = .app
から。.app
をFinderのツールバーにドラッグアンドドロップしました。これにより、新しいiTerm2
タブで現在のディレクトリを開くFinderツールバーボタンが表示されます。 XtraFinderはそのようなボタンを提供しますが、新しいウィンドウを開きます。
サービスを使用した同様のソリューションが見つかります ここ 、これはさらに関連するAppleScriptソリューションにリンクしています。
私が採用したAppleScriptは次のとおりです。
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
この解決策は このボタン関連のスレッド でコメントされました。
上記の iTermTo 回答に感謝します。
ITermの内部が変わったからだと思いますが、どのソリューションもうまくいきませんでした。次のコードは何でしたか。
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
または、AutomatorをFinderサービスとして使用する:
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
ITermの場合:
Itermの設定と[プロファイル]タブで、[全般]サブタブに移動し、[作業ディレクトリ]を[前のセッションのディレクトリを再利用]に設定します。
これは、常に新しいタブを開く簡略化されたスクリプトです(ブルジットのスクリプトのように)。
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
スクリプトで既存のタブを再利用する場合は、tell current terminal
ブロックを次のように置き換えます。
tell current session of current terminal
write text "cd " & quoted form of p
end tell
しかし、たとえば現在のセッションがビジーであるか、lessまたはvimプロセスを実行している場合、それは機能しません。
スクリプトをtryブロックでラップすると、スクリプトはサイレントに失敗します。 reopen
は、表示されているウィンドウがない場合、またはたとえば設定ウィンドウが開いている場合にのみ、新しいターミナルウィンドウを開きます。 Finderにはinsertion location
プロパティもあります。これは通常、target of Finder window 1
またはデスクトップです。しかし、10.7以降にはバグがあり、最前面のウィンドウ以外のウィンドウを参照することがよくあります。
ブルジットのスクリプトに関するいくつかの潜在的な問題:
front window
(window 1
)のパスを取得するように指示します。これは、情報ウィンドウまたは設定ウィンドウにすることができます。 Finder window 1
は常にファイルブラウザウィンドウになります。/
に変更されます。私はこのような関数を使用することを好みます:
cf () {
c "$(osascript -e 'tell application "Finder"
POSIX path of (target of Finder window 1 as alias
end tell)' 2> /dev/null)"
}