set nocompatible " be iMproved, required filetype off " required set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' "Plugins installés depuis Vim Awesome avec le gestionnaire Vundle Plugin 'preservim/nerdtree' Plugin 'mbbill/undotree' Plugin 'jeffkreeftmeijer/vim-numbertoggle' Plugin 'jodosha/vim-devnotes' Plugin 'joshdick/onedark.vim' Plugin 'flazz/vim-colorschemes' Plugin 'ervandew/supertab' Plugin 'tpope/vim-commentary' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'liuchengxu/vim-which-key' Plugin 'mhinz/vim-startify' Plugin 'kien/rainbow_parentheses.vim' Plugin 'szw/vim-maximizer' call vundle#end() " required filetype plugin indent on " required "Configurer Airline set laststatus=2 let g:airline_powerline_fonts = 1 let g:airline_theme='onedark' "Stocker le nom d'utilisateur dans une variable let g:username = substitute(system('whoami'), '\n', '', '') "Fonction pour mapper les modes function! Mode() let mode = mode() if mode ==# 'n' return 'NORMAL' elseif mode ==# 'i' return 'INSERT' elseif mode ==# 'v' return 'VISUAL' elseif mode ==# "\<C-V>" return 'VISUAL BLOCK' elseif mode ==# 'V' return 'VISUAL LINE' elseif mode ==# 'R' return 'REPLACE' else return mode() endif endfunction "Configurer les sections personnalisées dans la barre d'état let g:airline_section_a = '%<%{Mode()}' let g:airline_section_b = '%#StatusLine#' . g:username . ' | %f' let g:airline_section_c = '%#StatusLineNC#%{strftime("%H:%M")}' "Configurer les symboles de séparation let g:airline_left_sep = '' let g:airline_right_sep = '' let g:airline_left_alt_sep = '' let g:airline_right_alt_sep = '' "Configurer les couleurs hi StatusLine guifg=#ebdbb2 guibg=#3c3836 gui=NONE ctermfg=180 ctermbg=237 cterm=NONE hi StatusLineNC guifg=#928374 guibg=#3c3836 gui=NONE ctermfg=146 ctermbg=237 cterm=NONE hi User1 guifg=#282828 guibg=#98971a gui=NONE ctermfg=234 ctermbg=142 cterm=NONE hi User2 guifg=#928374 guibg=NONE gui=NONE ctermfg=146 ctermbg=NONE cterm=NONE hi User3 guifg=#d5c4a1 guibg=#3c3836 gui=NONE ctermfg=223 ctermbg=237 cterm=NONE hi User4 guifg=#1d2021 guibg=NONE gui=NONE ctermfg=234 ctermbg=NONE cterm=NONE hi User5 guifg=#689d6a guibg=NONE gui=NONE ctermfg=108 ctermbg=NONE cterm=NONE hi User6 guifg=#fabd2f guibg=NONE gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE "Parametre de vim syntax on set smartindent set shiftwidth=2 set wildmenu set cursorline set ignorecase set hlsearch set mouse=a set expandtab set tabstop=2 let mapleader = ";" "Numérotation avec numbertoggle set number relativenumber "Theme vim colorscheme space-vim-dark "Permet la sauvegarde automatique de l'historique... set undofile set undodir=~/.vim/ "Raccourci Note nmap <F2> :call DevNotes()<CR> "Raccourci NerdTree nnoremap <F3> :NERDTreeToggle<CR> "Raccourci historique nnoremap <F4> :UndotreeToggle<CR>:wincmd p<CR> "Raccourci terminal nnoremap <S-n> :vertical term<CR> nnoremap <F5> :call OpenResizableTerminals(input('Taille du terminal : ', '10'))<CR> tnoremap <F6> <c-w>N "Raccourci onglet nnoremap <F8> :call OpenFileInNewTab()<CR> nmap <F9> :tabnext<CR> "Ferme et sauvegarde vim nnoremap <F10> :call SaveAndQuit()<CR> "Raccourci vertical split nnoremap <c-a> :vsp<CR> "Raccourci vers une recherche duckduckgo vmap g :<C-U> !firefox "https://duckduckgo.com/?q=<cword>&t=newext&atb=v372-6&ia=web" >& /dev/null <CR><CR> "Maximiser/remet la fenêtre en place nmap <C-x> :MaximizerToggle<CR> "Commente/décommente nmap <S-y> gcc xnoremap <S-t> :Commentary<CR> "Active ou désactive la surbillance de la recherche nnoremap <S-b> :nohlsearch<CR> "Raccourci au lancement de vim au VimEnter *.cpp :NERDTreeToggle au VimEnter *.cpp :call OpenResizableTerminals(input('Taille du terminal : ', '10')) au VimEnter *.ino :NERDTreeToggle au VimEnter *.ino :call OpenResizableTerminals(input('Taille du terminal : ', '10')) "Parametre des couleurs pour les parentheses... let g:rbpt_colorpairs = [ \ ['brown', 'RoyalBlue3'], \ ['Darkblue', 'SeaGreen3'], \ ['darkgray', 'DarkOrchid3'], \ ['darkgreen', 'firebrick3'], \ ['darkcyan', 'RoyalBlue3'], \ ['darkred', 'SeaGreen3'], \ ['darkmagenta', 'DarkOrchid3'], \ ['brown', 'firebrick3'], \ ['gray', 'RoyalBlue3'], \ ['black', 'SeaGreen3'], \ ['darkmagenta', 'DarkOrchid3'], \ ['Darkblue', 'firebrick3'], \ ['darkgreen', 'RoyalBlue3'], \ ['darkcyan', 'SeaGreen3'], \ ['darkred', 'DarkOrchid3'], \ ['red', 'firebrick3'], \ ] let g:rbpt_max = 16 let g:rbpt_loadcmd_toggle = 0 au VimEnter * RainbowParenthesesToggle au Syntax * RainbowParenthesesLoadRound au Syntax * RainbowParenthesesLoadSquare au Syntax * RainbowParenthesesLoadBraces "Exécuter la commande :PluginUpdate en arrière-plan chaque fois que Vim est ouvert au VimEnter * silent! execute ':PluginUpdate | redraw!' "Sauvegarde et Fermeture de vimscode function! SaveAndQuit() wa qall! endfunction "Configuration du terminal extensible function! OpenResizableTerminals(size) let size_arg = a:size != '' ? '++rows=' . a:size : '' execute 'bot term ' . size_arg endfunction "Fonction pour la création d'un nouvel onglet function! OpenFileInNewTab() let user_choice = input("Voulez-vous ouvrir un fichier existant ? (o/n): ") if user_choice == 'o' let file_name = input("Choisir un fichier à ouvrir : ", '', 'file') if filereadable(file_name) execute "tabnew " . fnameescape(file_name) else echo "Le fichier spécifié n'existe pas : " . file_name endif elseif user_choice == 'n' let new_file = input("Nouveau nom de fichier : ") execute "tabnew " . new_file else echo "\nChoix invalide. Veuillez saisir 'o' pour ouvrir un fichier existant, ou 'n' pour créer un fichier." endif endfunction "Configuration de la page d'accueil vim let g:startify_lists = [ \ {'type': 'files', 'header': ['Fichiers récents']}, \ ] let g:startify_custom_header = \ startify#center(split(system('figlet -w 100 VIMSCODE'), '\n')) "Configuration WhichKey call which_key#register('<Space>', "g:which_key_map") nnoremap <c-l> :WhichKey '<Space>'<CR> set timeoutlen=20 let g:which_key_map = { \ 'name' : 'Raccourcis VimsCode' , \ '<F2>' : ['<F2>' , 'Apparition d une note'] , \ '<F3>' : ['<F3>' , 'Apparition de l arborescence'] , \ '<F4>' : ['<F4>' , 'Historique de modification'] , \ '<F5>' : ['<F5>' , 'Apparition d un terminal'] , \ '<F6>' : ['' , 'Scroll dans le terminal'] , \ '<F7>' : ['<F7>' , ''] , \ '<F8>' : ['<F8>' , 'Créer/ouvre une nouvelle fenetre'] , \ '<F9>' : ['<<F9>' , 'Change de fenetre'] , \ '<F10>' : ['<F10>' , 'Sauvegarde et ferme VimsCode'] , \ 'Ctrl-a' : ['<c-a>' , 'Divise en deux vim verticalement'] , \ 'Ctrl-x' : ['<c-x>', 'Maximum/demaximise la fenetre'] , \ 'Shift-n' : ['<S-n>' , 'Terminal horizontalement'] , \ 'Shift-b' : ['<S-b>', 'Enleve la surbrillance de la recherche'] , \ 'Shift-y' : ['<S-y>', 'Commente/decommente'] , \ 'Shift-t' : ['<S-t>', 'Commente/decommente en zone'] , \ '²' : ['²' , ''] , \ }