Mac OS X : 파일을 두 번 클릭 할 때 터미널에서 vim을 여는 방법 클릭하면 터미널 기반 vim을 사용하여 파일을

강조 표시 등으로 사용자 정의 vim 파일 유형을 정의했습니다. 더블 클릭하면 터미널 기반 vim을 사용하여 파일을 열고 싶습니다. Mac OS X를 사용하고 있습니다. 이것을 시작하는 방법에 대한 조언이 있습니까?



답변

다음 애플 스크립트를 실행하는 Automator 응용 프로그램을 작성하십시오.

on run {input}
   set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      activate
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
   end tell
end run

자동화 애플리케이션을 저장하십시오. (예 : 이름을 Vim Launcher로 지정 )

사용자 정의 vim 유형 파일 (예 : 확장자로 .vim 사용)을 마우스 오른쪽 단추로 클릭 (또는 Control- 클릭) 하고 연결 프로그램 에서 맨 아래 옵션 기타를 선택하고 Automator Application (예 : Vim Launcher )을 두 번 클릭하십시오. 클릭하세요.

팔.


답변

5 분 정도 지나서 내장 옵션을 찾을 수 없는지 확인하기 위해 게임을하면서 보냈습니다.

그러나 파일을 절대 경로로 가져 와서 vim {path}bash 쉘에서 실행하는 간단한 Applescript를 작성할 수 있습니다 .


답변

set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path & "; exit"
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
      activate
   end tell
end run

대신이 AppleScript를 사용합니다. Space를 사용할 때 (이전이 아닌!) 실행 후 Terminal.app을 활성화하여 사물이 이상하게 행동하지 않도록합니다. 또한 Vim이 종료 된 후 창을 닫습니다. 완전히 종료 한 후 Terminal.app을 닫으십시오.


답변

요세미티에서 작동하도록하는 데 필요한 코드 변경 사항으로 수락 된 답변에 의견을 추가하고 싶었지만 평판이 충분하지 않아 의견을 추가 할 수 없으므로 답변을 통해 답장을 시도했습니다.

“파인더에서 터미널에서 파일 열기”스크립트가 Mavericks에서 제대로 작동했지만 Yosemite로 업그레이드 한 후 작동이 중지되었습니다. 요세미티에서 허용 된 답변의 코드는 처음에만 작동합니다. 즉, Finder에서 첫 번째 파일을 두 번 클릭하면 정상적으로 열리지 만 후속 파일을 클릭하면 빈 새 터미널 창이 열립니다 (vim 명령 프롬프트와 함께 열리지 않습니다.

여러 사이트를 살펴본 후 제대로 작동하는 버전을 함께 모았습니다. 더 좋은 방법이 있다고 확신하지만 Applescript에 대한 경험이 없으므로 다른 사람들에게 개선 사항을 제안 할 것입니다.

on run {input}
    set the_path to POSIX path of input
    -- set cmd to "vim " & quoted form of the_path
    -- we can do a change directory to make NerdTree happy
    set cmd to "clear;cd `dirname " & the_path & "`;vim " & quoted form of the_path & "; exit"

    tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
    tell application "Terminal"
        if terminalIsRunning is true then
            -- CHANGED code starts --
            set newWnd to do script with command cmd
            do script with command cmd in newWnd
            -- CHANGED code ends --
        else
            do script with command cmd in window 1
        end if
        activate
    end tell
end run