我不知道在这里提出这个问题是否正确。我是编程热心,最近开始竞争性编程。我最近遇到的问题是我每天要输入几乎25次的整个代码。
#include <iostream>
//other headers or macros go here
using namespace std;
int main(){
return 0;
}
我在谷歌搜索过这个问题,但无法找到答案。虽然它不是一个编程问题,但是有很多有竞争力的编码人员使用vim或VI作为他们的默认文本编辑器,并且会因为知道这个问题的答案而受益。
如果你建议的方法不会因为很大的因素而减缓vim的开放,那就更好了 谢谢
答案 0 :(得分:2)
您可以创建一个宏/ abbr来为您执行此操作,但您也可以将其设置为autocmd
以写入特定类型的文件。可能有更好的方法来执行此操作,但这只是您必须包含在.vimrc
autocmd FileType c call IoStream()
fu! IoStream()
if line("$") == 1
call append(0, "#include <iostream>")
call append(1, "")
call append(2, "//other headers or macros go here")
call append(3, "")
call append(4, "using namespace std;")
call append(5, "")
call append(6, "int main(){")
call append(7, " return 0;")
call append(8, "}")
endif
endfu
答案 1 :(得分:1)
1-您可以使用vim-templates
plugin。安装后,您必须使用:Template *.c
加载c
语言的模板。
2-第二种方法是使用au
命令:(您可以在.vimrc
文件下面添加命令)
au BufNewFile *.c 0r ~/.vim/contest.c | let IndentStyle = "c"
au BufNewFile *.cpp 0r ~/.vim/contest.cpp | let IndentStyle = "cpp"
答案 2 :(得分:0)
要以更通用的方式解决此问题,我建议您保留经常使用的代码段,尝试使用vim-snippets
插件:
https://github.com/honza/vim-snippets
https://github.com/garbas/vim-snipmate
您也可以简单地复制skeleton.c
文件,但这不像代码片段那样方便
答案 3 :(得分:0)
如果您只想快速输入一些模板化代码,则无需安装任何额外的插件。只需在.vimrc
中使用插入模式缩写。
:iab CPPMAIN
\#include <iostream><CR>
\<CR>
\using namespace std;<CR>
\<CR>
\<CR>int main(){
\<CR>
\<CR>}
如果你把它放到你的.vimrc
中,每当你处于插入模式并键入字符串CPPMAIN
后跟回车符时,它将替换为模板。
答案 4 :(得分:0)
片段就像类固醇上的内置:abbreviate
一样,通常带有参数插入,镜像和内部多个停止。第一个非常着名(并且仍然广泛使用)的Vim插件之一是snipMate(受 TextMate 编辑器的启发);不幸的是,它不再维持;虽然有a fork。现代替代方案(虽然需要Python)是UltiSnips。还有更多内容,请参阅this list on the Vim Tips Wiki。
有三件事要评估:第一,摘录引擎本身的功能,第二,作者或其他人提供的片段的质量和广度;第三,添加新片段是多么容易。