2012-03-15 2 views
1

vim에 AutoClose 플러그인을 사용하고 있으며 내 <%%>으로 닫을 수 있지만 내 커서를 닫을 때 % 중간에 사용자 정의 기능을 추가하려고했습니다. 그리고 > 따라서 화살표 키로 돌아 가야합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?사용자 정의 AutoClose vim 플러그인

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

티아고 알베스 여기에서 나는 자동 종료 플러그인을 사용하고 있습니다 : 지금 나는 autoclose.vim 파일에이 라인이 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

관련 문제