2016-09-14 60 views
1

我想要一些默認的文本,如:默認文本

#include <iostream> 
using namespace std; 
int main() 
{ 
    // code 
    return 0; 
} 

來,每當我打開一個.cpp文件中的Vim或Atom。我在各種論壇上搜索了很多,但除了Visual Studio之外找不到答案,但是不能找到Vim或Atom的答案。

+0

您可能想閱讀[爲什麼我不應該#include ?](http://stackoverflow.com/questions/31816095/why-should-i-not-include-bits-stdc -h) –

+0

@波佩爾鬆..謝謝你的鏈接....更新 –

回答

0

Vim有多個事件,其中如果創建一個新的文件或文件被打開,我們可以發現:

if has("autocmd") 
    au BufNewFile,BufRead *.cpp "Do something 
endif 

我們要檢查我們打開的文件是否爲空檢查,如果一個文件中有一個文件系統位置,讓我們把這個功能,以便更容易閱讀:

function! EmptyFile() 
    if (line('$') == 1 && getline(1) == '') 
     "Do something 
    endif 
endfunction 

我們想要做的最後一件事是插入根據現有文件中的一些模板:

function! LoadTemplate(template) 
    let fl = readfile(template) 
    call append('', fl) 
endfunction 

現在一切都在一起(你應該把它添加到您的.vimrc):

function! AddEmptyTemplate(template) 
    if (line('$') == 1 && getline(1) == '') 
     let fl = readfile(a:template) 
     call append('', fl) 
    endif 
endfunction 

if has("autocmd") 
    au BufNewFile,BufRead *.cpp call AddEmptyTemplate("cpp-template.cpp") 
    au BufNewFile,BufRead *.c call AddEmptyTemplate("c-template.c") 
endif 

這裏假設你有在文件夾中的文件Vim可以找到。

+0

謝謝,這有很大的幫助。 –

+0

雖然我遇到了一個問題....如果我把CPP模板放在某個文件夾(比如說家),那麼我無法訪問那個模板打開其他文件夾中的.cpp文件,除非我複製粘貼相同該文件夾中的模板 –

+2

用'BufRead,BufNewFile'試一試。每當你切換緩衝區時調用BufEnter,這絕對不是你想要的。 –

1

這就是片段的用途。使用一個片段插件,如UltiSnips。您還需要一組開頭的片段,例如vim-snippets