2013-08-07 2 views
1

Sublime Text 빌드 시스템을 플러그인으로 이식하려고합니다.현재 파일에서 Sublime Text 플러그인 검색 및 바꾸기

빌드 시스템은 현재 파일을 수신 할이 코드로 통과 : 지금

for line in fileinput.input(inplace=1): 
    sys.stdout.write(makeReplacements(line)) 

플러그인 구문에 내 현재 파일의 내용을 얻을 수있는 방법이 있다는 사실을 이동 :

input = self.view.substr(
    sublime.Region(0, self.view.size()) 
) 

하지만 이제 다음 작업에 대해 어떻게해야할지 잘 모르겠습니다.

for line in input(inplace=1): 

어떻게 만들 수있는 온 - 더 - 플라이 파일에서 교체 한 후 저장?

답변

0

@RazerM에서 설명한대로 첫 번째 인수는 파일 경로 여야합니다. 그래서 나의 예를 들어,이 작동합니다.

for line in fileinput.input(self.view.file_name(), inplace=1): 
    sys.stdout.write(self.makeReplacements(line)) 
1

서브 클래임 텍스트 플러그인 API가 버퍼를 저장할 수 있다고 생각하지 않지만 sublime.View class에서 file_name() 메서드를 사용하고 파일을 직접 사용할 수 있습니다.

@MattDMo에서 설명한대로 view.run_command('save')을 사용하여 파일을 저장할 수 있습니다.

이전 빌드 파일을 사용하면 파일 이름을 사용하는 것이 더 쉬울 수 있습니다.

+0

사실이 아닙니다. 플러그인을 통해 파일을 저장하는 예제는'Packages/Default/save_on_focus_lost.py'를보십시오. – MattDMo

+0

저장하는 방법은 설명되어 있지만 현재 행을 바꾸기 위해 출력하는 방법은 무엇입니까? 'inplace = 1'과'sys.stdout.write (makeReplacements (line))'는 작동하지 않는 것 같습니다. 변수에 각 행을 저장하고 뷰의 내용을 바꾸고 저장해야합니까? –

+0

[fileinput] (http://docs.python.org/2/library/fileinput.html) 문서는 첫 번째 매개 변수 인 fileinput.input (filename)으로 파일을 전달해야 함을 나타냅니다. 기본적으로 첫 번째 명령 줄 인수를 사용하기 때문에 이전에 작동했습니다. – RazerM