2010-01-26 2 views
4

여기에 몇 가지 실이 있지만 3 살입니다.Vim 플러그인 도움말 : 커서를 중간에 넣은 상태에서 자동으로 닫는 브라켓 삽입

{ 
::cursor here:: 
} 

또 다른 유용한 것은 내가 if를 입력하면 그것을 할 것입니다 : 아무도 내가 { 를 입력 할 때 할 것 정력을 위해 추천하는 플러그인이 있나요

if(::cursor here::) 

감사를

+0

은 그 플러그인 (바람직하게는 보편적 인)에 대해 궁금합니다. 지금은'{} <^O> O'라고 입력하여 동일한 효과를 얻었습니다. – MBO

+0

이것이 Bash와 어떤 관련이 있습니까? –

답변

2

snipMate 플러그인을 확인하십시오. 그것은 매우 사용자 정의 할 수 있습니다. 작동중인 플러그인을 보여주는 훌륭한 screen-cast가 있습니다.

예를 들어 snipMate 플러그인이있는 C에서.

if<Tab> 

would produce: 

if (::cursor:1::) { 
    ::cursor:2:: 
} 

먼저 < 탭 >은 :: 커서 커서를 떠날 것이다 : 1 :와 두 번째 < 탭 > 커서를 ::에 당신을 데려 갈 것이다 : 2 ::.

snipMate에서 bash 스크립트와 유사한 것이 있어야합니다. 그렇지 않으면 매우 간단합니다.

+0

매우 유용합니다. 위와 같은 트리거를 설정하더라도 문제가있는 것 같습니다 (for 문을 필요로하지 않고) 행운을 빌었습니까? 아니면 제공된 스 니펫을 가지고 있습니까? – stormist

+0

나는 보통 기본값을 사용합니다. 하지만 "{"에 대한 스 니펫을 추가하려고했는데 작동했습니다. ~/.vim/snippets/sh.snippets (쉘 스크립팅 스 니펫)에이 스 니펫 http://vim.pastey.net/132128을 추가했습니다. – shoban

1

다음 코드 (php-templates)를 사용합니다.

function! EatChar() 
    let l:char=getchar(0) 
    return '' 
endfunction 

inoreabbrev function_ function <ESC>maa()<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev if_ if (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev ifelse_ if (<ESC>maa)<CR>{<CR><CR>}<CR>else<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev for_ for (<ESC>maa; ;)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev foreach_ foreach (<ESC>maa as $key=>$value)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev while_ while (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR> 
inoreabbrev <? <?php <ESC>maa ?><ESC>`aa<C-O>:call EatChar()<CR> 
1

This article은 간단한 솔루션을 보여 주며 더 견고한 일부 링크를 제공합니다.

inoremap {  {}<Left> 
inoremap {<CR> {<CR>}<Esc>O 
inoremap {{  { 
inoremap {}  {} 
1

이 일을 많은 플러그인과 ftplugins 있습니다

여기에 해당 페이지에서 솔루션의 일부입니다. 대부분의 경우 플러그인은 종종 이상한 경우를 고려하지 않고 바퀴를 다시 발명하기 때문에 더 좋지 않습니다. "오래된"물건에

, 나는이 :

괄호 같은 문자의 균형 쌍을 삽입하기위한 매핑의 정의를 단순화
  • My code bracketing system.
  • related functions은 진화 된 (*) 코드 스 니펫 (일반적으로 제어문)을 정의하는 작업을 단순화하는 데 목적이 있습니다. C++에 대한 사용 예가 있습니다.

(*) 주석/문자열 컨텍스트에서 확장/축소가 금지되어 있으면 C 제어문의 여러 가지 주변 양식이 제공되며 몇 가지 문체 옵션도 지원됩니다 (C 제어 문, 다른 언어로 쉽게 옮겨 쓸 수 있음)

3

나는 delimiteMate.vim을 사용합니다. 이것은 구성 가능하고 비 귀찮은 방식으로 이것을 처리합니다.

0

다양한 텍스트 스 니펫 플러그인이 필요하지 않거나 필요에 맞게 구성하지 않으려 고 간단한 템플릿을 몇 개만 사용하면 그것의 생성을 기록하고 바로 가기에 매핑하십시오.예를 들어

,

:nmap <leader>b o{<cr>}<esc>O