Ruby begin-rescue 블록에서 현재 선택된 행 (비주얼 모드)을 감싸는 vimscript 함수를 작성하고 있습니다. 나는 이상한 행동을하고있다. 여기 제 기능입니다 :vimscript를 사용하여 텍스트 블록을 래핑하는 방법은 무엇입니까?
function! BeginRescueWrap()
execute "normal! gvd"
let head = "begin\<CR>"
let body = @"
let tail = "rescue StandardError =>e\<CR>binding.pry\<CR>end\<CR>"
execute "normal! i" . head . "\<CR>" . body . "\<CR>" . tail
endfunction
그것은 거의 그냥 어떤 이유로 머리와 꼬리의 두 복사본을 생성 works--. 이 텍스트를 선택하면 예를 들어, 기능을 실행 :
Oh lord won't you buy me a Mercedes Benz
My friends all drive Porsches, I must make amends
이 출력을 생성합니다 : 나는 들여 쓰기 걱정하지 않는다
begin
begin
rescue StandardError =>e
binding.pry
end
Oh lord won't you buy me a Mercedes Benz
My friends all drive Porsches, I must make amends
rescue StandardError =>e
binding.pry
end
(나중에 해결할 수 있습니다). 빈 내부 겹침과 대상 행을 포함하는 외부 줄 바꿈이 있음을 주목하십시오. 내가 도대체 뭘 잘못하고있는 겁니까?
두 줄로 실행되는 것 같습니다. – romainl