Відповіді:
Тут є відкритий термінал AppleScript, який ви повинні мати змогу змінити для виклику iTerm замість цього. Ця публікація MacOSXHints також повинна бути корисною.
(Я не на своєму Mac, інакше я б перевірив це.)
Цей яблучний сценарій працює для мене:
-- 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
Використовуючи інші відповіді на цій сторінці, я створив додаток, яке можна перетягнути на панель завдань пошуку.
Завантажити його можна звідси: https://github.com/rc1/iTermTo
Це вбудовано в iTerm2 з версії 3.1.0.
Щоб скористатися функціоналом:
у Finder клацніть правою кнопкою миші папку -> Послуги -> Нове вікно iTerm2
Примітка: Services
підменю знаходиться в самій нижній частині меню правою кнопкою миші.
Посилання
За цим посиланням натисніть Показати старіші версії , потім під iTerm2 3.1.0 натисніть Показати журнал змін і знайдіть служби , ви знайдете це:
Додайте підтримку послуг пошуку. Ви можете натиснути правою кнопкою миші в Finder, щоб запустити iTerm2 у цьому місці.
Погляньте на cdto
проект, розміщений на веб- сайті https://github.com/jbtule/cdto
"Додаток панелі інструментів Finder, щоб відкрити поточний каталог у Терміналі (або iTerm, X11). Ця програма розроблена (включаючи її іконку) для розміщення в панель інструментів вікна пошуку. "
Для повноти, перш ніж знайти це питання, для мене працювало:
Applescript Editor-> File-> Export-> File Format = .app
..app
панель інструментів Finder.Це призводить до появи кнопки на панелі інструментів Finder, яка відкриє поточний каталог на новій iTerm2
вкладці. 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 як послугу пошуку:
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
Ось спрощений сценарій, який завжди відкриває нову вкладку (наприклад, сценарій 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
Але це не спрацює, якщо, наприклад, поточний сеанс зайнятий або працює менш або vim-процес.
Якщо загортати скрипт у блок спробу, воно мовчить невдало. reopen
відкриває нове вікно терміналу, якщо немає видимих вікон або, якщо лише, наприклад, відкрито вікно налаштувань. У Finder також є insertion location
властивість, яка зазвичай є target of Finder window 1
або робочим столом. Але помилка є в 10.7 і пізніше, коли вона часто посилається на якесь інше вікно, ніж найперше вікно.
Деякі потенційні проблеми зі сценарієм bulljit:
front window
( window 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)"
}