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