2012-03-15 10 views
1

私はvimにAutoCloseプラグインを使用していますが、を%>と閉じる私の独自のカスタム機能を追加しようとしていましたが、現在カーソルが閉じるときにカーソルが%>したがって、私は矢印キーで戻ってくる必要があります。誰もがこれを修正する方法を知っていますか?今、私はautoclose.vimファイルに次の行をしている:ここで見つけるカスタムAutoClose vimプラグイン

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

私はチアゴ・アウベスによってオートクローズプラグインを使用しています:http://www.vim.org/scripts/script.php?script_id=2009

+0

オートクローズから

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

変更ライン75へのあなたのペアを追加した後

?いくつかはいくつかあり、いくつかは同じ名前を持っています。 –

+0

@AndrewMarshall http://www.vim.org/scripts/script.php?script_id=2009 – trev9065

+0

私はそれが1文字左に行こうとしていると思いますが(75行目を参照)、2文字を必要とします左。あなたは、置換ペアの右のメンバーが2文字または1で構成されているかどうかを確認するためにif-elseを追加することができます。 – romainl

答えて

0

は、これは少し荒いですが、それはここで動作します。

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:result。= s:charsToClose [a:char] .repeat(" \ "、len(split(a:char、 '\ v。@ =')))'? – ZyX

+0

BTW、[最新の開発版](https://github.com/Townk/vim-autoclose)には 's:charsToClose'変数はまったくなく、参照されるスクリプトのスクリプトページには' g:AutoClosePairs'が記述されています。同じ内容の 'g:AutoClosePairs'を使用すると、プラグインに別のエラーが発生します。 – ZyX

+0

ありがとう、ZyX、はるかに良い。 – romainl

関連する問題