2013-08-07 69 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

我不認爲Sublime Text插件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

相關問題