2013-06-24 1 views
2

VIM의 코드 주위에 코드 블록을 래핑 할 수 있습니까? 나는 다음 주위에 while 루프를 포장하려는 경우 예를 들어, 어떻게 닫는 중괄호를 추가하는 코드의 하단으로 스크롤하지 않고도 그것을 할 수는 :VIM의 코드 주위에 코드 블록 배치

if(z > y) 
{ 
    switch(x) 
    { 
     case 1: 
      addPoint(); 
      break; 
     case 2: 
      addValue(); 
      break; 
    } 
} 

이 코드의 모양을 것입니다 이후 같은 : Snipmate 같은

while (a > 10) 
{ 
    if(z > y) 
    { 
     switch(x) 
     { 
      case 1: 
       addPoint(); 
       break; 
      case 2: 
       addValue(); 
       break; 
     } 
    } 
} 
+0

"애프터"상태로주세요. 네가 원하는 것은 사소한 것 같지만 ... 미안보다 더 안전하다. – romainl

+0

@romainl이 (가) 편집되었습니다. –

+0

http://www.vim.org/scripts/script.php?script_id=1697 – Kevin

답변

1

당신은 정력 플러그인 surround.vim을 사용할 수 있습니다 대체합니다. 그것은 라인이나 단편을 블록으로 감쌀 수있게 해줍니다.

0

확인 뭔가, 그것은 그들이 SNIPPIT와 시각적으로 선택한 코드를 주변의 능력이 가능합니다.

http://www.vim.org/scripts/script.php?script_id=2540

snipMate 영상 선택 지원 {VISUAL}라는 특별한 자리가 있습니다. 시각적으로 텍스트를 선택한 경우 Vim 스위치를 눌러 삽입 모드로 전환하십시오. 당신이 확장됩니다 다음 조각은 선택한 텍스트에 의해 {VISUAL} 이전

4

빔에는 주변 시스템이 내장되어 있지 않습니다. 나는 Tim Pope의 우수한 surround 플러그인을 보았다. 그럼 당신은 당신이 할 수있는 if에 위치 가정 :

Vj%SBIwhile (a > 10) 
  • Vj% 블록 + 조건을 선택합니다.
  • SB
  • 새로 삽입 된 블록의 시작 부분에 루프의 텍스트를 삽입한다 (블록으로 판독 서라운드)를 {, }으로 선택된 텍스트를 둘러싼 다.

이렇게하려면 서라운드가 필요하지 않습니다. 평범한 바닐라 빔으로 할 수 있습니다.

Vj%>`]o}<esc>g;g;Owhile (a > 10)<cr>{<esc> 

그러나 나는 매우 편리한 플러그인이므로 서라운드를 선호합니다. 더 도움말을 참조하십시오

:

:h % 
:h g; 
:h `] 
+0

매우 유용합니다! 고맙습니다. –

0

당신은

:imap <S-F2> <Esc>j>>j>%%o<C-D>} 

는 주변의 코드를 여는 중괄호를 입력 한 후 매핑 된 키를 사용 :이 바닐라 빔 예컨대을 할 수있는 매핑을 만들 수 있습니다. <S-F2>을 원하는 키맵으로 변경해야한다는 말을하지 않고 이동합니다.키 시퀀스의


내역 :

Esc를는 : 일반 모드로 전환

J>> : 당신의 예제 if을에 (다음 행으로 커서를 이동 줄)을 들여 쓰십시오.

j는가>% : 거기에서 중괄호 일치에 if 들여 쓰기를 걸림쇠를 여는 행으로 이동 커서

% (커서가 다시 개구 괄호로 이동한다) 간다 if

o 닫는 중괄호 뒤에 새 줄을 추가하고 삽입 모드로 전환하십시오.

CTRL + D :내어 쓰기 (smartindent의 효과를 취소하기 위해)

}이 (당신의 예에서 while를) 서라운드 코드에 대한 닫는 중괄호를 추가


물론 다른 사람들이 추천하는 플러그인은 더 많은 기능을 가지고 있기 때문에 이들 플러그인을 살펴 봐야합니다.

+0

다시 이것은 매우 유용합니다. 질문에 대한 귀하의 공헌에 감사드립니다. –