2013-04-11 63 views
4

我希望能夠對已有的單字母標記設置額外的標記。因此,我可以解決兩個problemes我目前面臨:我可以用vim創建無限制的標記嗎?

  1. 標記在腳本設置,我不想破壞那些已經由腳本的用戶設置標誌

  2. 我可以設置無限數量的標記,這樣我就不必數它們了(我會將它們命名爲"script_mrk_" . s:mark_count)。

所以,如果表現爲函數調用,我可能尋找的東西

setPrivateMark(l:mark_name, l:line, l:pos) 

let line_pos = getPrivateMark(l:mark_name) 

當然,解決方案應該是改變上述緩衝性將其設置爲setPrivateMark之後和getPrivateMark(...)之前的標記。

有這樣的事嗎?

+0

你說這些標記是在腳本中設置的;出於什麼目的?作爲一個經驗法則,如果你的腳本設置了標記,那麼可能會有更好的方法。 – 2013-04-11 13:44:15

+0

目前,標記是成對出現的。一個標記開始,另一個標記結束代碼中的「特殊」部分,這些部分在調用各種函數時要採用不同的方式。 – 2013-04-11 13:59:20

+0

您是否考慮使用自定義語法來完成此操作?聽起來這可能是完美的工作,取決於如何定義這些代碼段。 – 2013-04-11 14:05:27

回答

2

Vim只更新其內置標記在更改上的位置;如果您需要該功能,則必須使用這些功能,並且僅限於現有標記的數量。

有沒有辦法解決這個問題;對於簡單的用戶編輯,您可以掛入CursorMovedI事件並調整您的錄製位置,但無法掛接Ex命令,如:append

如果您需要插件的幾個標記,最好允許用戶配置腳本使用的標記(例如,通過g:MyPlugin_UseMarks變量);幾乎沒有人總是使用所有的標記,但不同的人有不同的喜好。

+0

+1無論發生什麼樣的問題,你總能給出有見地的答案! – Kent 2013-04-11 13:04:03

0

無限標記我不知道,但你可以創建一個字典類型,鍵是你的「標記」名稱,值是光標的位置。

位置可以得到和

getpos() and setpos() 

設置或者你想實際的代碼?

+0

那麼,如果用戶在用'getpos()'評估的座標上面插入或刪除線,座標將不再準確 – 2013-04-11 12:25:33

+0

這是真的......所以你需要**真實**標記,而不是標記只用於你的腳本.. – Kent 2013-04-11 12:28:21

+0

是的。用戶在腳本中調用設置或修改專用標記的功能,腳本返回,用戶編輯緩衝區(以及使用更改後的文本的專用標記流)和*然後*用戶再次調用腳本,這是腳本需要先前設置的標記。 – 2013-04-11 12:30:33

相關問題