2013-11-02 56 views
-1

我爲sublme text 3開發插件。我需要獲得最接近遊標字的代碼。離光標字最近的代碼

例如,如果我得到的遊標,圖像...

how to get nearest to cursor word

...這個插件應該返回字run

....或者至少數10對應位置char u in line 4

然後我就可以從號碼得到word run 10和文本行4

但現在我只能得到linetext上,我得到了光標:

import sublime, sublime_plugin 

class line_nearest_to_cursor_wordCommand(sublime_plugin.WindowCommand): 
    def run(self):    
     print('line_nearest_to_cursor_word called') 
     view = self.window.active_view() 
     region1 = view.sel()[0] 
     line = view.line(region1) 
     linetext = view.substr(line) 
     print(linetext) 

當我打印region1它給出了兩個數字,但他們是奇怪的:

print (region1) # prints (113, 113), but 113 is not position of char "u" in line " def run(self):" 

所以問題以書面形式記錄方法getXcoordPositionOnLine ...

xCoord = getXcoordPositionOnLine(region1) 
    print xCoord 

..這會給我一個光標在線的位置。

或者也許有更好的解決方案。

回答

2

昨天我回復了a similar question。看看這些文檔,如果你在昨天的回答中簡單地用word代替line,我相信你會得到你正在尋找的東西。

view = self.window.active_view() 
word = view.word(view.sel()[0]) 
wordtext = view.substr(word) 

正如@skuroda所示,通過查看文檔可以輕鬆解決這個問題。這並不難理解。

1

雖然我想格式化還有些問題,但請嘗試查看API文檔。通過瀏覽文檔可能會回答大量您的問題。這些可用於ST3的here。有鑑於此,請參閱文檔中的view#word(point)view#word(region)

1

這裏就是我想region1(113, 113)手段,你如何能夠使用它的API來獲取你想要的東西,或者至少爲你提供足夠的信息,以便能夠寫東西像getXcoordPositionOnLine()功能自己。

API documentation說,一個sublime.Region具有兩個屬性,ab,它代表所述第一和第二端部區域。我相信這些只是從文本緩衝區開始的兩個整數偏移量,在這種情況下它們相同的原因是因爲該區域是空的(即沒有字符實際上被它選中,因爲它們是相同的值,這意味着它實際上是遊標的位置)。

爲了說明下面是在另一個編輯器中的問題中顯示的代碼片段的屏幕截圖,其中我從中選擇了從字面上的「r」和「u」之間的所有文本「跑」。該編輯器在右下角附近有一個指示符,顯示當前選中的字節/行的總數。請注意,這是顯示113/4 - 意思是「r」是文本緩衝區中的字符,因爲它前面有3個新行字符,所以它的行號是和。

screenshot of the code snippet shown another editor sublime.Region S還擁有XPOS屬性,它聽起來就像是表示由最後換行符的偏移量的字符(並會在這種情況下,我想有點像10)。進一步閱讀文檔使我懷疑你可能能夠從region1代表光標所代表的最接近單詞view.substr(view.word(region1)返回的值。

+0

謝謝澄清 –