MacOS X: Kullanışlı bir “Bu klasörü iTerm'de aç” kısayoluna nasıl sahip olabilirsiniz?


12

Bence başlık tam olarak ne yapmak istediğimi gösteriyor. Finder içinde yeni bir iTerm Sekmesi başlatan ve konumu Finder'da açtığım konuma değiştiren bir kısayol veya hatta bir düğme istiyorum. open .Tersi bir çeşit . :-)

Teşekkürler, Malax

Yanıtlar:



10

Bu el kitabı benim için çalışıyor:

-- 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
Bunun kabul edilen cevap olması gerektiğini düşünüyorum.
dhilipsiva

8

Bu sayfadaki diğer yanıtları kullanarak, bulucu görev çubuğuna sürüklenebilecek bir Uygulama oluşturdum.

Buradan indirebilirsiniz: https://github.com/rc1/iTermTo


1
Mükemmel iş! Mükemmel çalışıyor. Bu kabul edilen cevap olmalı.
rcd

1
Hemfikirim - mükemmel çalışıyor gibi görünüyor. Zip dosyasını indirin. Yüklemek için uygulamayı Uygulamalar klasörüne sürükleyin. Kullanışlı kısayol için uygulamayı bulucu araç çubuğuna sürükleyin.
justingordon

3

Bu, 3.1.0 sürümünden itibaren iTerm2'de yerleşiktir.

İşlevi kullanmak için:
Finder'da bir klasörü sağ tıklayın -> Hizmetler -> Yeni iTerm2 Penceresi

Not: Servicesalt menü sağ tıklama menüsünün en altındadır.

Referans
Bu bağlantıyı At tıklayarak Göster Yaşlı Sürümleri sonra altında, 3.1.0 iTerm2 tıklama göster Değişiklik ve için göz hizmetlerinin , bu bulacaksınız:

Bulucu hizmetleri için destek ekleyin. Bu konumda iTerm2'yi başlatmak için Finder'a sağ tıklayabilirsiniz.


2

Terminalde (veya iTerm, X11) geçerli dizini açmak için https://github.com/jbtule/cdto "Bulucu Araç Çubuğu uygulaması" nda cdtobarındırılan projeye bir göz atın . bulucu penceresinin araç çubuğuna bakın. "


Ancak bir süre sonra son derece sinir bozucu olan iki iTerms penceresi açar.
Mike Lischke

1

Sadece bütünlük için, bu soruyu bulmadan önce benim için işe yarayan şuydu:

  • new_tab.sh (bash betiği tarafından verilen AppleScript) yalnızca AppleScript çözümüne uyarlanmıştır .
  • sonra Applescript Editor-> File-> Export-> File Format = .app.
  • öğesini .appFinder araç çubuğuna sürükleyip bıraktı .

Bu, geçerli dizini yeni iTerm2sekmede açan bir Finder araç çubuğu düğmesine neden olur . XtraFinder böyle bir düğme sunar, ancak yeni pencereler açar.

Hizmetleri kullanan benzer bir çözüm , daha da ilgili AppleScript çözümlerine bağlanan burada bulunabilir :

Uyarlanmış AppleScript'im:

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

Bu çözüm, düğmeyle ilgili bu iş parçacığında yorumlanmıştır .

Yukarıdaki iTermTo cevap için teşekkürler .


1

Sanırım iTerm'in içi değişti, ama hiçbir çözüm benim için işe yaramadı. Aşağıdaki kod neydi?

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

Veya bulucu hizmeti olarak Automator kullanarak:

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

İTerm ile:

Iterm Tercihleri ​​ve Profiller altında, Genel alt sekmesine gidin, Çalışma Dizini'ni “Önceki oturumun dizinini yeniden kullan” olarak ayarlayın.


0

İşte her zaman yeni bir sekme açan (bulljit komut dosyası gibi) basitleştirilmiş bir komut dosyası:

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

Komut dosyasının mevcut sekmeleri yeniden kullanmasını istiyorsanız, tell current terminalbloğu aşağıdaki gibi bir şeyle değiştirin :

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

Ancak, örneğin geçerli oturum meşgulse veya daha az veya vim işlemi yürütüyorsa bu işe yaramaz.

Komut dosyasını bir deneme bloğuna sarmak sessizce başarısız olmasını sağlar. reopengörünür pencere yoksa veya yalnızca tercihler penceresi açıksa yeni bir terminal penceresi açar. Finder ayrıca insertion locationgenellikle target of Finder window 1veya masaüstü olan bir özelliğe sahiptir . Ancak 10.7 ve sonrasında bir hata var, bu da genellikle en öndeki pencereden başka bir pencereye atıfta bulunuyor.

Bullit'in senaryosunda bazı potansiyel sorunlar:

  • Bir saniye gecikmesi var. Bir şey için gerekli olup olmadığını bilmiyorum, ama bu komut dosyasını test ettiğimde herhangi bir gecikmeye ihtiyacım yoktu.
  • İTerm'i yeni pencereleri tam ekranda açacak şekilde ayarladıysanız ve açık pencere yoksa, tam ekran olmayan bir pencere açar.
  • Finder'a bilgi penceresi veya tercihler penceresi olabilen front window( window 1) yolunu almasını söyler . Finder window 1her zaman bir dosya tarayıcı penceresi olur.
  • En /öndeki Finder penceresinde yolu olmayan bir görünüm (Ağ görünümü gibi) görüntüleniyorsa dizini olarak değiştirir .

Ben sadece böyle bir işlevi olsa tercih:

cf () {
  c "$(osascript -e 'tell application "Finder"
    POSIX path of (target of Finder window 1 as alias
  end tell)' 2> /dev/null)"
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.