새 vim 파일에 스켈레톤 텍스트를 어떻게 추가합니까?


9

나는 C ++을 작성하기 위해 Vim을 사용하고 있으며 #include<>, 내가 만드는 각각의 새로운 파일에 포함시켜야 할 문장, 의견 등 이 꽤있다 . 추가했습니다

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) 

내 vimrc에 필요한 텍스트가 포함 된 버퍼를 생성한다고 들었 기 때문에. 이 텍스트를 새 파일에 추가하려면 어떻게합니까? 버퍼에서 이것을 수행하는 쉬운 방법이 있습니까, 아니면 이것을 수행하는 또 다른 쉬운 방법이 있습니까? 템플릿 플러그인에 대해서도 조금 들었습니다. 나를 위해 이것을 할 수있는 매우 간단한 것이 있습니까?


1
이것을 추가 autocmd하고 스켈레톤 파일을 만든 후 새 C ++ 파일을 편집 해 보셨습니까 ?
muru

1
확장자가 .cpp 인 새 파일을 만들고 Vim으로 편집 해 보았습니다. 편집을 위해 열었을 때 여전히 비어 있습니다. 다른 단계가 필요합니까?
electriccello

2
아니요, 이미 포함 된 스켈레톤 파일의 내용을 보았을 것입니다. 수동으로 실행하면 어떻게 :r C:\(full file path of skeleton text file)됩니까? 오류가 있습니까?
muru

3
@electriccello 아, :enew작동하지 않지만 :e newfile.cpp경우에 작동합니다 newfile.cpp(심지어 비어있는 경우) 이미 존재하지 않았다.
muru

5
:enew작동하지 않는 이유 는 이름이없는 새 버퍼를 편집 한 다음 .cpp 파일로 저장하기 때문입니다. BufNewFile대상 파일 이름으로 새 파일을 편집하는 경우에만 트리거됩니다.
fruglemonkey

답변:


6

줄을 삽입하여 기존 파일의 골격 텍스트를 새 파일에 추가 할 수 있습니다

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file)

vimrc에. BufNewFile새로운 파일을 사용하여 두 단계로 생성 된 경우 이벤트가 작동하지 않습니다 :enew다음 :sav filename. 대신, 새 파일을 사용하여 작성 하면 vimrc에서 이벤트의 자동 명령이 :e filename트리거 BufNewFile되어 골격 텍스트 파일의 내용이 새로 작성된 파일에 추가됩니다.


1
도 참조하십시오 :help template.
Martin Tournoij

.vimrc혼잡 을 피하기 위해 ~/.vim/계층 구조에 다른 위치가 있습니까?
Santosh Kumar

또한 새 파일 맨 위에 빈 줄이 추가됩니다.
Santosh Kumar

5

실제로 템플릿 확장기 플러그인이이 작업에 도움이됩니다. :read템플릿 익스팬더 플러그인의 0 단계입니다.

예를 들어 mu-template 은 foo.h가 감지되면 foo.cpp에서 foo.h를 포함 시키려고 시도합니다. 또한 동적 데이터가 포함 된 헤더 (날짜, 작성자, 라이센스 / 저작권 등)를 확장 할 수 있습니다.


1

모든 파일 유형에 대한 기본 스켈레톤을 설정하고 특정 프로젝트에 맞게 사용자 정의하려면 다음을 수행하십시오.

function! s:load_skeleton(type)
  " do nothing if no filetype
  if empty(a:type) | return | endif

  " glob every directory of rtp to search for skeleton/filetype
  let skeletons = globpath(&rtp, 'skeleton/' . a:type, 0, 1)
  if empty(skeletons) | return | endif

  " read last skeleton into 1st line.
  exe '0read ' . skeletons[-1]
endfunction

augroup aug_skeleton
  au!

  " BufNewFile event is trigged when you edit a new file.
  autocmd BufNewFile * call s:load_skeleton(&filetype)
augroup end

기본 스켈레톤을 ~/.vim/skeleton(예 : ~/.vim/skeleton/vim,)에 넣습니다 ~/.vim/skeleton/sh.

프로젝트 특정 스켈레톤을 아래에 놓습니다 balabala/project/.vim/skeleton. 만큼 ~/.vim나타나기 전에 balabala/project/.vim에서 :h rtp, balabala/project/skeleton/골격 디렉토리로 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.