我经常想使用STL函数和容器,我发现自己必须手动添加:
#include <vector>
using std::vector;
到文件的开头。是否有人知道vim插件或命令行程序会自动执行此类操作?
答案 0 :(得分:5)
可能,但我不推荐它。并且#include <vector>
并不难打字。
也许您开始太多项目未完成或使用太多不同的文件?
最后,更多的是偏好,我更喜欢使用std::vector
而不是vector
,因为那时我确定我的意思,即标准向量。
您似乎是一名初学者,认为您可以使用using namespace std;
&amp; co,但请相信我,你不要。 请不要将此视为冒犯,只是提示。
答案 1 :(得分:5)
首先需要编写一个.cpp文件,其中包含您通常需要的所有标题。
我看起来像这样,
#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long int ll;
int main(void) {
return 0;
}
现在将此行添加到您的vimrc文件
autocmd BufNewFile *.cpp r /path/to/template.cpp
现在每次打开.cpp文件时,您都会拥有预先编写的所有内容。
答案 2 :(得分:4)
一旦你开始想从vim那里得到一些奇特的IDE行为,这是一场相当艰难的战斗,特别是一旦它需要代码解析。
你应该决定什么对你来说更重要,使用vim作为编辑,或者获得编码帮助。如果前者对你更重要,坚持使用vim;否则,请考虑使用Eclipse或NetBeans这样一个不错的IDE来命名。
NetBeans和Eclipse都有插件可以在某种程度上模拟vim。 NetBeans有:
Eclipse有:
答案 3 :(得分:2)
在开始使用emacs之前,我曾经在.vimrc中使用以下四个键盘映射:
nmap _i I<C-m><Esc>kI#include ""<Esc>$i
imap <C-z>i <Esc>_i
nmap _I I<C-m><Esc>kI#include <><Esc>$i
imap <C-z><C-i> <Esc>_I
第一个, _ i 在命令模式下将#include ""
插入上面的行,并在插入模式下将光标留在引号内。第二个是插入模式相同,但我不知道为什么我使用 CTRL-Z 作为命令前缀。第二对用于系统头。你使用 I 而不是 i 来获得那个。
我建议您使用可以在更多地方使用的内容而不是仅用于矢量的专用内容,但您可以轻松更改上面的内容以使用键盘地图插入所需的代码段。
答案 4 :(得分:2)
" the sixth line contains a model
augroup lang_cpp
au!
au BufNewFile,BufRead *.cpp set ft=cpp
au FileType cpp set omnifunc=omni#cpp#complete#Main
au FileType cpp let OmniCpp_MayCompleteScope = 0
au BufNewFile *.cpp 0r ~/.vim/skel/cpp.skel
au
答案 5 :(得分:1)
lh-cpp代码段可以自动包含所需的标头。例如,如果您在vect
完成,则会看到std::vector<|>
已展开,#include <vector>
已添加(如果尚未添加)。
然而,在他看来,它无法看到<vector>
已经包含在另一个包含的文件中。
答案 6 :(得分:0)
我发现3个vim插件自动包含c ++标头。