VIM으로 새 파일을 만들 때 몇 가지 골격 코드를 자동으로 추가하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/162617

  •  03-07-2019
  •  | 
  •  

문제

VIM으로 새 파일을 만들 때 스켈레톤 코드를 자동으로 추가하고 싶습니다.

예를 들어 새 XML 파일을 만들 때 첫 번째 줄을 추가하고 싶습니다.

  <?xml version="1.0"?>

또는 HTML 파일을 만들 때 다음을 추가하고 싶습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>
도움이 되었습니까?

해결책

컨텍스트 또는 사용자 선택에 해골을 조정하려면 나열된 Template-Expander 플러그인을 살펴보십시오. vim.wikia

다른 팁

나는 내 .VIMRC에서 이런 것을 얻었다 :

au BufNewFile *.xml 0r ~/.vim/xml.skel | let IndentStyle = "xml"
au BufNewFile *.html 0r ~/.vim/html.skel | let IndentStyle = "html"

그리고 당신이 필요로하는 모든 것.

~/vim/skeleton.xml과 같은 스켈레톤/템플릿을 파일에 저장할 수 있습니다.

그런 다음 다음을 .VIMRC에 추가하십시오

augroup Xml
    au BufNewFile *.xml 0r ~/vim/skeleton.xml
augroup end

지갑에 대해 죄송하지만, 나는 길을 느낍니다. 내가한다 일부 사람들에게 유용 할 수 있습니다. 파일의 파일 유형을 사용하여 더 기존의 방법보다 짧고 역동적입니다. VIM 7.3에서만 테스트되었습니다.

if has("win32") || has ('win64')
    let $VIMHOME = $HOME."/vimfiles/"
else
    let $VIMHOME = $HOME."/.vim/"
endif

" add templates in templates/ using filetype as file name
au BufNewFile * :silent! exec ":0r ".$VIMHOME."templates/".&ft

Python 스크립팅을 사용하는 두 가지 예는 다음과 같습니다.

.vimrc 또는 .vimrc에서 소스 한 다른 파일에 이와 같은 것을 추가하십시오.

augroup Xml
  au BufNewFile *.xml :python import vim
  au BufNewFile *.xml :python vim.current.buffer[0:0] = ['<?xml version="1.0"?>']
  au BufNewFile *.xml :python del vim
augroup END

fu s:InsertHtmlSkeleton()
  python import vim
  python vim.current.buffer[0:0] = ['<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', "<html>", "<head>", "  <title></title>", "</head>", "<body>", "", "</body>", "</html>"]
  python del vim
endfu

augroup Html
  au BufNewFile *.html call <SID>InsertHtmlSkeleton()
augroup END

파일을 읽거나 작성할 때 다양한 후크를 추가 할 수 있습니다. 에게

:help event

그리고 거기에 무엇이 있는지 읽으십시오. 당신이 원하는 것은

:help BufNewFile

Snipmate 와도 작동 할 수 있습니다.

augroup documentation
    au!
    au BufNewFile *.py :call ExecuteSnippet('docs')
augroup END

function! ExecuteSnippet(name)
    execute "normal! i" . a:name . "\<c-r>=TriggerSnippet()\<cr>"
endfunction

"문서"를 사용하여 스 니펫이 트리거됩니다.

멀티 스냅 펫과 함께 작동하지만 : 메시지 창이 나타나고 번거 롭습니다.

HTML 용 플러그인을 썼습니다.

VIM 스크립트 : http://www.vim.org/scripts/script.php?script_id=4845

github : https://github.com/linuscl/vim-htmltemplate

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top