2012-03-15 126 views
1

我正在使用Vim的AutoClose插件,我試圖添加我自己的自定義功能,它將關閉我的<%%>,但現在當它關閉時,我的光標被放置在%的中間和>因此我必須回到方向鍵。有誰知道如何解決這一問題?現在,我有這條線在autoclose.vim文件:自定義AutoClose vim插件

let s:charsToClose = {"<% ": " %>", "<%= ": " %>"} 

我使用自動關閉插件由蒂亞戈·阿爾維斯在這裏找到:http://www.vim.org/scripts/script.php?script_id=2009

+0

哪個自動關閉?有幾個和一些有相同的名字。 – 2012-03-15 19:05:08

+0

@AndrewMarshall http://www.vim.org/scripts/script.php?script_id=2009 – trev9065 2012-03-15 19:16:22

+0

我認爲這是硬編碼去左邊的1個字符(見第75行),但你需要去2個字符左邊。您可以添加一個if-else來查看替換對的正確成員是由2個字符還是1組成。 – romainl 2012-03-15 20:22:29

回答

0

這是一個有點粗糙,但它在這裏工作。

從加入您的成對

let s:charsToClose = {'(': ')', '{': '}', '[': ']', '"': '"', "'": "'","<% ": " %>", "<%= ": " %>"} 

改線後,75:

let l:result .= s:charsToClose[a:char] . "\<Left>" 

到:

if len(a:char) > 1 
    let l:result .= s:charsToClose[a:char] . "\<Left>\<Left>\<left>" 
else 
    let l:result .= s:charsToClose[a:char] . "\<Left>" 
endif 
+0

也許給'let l:result。= s:charsToClose [a:char] .repeat(「\ 」,len(split(a:char,'\ v。@ =')))'? – ZyX 2012-03-17 09:40:15

+0

順便說一下,[最新開發版本](https://github.com/Townk/vim-autoclose)根本沒有's:charsToClose'變量,引用腳本的腳本頁描述'g:AutoClosePairs'。不過,使用'g:AutoClosePairs'時插件確實有另一個錯誤。 – ZyX 2012-03-17 09:43:16

+0

謝謝,ZyX,好多了。 – romainl 2012-03-17 09:44:22