diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim
new file mode 100644
index 0000000..8cd8e97
--- /dev/null
+++ b/vim/autoload/pathogen.vim
@@ -0,0 +1,264 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope
+" Version: 2.4
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
+" .vimrc is the only other setup necessary.
+"
+" The API is documented inline below.
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a relative path to invoke
+" pathogen#interpose() or an absolute path to invoke pathogen#surround().
+" Curly braces are expanded with pathogen#expand(): "bundle/{}" finds all
+" subdirectories inside "bundle" inside all directories in the runtime path.
+" If no arguments are given, defaults "bundle/{}", and also "pack/{}/start/{}"
+" on versions of Vim without native package support.
+function! pathogen#infect(...) abort
+ if a:0
+ let paths = filter(reverse(copy(a:000)), 'type(v:val) == type("")')
+ else
+ let paths = ['bundle/{}', 'pack/{}/start/{}']
+ endif
+ if has('packages')
+ call filter(paths, 'v:val !~# "^pack/[^/]*/start/[^/]*$"')
+ endif
+ let static = '^\%([$~\\/]\|\w:[\\/]\)[^{}*]*$'
+ for path in filter(copy(paths), 'v:val =~# static')
+ call pathogen#surround(path)
+ endfor
+ for path in filter(copy(paths), 'v:val !~# static')
+ if path =~# '^\%([$~\\/]\|\w:[\\/]\)'
+ call pathogen#surround(path)
+ else
+ call pathogen#interpose(path)
+ endif
+ endfor
+ call pathogen#cycle_filetype()
+ if pathogen#is_disabled($MYVIMRC)
+ return 'finish'
+ endif
+ return ''
+endfunction
+
+" Split a path into a list.
+function! pathogen#split(path) abort
+ if type(a:path) == type([]) | return a:path | endif
+ if empty(a:path) | return [] | endif
+ let split = split(a:path,'\\\@]','\\&','')
+ endif
+endfunction
+
+" Like findfile(), but hardcoded to use the runtimepath.
+function! pathogen#runtime_findfile(file,count) abort
+ let rtp = pathogen#join(1,pathogen#split(&rtp))
+ let file = findfile(a:file,rtp,a:count)
+ if file ==# ''
+ return ''
+ else
+ return fnamemodify(file,':p')
+ endif
+endfunction
+
+" vim:set et sw=2:
diff --git a/vim/colors/molokai.vim b/vim/colors/molokai.vim
new file mode 100644
index 0000000..6d97053
--- /dev/null
+++ b/vim/colors/molokai.vim
@@ -0,0 +1,276 @@
+" Vim color file
+"
+" Author: Tomas Restrepo
+" https://github.com/tomasr/molokai
+"
+" Note: Based on the Monokai theme for TextMate
+" by Wimer Hazenberg and its darker variant
+" by Hamish Stuart Macpherson
+"
+
+hi clear
+
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="molokai"
+
+if exists("g:molokai_original")
+ let s:molokai_original = g:molokai_original
+else
+ let s:molokai_original = 0
+endif
+
+
+hi Boolean guifg=#AE81FF
+hi Character guifg=#E6DB74
+hi Number guifg=#AE81FF
+hi String guifg=#E6DB74
+hi Conditional guifg=#F92672 gui=bold
+hi Constant guifg=#AE81FF gui=bold
+hi Cursor guifg=#000000 guibg=#F8F8F0
+hi iCursor guifg=#000000 guibg=#F8F8F0
+hi Debug guifg=#BCA3A3 gui=bold
+hi Define guifg=#66D9EF
+hi Delimiter guifg=#8F8F8F
+hi DiffAdd guibg=#13354A
+hi DiffChange guifg=#89807D guibg=#4C4745
+hi DiffDelete guifg=#960050 guibg=#1E0010
+hi DiffText guibg=#4C4745 gui=italic,bold
+
+hi Directory guifg=#A6E22E gui=bold
+hi Error guifg=#E6DB74 guibg=#1E0010
+hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold
+hi Exception guifg=#A6E22E gui=bold
+hi Float guifg=#AE81FF
+hi FoldColumn guifg=#465457 guibg=#000000
+hi Folded guifg=#465457 guibg=#000000
+hi Function guifg=#A6E22E
+hi Identifier guifg=#FD971F
+hi Ignore guifg=#808080 guibg=bg
+hi IncSearch guifg=#C4BE89 guibg=#000000
+
+hi Keyword guifg=#F92672 gui=bold
+hi Label guifg=#E6DB74 gui=none
+hi Macro guifg=#C4BE89 gui=italic
+hi SpecialKey guifg=#66D9EF gui=italic
+
+hi MatchParen guifg=#000000 guibg=#FD971F gui=bold
+hi ModeMsg guifg=#E6DB74
+hi MoreMsg guifg=#E6DB74
+hi Operator guifg=#F92672
+
+" complete menu
+hi Pmenu guifg=#66D9EF guibg=#000000
+hi PmenuSel guibg=#808080
+hi PmenuSbar guibg=#080808
+hi PmenuThumb guifg=#66D9EF
+
+hi PreCondit guifg=#A6E22E gui=bold
+hi PreProc guifg=#A6E22E
+hi Question guifg=#66D9EF
+hi Repeat guifg=#F92672 gui=bold
+hi Search guifg=#000000 guibg=#FFE792
+" marks
+hi SignColumn guifg=#A6E22E guibg=#232526
+hi SpecialChar guifg=#F92672 gui=bold
+hi SpecialComment guifg=#7E8E91 gui=bold
+hi Special guifg=#66D9EF guibg=bg gui=italic
+if has("spell")
+ hi SpellBad guisp=#FF0000 gui=undercurl
+ hi SpellCap guisp=#7070F0 gui=undercurl
+ hi SpellLocal guisp=#70F0F0 gui=undercurl
+ hi SpellRare guisp=#FFFFFF gui=undercurl
+endif
+hi Statement guifg=#F92672 gui=bold
+hi StatusLine guifg=#455354 guibg=fg
+hi StatusLineNC guifg=#808080 guibg=#080808
+hi StorageClass guifg=#FD971F gui=italic
+hi Structure guifg=#66D9EF
+hi Tag guifg=#F92672 gui=italic
+hi Title guifg=#ef5939
+hi Todo guifg=#FFFFFF guibg=bg gui=bold
+
+hi Typedef guifg=#66D9EF
+hi Type guifg=#66D9EF gui=none
+hi Underlined guifg=#808080 gui=underline
+
+hi VertSplit guifg=#808080 guibg=#080808 gui=bold
+hi VisualNOS guibg=#403D3D
+hi Visual guibg=#403D3D
+hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold
+hi WildMenu guifg=#66D9EF guibg=#000000
+
+hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E
+hi TabLine guibg=#1B1D1E guifg=#808080 gui=none
+
+if s:molokai_original == 1
+ hi Normal guifg=#F8F8F2 guibg=#272822
+ hi Comment guifg=#75715E
+ hi CursorLine guibg=#3E3D32
+ hi CursorLineNr guifg=#FD971F gui=none
+ hi CursorColumn guibg=#3E3D32
+ hi ColorColumn guibg=#3B3A32
+ hi LineNr guifg=#BCBCBC guibg=#3B3A32
+ hi NonText guifg=#75715E
+ hi SpecialKey guifg=#75715E
+else
+ hi Normal guifg=#F8F8F2 guibg=#1B1D1E
+ hi Comment guifg=#7E8E91
+ hi CursorLine guibg=#293739
+ hi CursorLineNr guifg=#FD971F gui=none
+ hi CursorColumn guibg=#293739
+ hi ColorColumn guibg=#232526
+ hi LineNr guifg=#465457 guibg=#232526
+ hi NonText guifg=#465457
+ hi SpecialKey guifg=#465457
+end
+
+"
+" Support for 256-color terminal
+"
+if &t_Co > 255
+ if s:molokai_original == 1
+ hi Normal ctermbg=234
+ hi CursorLine ctermbg=235 cterm=none
+ hi CursorLineNr ctermfg=208 cterm=none
+ else
+ hi Normal ctermfg=252 ctermbg=233
+ hi CursorLine ctermbg=234 cterm=none
+ hi CursorLineNr ctermfg=208 cterm=none
+ endif
+ hi Boolean ctermfg=135
+ hi Character ctermfg=144
+ hi Number ctermfg=135
+ hi String ctermfg=144
+ hi Conditional ctermfg=161 cterm=bold
+ hi Constant ctermfg=135 cterm=bold
+ hi Cursor ctermfg=16 ctermbg=253
+ hi Debug ctermfg=225 cterm=bold
+ hi Define ctermfg=81
+ hi Delimiter ctermfg=241
+
+ hi DiffAdd ctermbg=24
+ hi DiffChange ctermfg=181 ctermbg=239
+ hi DiffDelete ctermfg=162 ctermbg=53
+ hi DiffText ctermbg=102 cterm=bold
+
+ hi Directory ctermfg=118 cterm=bold
+ hi Error ctermfg=219 ctermbg=89
+ hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold
+ hi Exception ctermfg=118 cterm=bold
+ hi Float ctermfg=135
+ hi FoldColumn ctermfg=67 ctermbg=16
+ hi Folded ctermfg=67 ctermbg=16
+ hi Function ctermfg=118
+ hi Identifier ctermfg=208 cterm=none
+ hi Ignore ctermfg=244 ctermbg=232
+ hi IncSearch ctermfg=193 ctermbg=16
+
+ hi keyword ctermfg=161 cterm=bold
+ hi Label ctermfg=229 cterm=none
+ hi Macro ctermfg=193
+ hi SpecialKey ctermfg=81
+
+ hi MatchParen ctermfg=233 ctermbg=208 cterm=bold
+ hi ModeMsg ctermfg=229
+ hi MoreMsg ctermfg=229
+ hi Operator ctermfg=161
+
+ " complete menu
+ hi Pmenu ctermfg=81 ctermbg=16
+ hi PmenuSel ctermfg=255 ctermbg=242
+ hi PmenuSbar ctermbg=232
+ hi PmenuThumb ctermfg=81
+
+ hi PreCondit ctermfg=118 cterm=bold
+ hi PreProc ctermfg=118
+ hi Question ctermfg=81
+ hi Repeat ctermfg=161 cterm=bold
+ hi Search ctermfg=0 ctermbg=222 cterm=NONE
+
+ " marks column
+ hi SignColumn ctermfg=118 ctermbg=235
+ hi SpecialChar ctermfg=161 cterm=bold
+ hi SpecialComment ctermfg=245 cterm=bold
+ hi Special ctermfg=81
+ if has("spell")
+ hi SpellBad ctermbg=52
+ hi SpellCap ctermbg=17
+ hi SpellLocal ctermbg=17
+ hi SpellRare ctermfg=none ctermbg=none cterm=reverse
+ endif
+ hi Statement ctermfg=161 cterm=bold
+ hi StatusLine ctermfg=238 ctermbg=253
+ hi StatusLineNC ctermfg=244 ctermbg=232
+ hi StorageClass ctermfg=208
+ hi Structure ctermfg=81
+ hi Tag ctermfg=161
+ hi Title ctermfg=166
+ hi Todo ctermfg=231 ctermbg=232 cterm=bold
+
+ hi Typedef ctermfg=81
+ hi Type ctermfg=81 cterm=none
+ hi Underlined ctermfg=244 cterm=underline
+
+ hi VertSplit ctermfg=244 ctermbg=232 cterm=bold
+ hi VisualNOS ctermbg=238
+ hi Visual ctermbg=235
+ hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold
+ hi WildMenu ctermfg=81 ctermbg=16
+
+ hi Comment ctermfg=59
+ hi CursorColumn ctermbg=236
+ hi ColorColumn ctermbg=236
+ hi LineNr ctermfg=250 ctermbg=236
+ hi NonText ctermfg=59
+
+ hi SpecialKey ctermfg=59
+
+ if exists("g:rehash256") && g:rehash256 == 1
+ hi Normal ctermfg=252 ctermbg=234
+ hi CursorLine ctermbg=236 cterm=none
+ hi CursorLineNr ctermfg=208 cterm=none
+
+ hi Boolean ctermfg=141
+ hi Character ctermfg=222
+ hi Number ctermfg=141
+ hi String ctermfg=222
+ hi Conditional ctermfg=197 cterm=bold
+ hi Constant ctermfg=141 cterm=bold
+
+ hi DiffDelete ctermfg=125 ctermbg=233
+
+ hi Directory ctermfg=154 cterm=bold
+ hi Error ctermfg=222 ctermbg=233
+ hi Exception ctermfg=154 cterm=bold
+ hi Float ctermfg=141
+ hi Function ctermfg=154
+ hi Identifier ctermfg=208
+
+ hi Keyword ctermfg=197 cterm=bold
+ hi Operator ctermfg=197
+ hi PreCondit ctermfg=154 cterm=bold
+ hi PreProc ctermfg=154
+ hi Repeat ctermfg=197 cterm=bold
+
+ hi Statement ctermfg=197 cterm=bold
+ hi Tag ctermfg=197
+ hi Title ctermfg=203
+ hi Visual ctermbg=238
+
+ hi Comment ctermfg=244
+ hi LineNr ctermfg=239 ctermbg=235
+ hi NonText ctermfg=239
+ hi SpecialKey ctermfg=239
+ endif
+end
+
+" Must be at the end, because of ctermbg=234 bug.
+" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ
+set background=dark
diff --git a/vim/vimrc b/vim/vimrc
new file mode 100644
index 0000000..e447159
--- /dev/null
+++ b/vim/vimrc
@@ -0,0 +1,105 @@
+" Uset compatibility with Vii
+set nocompatible
+
+" add user info variable
+let g:_author = "Bastien Chanot"
+let g:_email = "chanot.bastien@gmail.com"
+
+" Enable pathogen for plugins
+execute pathogen#infect()
+
+" Set colors options
+syntax on
+set t_Co=256
+colorscheme molokai
+
+" Set line numbers
+set number
+
+" Activate mouse click
+set mouse=a
+
+" Set some indent options
+set smartindent
+set autoindent
+filetype plugin indent on
+
+" make backspace work on all system
+set backspace=indent,eol,start
+
+" Set the encoding
+set encoding=utf-8
+
+" Activate cursor go on line at end/begin of line
+set whichwrap+=<,>,h,l,[,]
+
+" Set number of spacetab and the char to print
+let tab_placeholder='»·'
+let space_placeholder='·'
+execute "set list listchars=tab:". tab_placeholder .",trail:". space_placeholder
+set tabstop=4
+set shiftwidth=4
+set softtabstop=4
+
+" Activate sor syntastic options
+let g:syntastic_c_compiler = 'gcc'
+let g:syntastic_c_compiler_options = '-Wall -Werror -Wextra'
+let g:syntastic_check_on_open=1
+let g:syntastic_enable_signs=1
+let g:syntastic_c_remove_include_errors = 1
+let g:syntastic_c_include_dirs = ['../../../include', '../../include','../include','./include','../../../includes', '../../includes','../includes','./includes','../../../inc', '../../inc','../inc','./inc']
+
+" Open NERDTree with Ctrl + g
+noremap :NERDTreeToggle
+noremap :!
+noremap :tabedit
+noremap :tabnext
+noremap :tabprev
+noremap :vertical resize +1
+noremap :vertical resize -1
+
+" Fonction pour générer une classe avec règle canonique
+function! GenerateClassH(name)
+ execute "normal oclass " . a:name . " {"
+ execute "normal opublic:"
+ execute "normal o" . a:name . "();"
+ execute "normal o" . a:name . "(" . a:name . " const &src);"
+ execute "normal o~" . a:name . "();"
+ execute "normal o"
+ execute "normal o" . a:name . "\t&operator=(" . a:name . " const &src);"
+ execute "normal o"
+ execute "normal oprivate:"
+ execute "normal o"
+ execute "normal o};"
+endfunction
+
+" Commande :Class Test1
+command! -nargs=1 ClassH call GenerateClassH()
+
+" Fonction pour générer une classe avec règle canonique
+function! GenerateClassC(name)
+ execute "normal o" . name . "::" . name . "(void) {"
+ execute "normal o std::cout << \"Default constructor called\" << std::endl;"
+ execute "normal o return ;"
+ execute "normal o}"
+ execute "normal o"
+ execute "normal o" . name . "::" . name . "(" . name . " const &src) {"
+ execute "normal o *this = src;"
+ execute "normal o std::cout << \"Copy constructor called\" << std::endl;"
+ execute "normal o return ;"
+ execute "normal o}"
+ execute "normal o"
+ execute "normal o" . name . "::~" . name . "(void) {"
+ execute "normal o std::cout << \"Default destructor called\" << std::endl;"
+ execute "normal o return ;"
+ execute "normal o}"
+ execute "normal o"
+ execute "normal o" . name . " &" . name . "::operator=(" . name . " const &src) {"
+ execute "normal o std::cout << \"Copy assignment operator called\" << std::endl;"
+ execute "normal o return *this;"
+ execute "normal o}"
+endfunction
+
+" Commande :Class Test1
+command! -nargs=1 ClassC call GenerateClassC()
+