MacOS X:「iTermでこのフォルダーを開く」ショートカットを使用するにはどうすればよいですか?


12

タイトルは私がやりたいことを正確に示していると思います。新しいiTermタブを起動し、場所をFinderで開いた場所に変更するショートカットまたはFinder内のボタンが必要です。ある種のopen .逆です。:-)

ありがとう、Malax

回答:



10

このアップルスクリプトは私のために機能します:

-- 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

1
これは受け入れられた答えだと思います。
dhilipsiva

8

このページの他の回答を使用して、ファインダータスクバーにドラッグできるアプリを作成しました。

ここからダウンロードできます:https : //github.com/rc1/iTermTo


1
よくできました!完全に動作します。これは受け入れられた答えであるはずです。
RCD

1
私は同意します-完全に動作するようです。zipをダウンロードします。アプリケーションをアプリケーションフォルダーにドラッグしてインストールします。便利なショートカットのアプリケーションをファインダーツールバーにドラッグします。
ジャスティンゴードン

3

これは、バージョン3.1.0のiTerm2に組み込まれています。

機能を使用するには:
Finderでフォルダを右クリック->サービス->ここに新しいiTerm2ウィンドウ

注:Servicesサブメニューは、右クリックメニューの一番下にあります。

参照
このリンクで [ 古いバージョンを表示 ]をクリックし、iTerm2 3.1.0の下で[ 変更ログを表示 ]をクリックしてサービスを探します。

ファインダーサービスのサポートを追加します。Finderを右クリックして、その場所でiTerm2を起動できます。


2

https://github.com/jbtule/cdtoでcdtoホストされているプロジェクトを見てください。 「Finderツールバーアプリは、ターミナル(またはiTerm、X11)の現在のディレクトリを開きます。このアプリは(アイコンを含めて)ファインダウィンドウのツールバー。」


しかし、2つのiTermsウィンドウが開き、しばらくすると非常に迷惑になります。
マイクリシュケ

1

完全を期すために、この質問を見つける前に、私にとって有効だったのは次のとおりでした。

  • new_tab.sh(bashスクリプトによって発行されたAppleScript)をAppleScriptのみのソリューションに適合させました
  • その後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回答に感謝します。


1

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を検索サービスとして使用します。

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

0

iTermの場合:

Itermの設定と[プロファイル]タブで、[一般]サブタブに移動し、作業ディレクトリを[前のセッションのディレクトリを再利用]に設定します。


0

これは、常に新しいタブを開く簡略化されたスクリプトです(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

スクリプトで既存のタブを再利用する場合は、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以降には、最前面のウィンドウ以外のウィンドウを参照することが多いバグがあります。

ブルジットのスクリプトに関する潜在的な問題:

  • 1秒の遅延があります。何かに必要かどうかはわかりませんが、このスクリプトをテストするときに遅延は必要ありませんでした。
  • iTermを新しいウィンドウを全画面で開くように設定していて、開いているウィンドウがない場合、非画面ウィンドウを開きます。
  • Finderにfront windowwindow 1)のパスを取得するように指示します。これは、情報ウィンドウまたは設定ウィンドウになります。Finder window 1常にファイルブラウザウィンドウになります。
  • /最前面のFinderウィンドウにパスのないビュー(ネットワークビューなど)が表示されている場合は、ディレクトリが変更されます。

ただし、次のような関数を使用することをお勧めします。

cf () {
  c "$(osascript -e 'tell application "Finder"
    POSIX path of (target of Finder window 1 as alias
  end tell)' 2> /dev/null)"
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.