"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Fichier de configuration de Vim " Mis à jour le 05/03/09 " " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Options affichages VIM """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set hlsearch "Met en surbrillance le résultat de la recherche set history=50 "Historique de 50 commandes set number "Affiche le numéro des lignes set ruler "Afiche la position du curseur set showcmd "Affiche la commande en cours set laststatus=2 "Affiche la barre de statut set mouse=a "Active la souris set wildmenu "Active la fenetre des possibilités colorscheme morning """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Personnalisation de l'affichage VIM """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Informations affichées dans la barre de statut "set statusline=%<%f%h%m%r%=%{&ff}\ %l,%c%V\ %P\%([%{Tlist_Get_Tagname_By_Line()}]%) "set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V "set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V/%2*%{strlen(getline('.'))}%*%10{getfsize(expand('%'))}o set statusline=%<%f\ %h\ %m\ %r\ %=%b\ Ox%B\ %c[%v],%l\ %P """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Parametres supplémentaires VIM """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nocompatible "Mode non-compatible avec vi filetype plugin on "Detection automatique du type du fichier set backspace=2 set tabstop=4 "Nombre d'espace pour une tabulation set shiftwidth=4 "Nombre de tabulations pour l'indentation set softtabstop=4 "Nombre d'espaces pour la tabulation (édition) set textwidth=78 "Limite le nombre de caractères par ligne set autoread "Fichier relu automatiquement par VIM set showmatch "Signalisation de fermeture des (),[],{} set matchtime=2 "Fixe la durée de signalisation sm à 2sec set incsearch "Recherche incrémentale set ignorecase "Ne prend pas en compte la casse pour une recherche set smartcase syntax on set nojoinspaces "implémentation de ctags, nécessaire pour le plugin 'taglist' let Tlist_Ctags_Cmd = '/usr/bin/ctags' "Permet de passer du dernier caratere d'une ligne au premier de la suivante set whichwrap=b,s,<,>,[,] """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Paramètres d'ouverture de fichier """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Reprendre à l'endroit ou on a quitter le fichier set viminfo='10,\"100,:20,%,n~/.vim/.viminfo au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Options basiques spéciales Python """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ""Détection du type de fichier pour l'indentation if has("autocmd") filetype indent on endif "" Pour visualiser les indentations set list set lcs:tab:>-,trail:. " ""Active la completion Python au FileType python set omnifunc=pythoncomplete#Complete au FileType python set expandtab au FileType python set fdm=indent " Repli selon l'indentation au FileType python setlocal textwidth=79 au FileType python set foldlevel=2 " Masque les indentations >2 niveaux """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Options de sauvegardes des fichiers """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Backup dans ~/.vim/backup if filewritable(expand("~/.vim/backup")) == 2 " comme le répertoire est accessible en écriture, " on va l'utiliser. set backupdir=$HOME/.vim/backup else if has("unix") || has("win32unix") " C'est c'est un système compatible UNIX, on " va créer le répertoire et l'utiliser. call system("mkdir $HOME/.vim/backup -p") set backupdir=$HOME/.vim/backup endif endif " Sauvegarde les scripts en executable au BufWritePost * call ModeChange() "Sauvegarde et restauration automatique des vues au BufWinLeave *.py mkview au BufWinEnter *.py silent loadview " Chemin de sauvegarde par défaut des vues set viewdir=~/.vim/saveview " Utilisation de la trame 'python.py' à l'ouverture d'un nouveau fichier *.py au BufNewFile *.py silent! 0r ~/.vim/templates/python.py """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Fonctions """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Donner des droits d'exécution si le fichier commence par #! et contient /bin/ "dans son chemin function ModeChange() if getline(1) =~ "^#!" if getline(1) =~ "/bin/" silent !chmod a+x endif endif endfunction " Actualise la date de modification du fichier si le texte 'Mise à jour le 'i " figure dans les 20 premières lignes. " Ce texte peut etre précédé de 20 caractères. " Restaure la position du curseur en employant des marques. function! LastModified() if &modified normal ms let n = min([20, line("$")]) exe '1,' . n . 's#^\(.\{,10}Mis à jour le \).*#\1' . \ strftime('%d/%m/%y') . '#e' normal `s endif endfun autocmd BufWritePre * call LastModified() "Stocke des marques-pages dans le fichier .vim/vims function! MoshBookmark() redir >> ~/.vim/bookmark echo "Rappel: taper pour ouvrir le marque page" echo strftime("%d-%b-%Y %a %H:%M") echo "Commentaire: " echo "vim ". expand("%:p").':'.line('.') echo ' word='.expand("") echo ' cline='.getline('.') redir END endfunction command! MoshBookmark :call MoshBookmark() """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Mapping """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Insère la date en mode visuel inoremap # Mis à jour le =strftime("%d/%m/%Y") "Masque les résultats de la recherche map :nohlsearch "Active la touche pour lancer les scripts au BufNewFile,BufRead *.py map :w!:!python % au BufNewFile,BufRead *.py imap :w!:!python % "Remplace le par un et retour en mode normal "en mode graphique uniquement if has("gui_running") map i set mousehide " On cache la souris en mode gui set ch=2 " ligne de commande dans deux lignes endif "Active la barre de Taglist nnoremap :TlistToggle let Tlist_Use_Right_Window = 0 " affiche les tags sur le côté gauche let Tlist_Process_File_Always = 1 let Tlist_Exit_OnlyWindow = 1 "vim se ferme s'il reste uniquement la "fenêtre des tags