2014-11-07 3 views
3

현재 서브 스크립 션 텍스트 3 $ project_path 폴더로 좋아하는 자식 응용 프로그램을 열려고 키 바인딩을 만들려고했지만 어떻게 든 숭고한 텍스트 3이 변수를 실제 통로.숭고한 텍스트 3 키 바인딩 - 변수 사용

아래에서 현재 키보드 바인딩 파일을 찾을 수 있습니다.

[ 
    { 
     "keys": ["super+ctrl+alt+g"], 
     "command": "exec", 
     "args": 
     { 
      "shell_cmd": "open -a Gitbox $project_path" 
     } 
    } 
] 

$ project_path가 실제 프로젝트 경로로 변환되지 않습니다 ... 무엇을 잘못하고 있습니까? 대신 "Build System"을 사용해야합니까? 빌드 시스템을 살펴 보았지만 파일의 범위 (예 : * .rb)를 선택해야하고이 단축키를 내 프로젝트/파일에 대해 유효하게 설정해야합니다.

textmate2에서 번들 편집기에 새로운 "명령"을 작성하고 단축키를 지정하여 동일한 단축키를 쉽게 만들 수있었습니다. 그러면 명령은 다음과 같습니다.

#!/usr/bin/ruby 
exec "open -a Gitbox '#{ENV['TM_PROJECT_DIRECTORY']}'" 

그래서 저는 Sublime Text 3에서 이와 동일한 결과를 얻으려고하고 있지만 잘못된 것이 있습니다.

감사합니다.

답변

2

편집 : 내가 당신에게 키 스트로크 또는 명령 팔레트를 통해 외부 응용 프로그램을 열 수있는 기능을 제공하는 일반적인 플러그인을 구축 한 한편

. 플러그인은 여기에서 찾을 수 있습니다 : ExternalTools

쉽게/키 바인딩 당신이 환경 설정에 갈 수있는 경우 명령 팔레트 cmd+shift+p

를 통해 그것을 설치하고 다음을 추가 할 수 있습니다

{ 
    "keys": ["super+ctrl+alt+g"], 
    "command": "external_tools_run", 
    "args": { "cmd": ["open", "-a", "Gitbox", "$project_path"] } 
} 

나는 아직도 Mac을 소유하지 않으므로 제대로 작동하지 않을 가능성이 있습니다. 이 경우에 당신이 저에게 의견을 줄 수 있다면 기뻐할 것입니다 (Issues 참조).


원래 답변 : 저도 같은 문제에 검색을 몇 시간을 보내고있는

. 결국 나는 내 자리 소유자와 함께 작은 플러그인을 만들기로 결정했습니다.

{ "keys": ["super+ctrl+alt+g"], "command": "run_app", "args": { "app_args": ["open", "-a", "Gitbox", "$PROJECT_FOLDER"]}} 

이 할 수있다 : 당신이 패키지/사용자에 위의 코드를 저장 한 후에

import sublime, sublime_plugin 

class RunAppCommand(sublime_plugin.WindowCommand): 
    def run(self, app_args): 
     app_args = self.fill_placeholder(app_args) 
     self.window.run_command("exec", {"cmd": app_args })   

def fill_placeholder(self, args): 
    res = [] 
    proj_folder = self.get_project_folder() 

    for arg in args: 
     arg = arg.replace("$PROJECT_FOLDER", proj_folder) 
     res.append(arg) 

    return res 

def get_project_folder(self,default=None): 
    proj_folder = "" 

    if self.window.project_file_name(): 
     proj = self.window.project_data() 

    proj_folder_obj = self.get_first(proj["folders"]) 
    if proj_folder_obj: 
     proj_folder = proj_folder_obj["path"] 

    elif self.window.folders(): 
     proj_folder = self.get_first(self.window.folders()) 

    if not proj_folder: 
     sublime.status_message("No project folder located") 
     return default 

    return proj_folder   

def get_first(self, iterable, default=None): 
    if iterable: 
     for item in iterable: 
     return item 
    return default 

/RunApp.py 당신은 단지 당신의 Default.sublime-키 맵에 다음을 추가하여 명령 작업을 할 수 있습니다 최고의 솔루션이 아니지만 그것은 나를 위해 작동합니다.

+0

나는 내가 윈도우 시스템에서 작업하고 있다는 말을 잊어 버렸습니다. 그래서이 플러그인 Mac에서 작동하는지 모르겠습니다. – fboers

+0

거기에 어떤 업데이트가 있습니까? 나는 같은 문제가있다, 그것은 맥에서 작동 했습니까? – artSir

+0

미안하지만, 여전히 맥을 소유하고 있지 않습니다. 내가 아는 한 최신 개발 버전에도 이러한 기능이 포함되어 있지 않습니다. – fboers

0

여기를 검색하는 데 몇 시간을 보냈습니다. fboers 예제 덕분에 마침내 플러그인을 직접 만들 수있었습니다.

그래서 여기 내 솔루션입니다 : exec2이 - 모든 숭고한-변수를 확장간부에 전달합니다을하고 있어야한다.

이것을 Packages/Exec2/Exec2.py으로 저장하십시오. 키 바인딩에 대한

import sublime 
import sublime_plugin 

class Exec2Command(sublime_plugin.WindowCommand): 
    def run(self, cmd): 
     new_cmd = [sublime.expand_variables (value, self.window.extract_variables()) for value in cmd] 
     self.window.run_command("exec", {"cmd": new_cmd })  

예 :

{ "keys": ["ctrl+F7"], "command": "exec2", "args" : { "cmd": ["V:/v4_tools/v4Doccer.exe", "--mdi", "${file}"]} }, 
관련 문제