之前在vim上尝试在过插件,一句话,很麻烦,很多问题,如果怕麻烦或者没有太多空闲时间,建议不要用,太浪费时间了.
如果你经常写c/c++ 代码的话会经常有一些固定的模板要多次写如,比如模板类,要写好多的template
先介绍功能:(注意:这些自定义命令在编辑是输入即插入模式输入的,并且输入的要快,快,快,说三遍了啊)
1.括号的自动匹配生成(vim只能写一个,而sublime可以在写了左括号后自动匹配右括号)
自动匹配并且光标在括号中间(此处可以匹配小,中,大三种括号)
2.生成/**/
3.输入#def 生成#define
4.输入#in 生成#include<>光标在括号之间
5.输入np 生成using namespace std;
6.输入nf生成头文件定义模板
#ifndef xxxx
#define xxxx
//代码段
#endif
7.按ctrl+A 全选,ctrl+c复制,ctrl+v粘贴,这里不建议用后两个,建议用y和p
8.输入class生成 输入st和空格生成 输入tp和空格生成
class ClassName{ struct | { template
};//默认选中类名方便更改 };//光标默认在红色竖线处
9.输入if ,ife,while,do,switch,try,mian都会生成对应模板
10.输入fn 和空格会生成函数声明信息注解方便作者书写
11.ctrl + R会编译运行c,c++,java,python文件
代码教程:
在vim的匹配中除了插件外,一般有ctrl+p,ctrl+n 或者字典匹配ctrl+x ctrl+k等,这里可以自行百度
http://haoxiang.org/2011/09/vim-modes-and-mappin/,这个比较详细
在vim中也可以写vimsrcipt脚本,这里我介绍一下map命令,网上的解释很多,我就不赘述了.我就简单解释一下代码中的语法.
map a b 意思是在命令模式下按a的效果与b的效果相同
举个栗子:map a :!ls 按a就会显示当前目录下的文件列表
inoremap 是插入模式在非递归map,就是在插入模式下可以讲文本当命令用
举个栗子:inoremap a hello 意思是在输入时输入a就会被替换为hello,
inoremap a
看到这你应该就明白其实就是给命令在不同模式下起个名字
代码:你可以将下列代码复制到当前用户下的 .vimrc文件中,也可以直接写在/etc/vim/vimrc文件中
"user design start
inoremap ( ()
inoremap [ []
inoremap { {}
inoremap<> <>
inoremap /* /**/
inoremap #def #define
inoremap #in #include <>
inoremap np
inoremap nf #ifndef
map
"map
"map
inoremap class class ClassName {
inoremap st
inoremap tp
inoremap if if () {
inoremap ife if () {
inoremap while while(){
inoremap do do{
inoremap try try{
inoremap for for(int i = 0;i < len; ++i){
inoremap switch switch(){
inoremap main int main(int argc, char* argv[]){
inoremap fn
"user design strat
"compile star
function CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o %<"
exec "!./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "!./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
elseif &filetype == 'python'
exec "!python %"
endif
endfunction
map
"compile end