" " VIMRC - Seb " " " " S'il y a probleme de couleurs, ajouter au .bashrc : " export TERM=xterm-256color " (verifier avec 'tput colors' que ca retourne bien 256) " " " " Docs : " " https://l.messenger.com/l.php?u=https%3A%2F%2Fftp.traduc.org%2Fdoc-vf%2Fgazette-linux%2Fhtml%2F2008%2F152%2Flg152-C.html&h=AT0olcNyj2hovnCwhdEz4TzB0oStACDAEz4dTK6OO9nonvJHHwqrtYMCUeLMolVhdBQz_GN2ciUbAfquT9pgZnK9mi8CmaZTVaQSGzPg1Vv2NdEE-fdc4g07pzmLbxlfqfrvSSmpYMKknXLsLbw " " https://www.tictech.info/post/vim_basic " https://www.tictech.info/post/vim_avance_p1 " https://www.tictech.info/post/vim_avance_p2 " " https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/ " https://borntocode.fr/ameliorer-votre-productivite-avec-vim/ " " https://artisan.karma-lab.net/vim-plugins-indispensables " https://vimawesome.com/ " https://medium.com/@brunojorge11/vim-as-php-ide-83310dddbf03 " " https://github.com/ycm-core/YouCompleteMe " " https://github.com/mmozuras/vimfiles/blob/master/vimrc " https://borntocode.fr/ameliorer-votre-productivite-avec-vim/ " https://github.com/JakobGM/dotfiles/blob/master/config/nvim/init.vim " https://gist.github.com/millermedeiros/1262085 " " https://www.youtube.com/watch?v=XA2WjJbmmoM " " " " Autres plugins interessants a regarder : " " ludovicchabant/vim-gutentags -- ctags " majutsushi/tagbar -- Menu de ctags " cohama/lexima.vim -- Clos auto les {([ ... " honza/vim-snippets -- Gestion de snippets (template de bouts de code) " Valloric/YouCompleteMe -- Autocompletion " spell correction orthographe " mbbill/undotree " " " MEMO DES COMMANDES " " " ** Plugins " :PlugInstall -- Installer les plugins ajoutes dans la liste ci-dessous " :PlugClean -- Nettoyer les plugins supprimes de la liste " :PlugUpdate -- Update les plugins installes " ** Souris " -- Pour copier du texte " -- Coller du texte " ** Touches initiales " i / a -- Passer en mode insertion " A -- Passer en mode insertion a la fin de la ligne " d / y / p -- Delete / Yank / Paste " o / O -- Ajoute une ligne vide dessous/dessus " w / W -- Se deplacer de mot/MOT en mot/MOT " % -- Passer de l'ouverture a la fermeture d'un ({[ <=> ]}) " :w/ -- Enregistrer sous " ** Folds " zf3j -- Creer un fold des 3 lignes en dessous " za -- Toggle le fold " zM / zR -- Ferme/Ouvre tous les folds " zd / zE -- Supprime un/tous les fold(s) " ** Completion " C-n / C-p -- Lister les completions possibles " C-i C-o -- Omni-completion " ** Marques " ma -- Poser le marqueur 'a' " 'a -- Aller au marqueur 'a' " :marks -- Lister les marqueurs " ** Persos " ; -- Ajoute un ';' en fin de ligne " " C-f / -- Cree un fold ?{ to %} " -- Cree un fold /{ to %} " -- Toogle fold " -- Ferme tous les folds " -- Ouvre tous les folds " " -- Syntaxe : Infos " -- Syntaxe : Errors " " / -- Ajoute/Enleve 1 indentation " " q -- Quitte et cree une session " d -- Supprime la session en cours " w -- Enregistre tous les onglets " " -- Commente la ligne " " e -- Toogle NerdTree " " /t -- Cree un nouvel onglet, et ouvre NerdTree " / -- Navigue dans les tab " / -- Deplace le tab courant " " -- Paste Toggle : Desactive l'autoindent pour coller du code " " -- Quitter le search highlighting " " -- Autocompletion " ** Plugin : NerdTree " m -- Affiche le menu pour creer/deplacer/suppimer des fichiers/repertoies " ** Plugin : Vimagit " /:Magit -- Affiche l'interface. Puis commandes : " S -- Pour staged une modif " CC -- Commit (mettre le commentaire puis refaire CC) " q -- Quitter Magit " " ** Plugin : Gitgutter " ]c / [c -- Aller a la suivante/precedente modification (map (GitGutterNextHunk) / PrevHunk) " hs -- Stage la modif " hu -- Annuler la modif " " PLUGINS " "https://github.com/junegunn/vim-plug "Deploie l'environnement vim avec installation des plugins, " si c'est le premier lancement de ce vimrc if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin('~/.vim/plugged') " Debut de chargement des plugins Plug 'scrooloose/syntastic' " Verif de la syntaxe du code Plug 'preservim/nerdtree' " Navigateur de fichiers "Plug 'majutsushi/tagbar' " Barre d'affichage des objets du code en cours "Plug 'ycm-core/YouCompleteMe' " Autocompletion de code Plug 'mhinz/vim-startify' " Gestion des sessions Plug 'tpope/vim-fugitive' " Git plugin with commands 'G' Plug 'jreybert/vimagit' " Modal git editing with g Plug 'airblade/vim-gitgutter' " Affiche les symboles de modifs git dans la marge Plug 'drewtempelmeyer/palenight.vim' " Theme Plug 'itchyny/lightline.vim' " Theme de barre de statut en bas "Plug 'ryanoasis/vim-devicons' " Lot d'icones pour NerdTree Plug 'sheerun/vim-polyglot' " Add syntax highlighting for a large range of filetypes "Plug 'cakebaker/scss-syntax.vim' "Plug 'othree/html5.vim' call plug#end() " " TRUE COLORS " "il faut ajouter 'export TERM=xterm-256color' dans .bashrc "(vérifier avec 'tput colors' que ça retourne bien 256) if (has("nvim")) let $NVIM_TUI_ENABLE_TRUE_COLOR=1 endif if (has("termguicolors")) set termguicolors endif "set t_8b=^[[48;2;%lu;%lu;%lum "set t_8f=^[[38;2;%lu;%lu;%lum " " CONFIGURATIONS " " Ouvre les fichiers sur plusieurs onglets au lieu de plusieurs buffers if !&diff | silent tab all | tabfirst | endif set encoding=UTF-8 set laststatus=2 " Affiche une barre de status en bas de l'écran set textwidth=0 " Largeur maxi du texte inséré : '0' désactive la fonction set history=50 " Nombre de commandes dans l'historique set viminfo='20,\"50 " Options du fichier ~/.viminfo set backspace=2 " Active la touche Backspace set scrolloff=5 " Garde toujours X ligne(s) visible(s) à l'écran au dessus du curseur set showcmd " Affiche les commandes dans la barre de status set showmatch " Affiche la paire de parenthèses set nostartofline " Essaye de garder le curseur dans la même colonne quand on change de ligne set wildmode=list:full " Option de la complétion automatique "set wildmode=list:longest " Option de la complétion automatique set wildignore+=*.o,*.obj,*.exe,*.so,*.dll,*.pyc,*.swp,*.jpg,*.png,*.gif,*.pdf,*.bak,.svn,.hg,.bzr,.git, set nocompatible "use Vim settings, rather than Vi set incsearch "find the next match as we type the search set hlsearch "highlight searches by default set ignorecase "set search to be case insensitive set smartcase "unless you typed uppercase letters in your query set number "add line numbers syntax on "turn on syntax highlighting set visualbell t_vb= " Desactive le visualbell set mouse=a "Performances set hidden " can put buffer to the background without writing " to disk, will remember history/marks. set lazyredraw " don't update the display while executing macros set ttyfast " Send more characters at a given time. " " THEME " set background=dark colorscheme palenight "let g:lightline = { 'colorscheme': 'palenight' } "let g:airline_theme = "palenight" let g:palenight_terminal_italics=1 set cursorline " Surligne la ligne en cours set noshowmode " N'affiche pas le mode en cours en bas, vu qu'il est sur la lightline "let g:lightline = { 'colorscheme': 'powerline' } let g:lightline = { \ 'colorscheme': 'wombat', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ] \ }, \ 'component_function': { \ 'gitbranch': 'FugitiveHead' \ }, \ } " " INDENTATION & AUTOCOMPLETION " "indent settings set shiftwidth=2 set tabstop=2 set softtabstop=2 set expandtab set autoindent "set noautoindent "set nocindent "set nosmartindent "set indentexpr= "filetype indent plugin off filetype plugin on set omnifunc=syntaxcomplete#Complete set completeopt=menuone "set completeopt=longest,menu,preview "fold settings set foldcolumn=3 set foldmethod=manual "set foldlevel=99 set foldlevelstart=99 autocmd BufWinLeave *.php,*.htm,*.html,*.css,*.c,*.cc,*.h,*.cpp,*.py,*.rb,*.js mkview autocmd BufWinEnter *.php,*.htm,*.html,*.css,*.c,*.cc,*.h,*.cpp,*.py,*.rb,*.js silent loadview " " CONF DES PLUGINS " let NERDTreeQuitOnOpen=1 let NERDTreeShowHidden=1 let g:syntastic_always_populate_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:startify_session_persistence = 1 let g:startify_enable_special = 0 let g:startify_files_number = 10 let g:startify_relative_path = 0 let g:startify_change_to_dir = 1 let g:startify_update_oldfiles = 1 let g:startify_session_autoload = 1 let g:startify_custom_header = 'startify#pad([ " VIM - STARTIFY"] + [" [e] Empty file" ])' let g:startify_lists = [ \ { 'type': 'sessions', 'header': [' Sessions'] }, \ { 'type': 'files', 'header': [' MRU'] }, \ { 'type': 'dir', 'header': [' MRU '. getcwd()] }, \ { 'type': 'bookmarks', 'header': [' Bookmarks'] }, \ { 'type': 'commands', 'header': [' Commands'] }, \ ] let g:startify_session_before_save = [ \ 'echo "Cleaning up before saving.."', \ 'silent! NERDTreeTabsClose' \ ] function! SessionCreate() if empty(v:this_session) if tabpagenr("$") > 1 SSave! endif endif endfunction let g:gitgutter_terminal_reports_focus = 0 let g:gitgutter_async = 0 autocmd BufWritePost * GitGutter "let g:tagbar_autofocus=1 " " RACCOURCIS CLAVIER " set whichwrap=<,>,[,] " Autorise le passage d'une ligne à l'autre avec les flèches gauche et droite " Definition de la touche let g:mapleader = " " "map :TagbarToggle map ; A; " Cree un fold du prochain/precedent {, jusqu'au } de fermeture "map f{zf%za nmap ?{zf%za:noh nmap /{zf%za:noh nnoremap ?{zf%za:noh " Toggle le fold en cours nmap za " Ouvre tous les folds nnoremap zR " Ferme tous les folds nnoremap zM " Infos de syntaxe nmap :SyntasticInfo nmap :Errors " Change l'indentation nnoremap >> vnoremap >gv nnoremap << vnoremap >gv " Quitte quand plusieurs onglets sont ouverts, et cree une session si elle n'existe pas noremap q :call SessionCreate():qa " Supprime la session en cours noremap d :SDelete " Enregistre tous les onglets en meme temps noremap w :wa " Commente la ligne courante autocmd VimEnter *.php,*.js,*.c,*.cc,*.h,*.cpp noremap 0i// autocmd VimEnter *.sh noremap 0i# " Affiche/Cache l'explorateur NerdTree noremap e :NERDTreeToggle " Creer un nouveau tab et ouvre l'explorateur NerdTree noremap t :$tabe:NERDTreeToggle noremap :$tabe:NERDTreeToggle inoremap :$tabe:NERDTreeToggle " Passer au precedent/suivant tab noremap gT inoremap gT noremap gt inoremap gt " Deplacer le tab courant vers la gauche/droite noremap :tabm -1 noremap :tabm +1 imap " Desactive l'autoindent le temps d'un copier-coller set pastetoggle= " Clear search highlighting nnoremap :noh map :Magit imap :Magit " Autocompletion avec la touche function! Smart_TabComplete() let line = getline('.') " current line let substr = strpart(line, -1, col('.')+1) " from the start of the current " line to one character right " of the cursor let substr = matchstr(substr, "[^ \t]*$") " word till cursor if (strlen(substr)==0) " nothing to match on empty string return "\" endif let has_slash = match(substr, '\/') != -1 " position of slash, if any if (has_slash) return "\\" " file matching else return "\\" " plugin matching endif endfunction inoremap =Smart_TabComplete()