" | --------------------------------------------------------------------------- " | File : ~/.vimrc " | By : sogal " | --------------------------------------------------------------------------- " GENERAL OPTIONS : " ----------------------------------------------------------------------------- set nocompatible " Ne pas assurer la compatibilité avec l'ancien Vi set encoding=utf8 " Encodage en utf-8 set mouse=a " Sélection à la souris set history=50 " Nombre de commandes dans l'historique " Montrer les tabulations, espaces insécables et de fin (eol:¶) set list listchars=nbsp:¤,tab:··,trail:¤,extends:▶,precedes:◀ set viminfo='20,\"50 " Options du fichier ~/.viminfo set backspace=2 " Active la touche Backspace set wrap " Wrappe et justifie à 79 caractères avec la touche '@' map @ {v}! par 79j " Autorise le passage d'une ligne à l'autre avec les flèches gauche et droite set whichwrap=<,>,[,] " Essaye de garder le curseur dans la même colonne quand on change de ligne set nostartofline " Option de la complétion automatique set wildmode=list:full set wildchar= set wildmenu " Meilleur complétion des commandes dans la ligne de status set tabstop=4 shiftwidth=4 expandtab " Pas de vraies tabulations set softtabstop=4 " Backspace supprime 4 espace d'un coup set ignorecase " Les recherches ne sont pas 'case sensitives'... set smartcase " ... sauf si le pattern recherché contient des majuscules " Le pliage se base sur l'indentation du fichier set foldmethod=indent set foldnestmax=3 " 3 niveaux de pliage maxi set nofoldenable " Ne pas plier par défaut set incsearch " Recherches incrémentalees set hlsearch " Mettre en surbrillance le mot cherché set autoread " Auto lecture si le fichier a été modifié depuis l'extérieur " UI : " ----------------------------------------------------------------------------- colorscheme molokai " Thème de couleur syntax enable " Active la coloration syntaxique " Contenu de la barre de status " set statusline=%F\ Type=%y\ %=Pos=%l,%c\ (%p%%)\ SLOC=%L\ %P set laststatus=2 " Barre de status toujours visible set t_Co=256 " Utiliser 256 couleurs set textwidth=78 " Largeur maxi du texte inséré set colorcolumn=80 " Mise en couleur colonne n°80 set showcmd " Affiche les commandes dans la barre de status set showmatch " Affiche la paire de parenthèses set number " Afficher les numéros de ligne set splitright " set relativenumber " Mode numérotation des lignes relative set guifont=Monospace\ 11 " INDENT : " ----------------------------------------------------------------------------- set smartindent " Options d'indentation pour un fichier C set cinoptions=(0 set shiftwidth=4 " Nombre d'espace dans l'indentation " MAPPING : " ----------------------------------------------------------------------------- " Remapper pour conserver la sélection vnoremap < >gv " Mapper Y pour copie jusqu'à fin de ligne map Y y$ " U n'est pas utile, en faire un redo (Ctrl - R) map U " kj est plus rapide à atteindre que inoremap kj cnoremap kj " L sépare une ligne à la position du curseur (inverse de J) nnoremap L i " Mapper pour split navigation nnoremap nnoremap nnoremap nnoremap " Mapper leader key let mapleader = "," " ,r passe en mode num ligne relatives map r :set relativenumber " Folding avec espace nnoremap za " Désactiver la surbrillance du dernier élément recherché en tapant Entrée nnoremap :nohlsearch " Insérer un # (comment) en début de ligne nnoremap I# " POWERLINE : " ----------------------------------------------------------------------------- "set rtp+=/usr/share/vim/site/plugin/powerline.vim "python from powerline.vim import setup as powerline_setup "python powerline_setup() "python del powerline_setup "set laststatus=2 "set t_Co=256 " SCROLLING : " ----------------------------------------------------------------------------- set scrolloff=8 " Conserver 8 lignes visibles en scrollant verticalement set sidescrolloff=15 " Conserver 15 colonnes visibles en scrollant horizontalement set sidescroll=1 " ASTUCES : " ----------------------------------------------------------------------------- " Rouvrir le fichier là où on l'a quitté au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif " :set scrollbind " Scroller syncro entre 2 fenêtres " WRAPPING INTELLIGENT EN FONCTION DU TYPE DE FICHIERS : " ----------------------------------------------------------------------------- " Définir wrap et textwidth en fonction du fichier ou de son emplacement function! SetupEnvironment() let l:path = expand('%:p') if l:path =~ '/home/sogal/.*' setlocal textwidth=0 elseif (&ft == 'c' || &ft == 'html' || &ft == 'sh' || &ft == 'txt2tags') setlocal textwidth=0 elseif (&ft == 'mail') " Largeur à 72 car. pour les mails setlocal textwidth=72 else " Le défaut est à 78 car. setlocal textwidth=78 endif endfunction au BufReadPost,BufNewFile * call SetupEnvironment() " txt2tags au BufNewFile,BufRead *.t2t map 2l :w:!txt2tags -t html "%" ; unoconv -f odt "%:r.html" au BufNewFile,BufRead *.t2t map 2h :w:!txt2tags -t html -o /tmp/txt2tags_apercu.html "%" ; firefox "file:///tmp/txt2tags_apercu.html" au BufRead,BufNewFile *.t2t set tw=78 au BufNewFile,BufRead *.t2t set spell au BufNewFile,BufRead *.t2t setlocal spell spelllang=fr au BufNewFile,BufRead *.t2t set ft=txt2tags au BufNewFile,BufRead *.t2t set noexpandtab " VUNDLE ET CONFIGURATION DES PLUGINS ET DE LEUR ENVIRONNEMENT : " ----------------------------------------------------------------------------- set rtp+=~/.vim/bundle/Vundle.vim " L'environnement Vim inclus Vundle et l'exécute au lancement call vundle#begin() Plugin 'gmarik/Vundle.vim' " Ajouter les plugins ci-dessous : " ----------------------------------------------------------------------------- Plugin 'tmhedberg/SimpylFold' " Meilleur folding let g:SimpylFold_docstring_preview=1 " Voir la docstring du code foldé " Meilleur autocomplétion Python Bundle 'Valloric/YouCompleteMe' " Fermer la fenêtre d'autocomplétion après usage let g:ycm_autoclose_preview_window_after_completion=1 " ,g amène vers la définition de l'élément complété map g :YcmCompleter GoToDefinitionElseDeclaration Plugin 'klen/python-mode' Plugin 'scrooloose/syntastic' " Vérif syntaxe Python Plugin 'tpope/vim-fugitive' " Git wrapper pour Vim " Navigateur de fichiers dans une side-bar Plugin 'scrooloose/nerdtree' map t :NERDTreeToggle " ,t affiche l'arborescence let NERDTreeIgnore=['\.pyc$', '\~$'] " Ignorer fichier .pyc in NERDTree " Barre de status (+ light que powerline) Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' let g:airline_powerline_fonts = 1 let g:airline_extensions = ['branch', 'tabline'] let g:airline_theme = 'badwolf' " *TOUS* les plugins sont à ajouter et configurer avant cette ligne ! call vundle#end() " Requis filetype plugin indent on " Requis " DEMARRAGE AUTO DES PLUGINS : " ----------------------------------------------------------------------------- " autocmd VimEnter * NERDTree " PYTHON IDE : " ----------------------------------------------------------------------------- " Exécuter le script avec '2p' au BufNewFile,BufRead *.py map rp :w:!python3 "%" " Vérifier conformité du script à la PEP8 avec '2P' "au BufNewFile,BufRead *.py map 2P :w:!pep8-python3.4 '%' " Paraméter le fichier pour conformité à la PEP8 au BufNewFile,BufRead *.py \ set tabstop=4 | \ set softtabstop=4 | \ set shiftwidth=4 | \ set textwidth=79 | \ set expandtab | \ set autoindent | \ set fileformat=unix | "let python_highlight_all=1 " Highlight du code " Configuration de python-mode : let g:pymode = 1 let g:pymode_options = 0 " Rope code helpers let g:pymode_rope = 1 let g:pymode_rope_lookup_project = 0 let g:pymode_rope_project_root = "" let g:pymode_rope_completion = 1 let g:pymode_rope_completion_bind = '' let g:pymode_rope_autoimport_modules = ['os', 'shutil', 'datetime'] " Check du code let g:pymode_lint = 1 let g:pymode_lint_on_fly = 1 let g:pymode_lint_on_write = 1 let g:pymode_lint_message = 1 " Syntax et indentation let g:pymode_indent = 1 let g:pymode_syntax = 1 let g:pymode_syntax_all = 1 " Documentation let g:pymode_doc = 1 let g:pymode_doc_bind = 'K' " Support virtualenv let g:pymode_virtualenv = 1 " Exécuter le code let g:pymode_run = 0