VimsCode/vimrc-conf

234 lines
7.4 KiB
Plaintext

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'] ,
\ '²' : ['²' , ''] ,
\ }