Voici un petit script pour une utilisation plus productive de l'éditeur Vim
Pour utiliser ce script créer un fichier vimrc comme ceci:
vim vimrc
Copier le script suivant à l'intérieure
" Ne pas utiliser le mode de compatibilité vi
set nocompatible
:" Utiliser le mode compatibilité avec vi
"set compatible
" Activer le numerotage des lignes
set number
" Encodage par défaut des buffers et des fichiers
set encoding=utf-8
set fileencoding=utf-8
" On transmet les 'beep' au terminal, on ne 'flash' pas
set noerrorbells
" Parenthèses électriques
set showmatch
" activation de la souris
set mouse=a
" Pas de souris !
"set mouse=
" Taille maximale d'une ligne
set textwidth=80
" Complétion en mode insertion (<C-n>)
set completeopt=longest,menuone
" 2 Indentation
" Activation de l'auto indentation
set autoindent
" Indentation gerer par des plugins
"set noautoindent
" filetype plugin indent on
" filetype indent on
" On remplace les \t par des espaces
set expandtab
" Largeur de l'autoindentation
set shiftwidth=2
" Largeur de l'indentation avec <tab>
set softtabstop=2
" Largeur du caractère <tab>
set tabstop=1
" Indentation pour C (a vous de chercher ce que ca fait)
set cinoptions={.5s,+.5s,t0,n-1,p2s,(03s,=.5s,>1s,=1s,:1s
" 3 Recherche et substitution
" La recherche reprend au début du fichier (resp à la fin) une fois la fin (resp
" le début) atteint.
set wrapscan
" Highlight les paterns recherchés
set hlsearch
" Recherche en live
set incsearch
" 4 Surlignage, couleurs et police
" Configuration du thème de couleur
color darkblue "default torte darkblue
" Coloration syntaxique
syntax on
" et pour la coloration du shell :
let g:is_posix = 1
" Configuration du hilight quand vim est dans un terminal couleur
hi Normal ctermfg=gray ctermbg=black
" Configuration du hilight pour gvim
hi Normal guifg=#c0c0c0 guibg=#000040
" Configuration du parsing pour la coloration syntaxique
"syn sync minlines=10000 maxlines=10000
" Numérotation automatique des fichiers C++ (désactivée)
autocmd FileType cpp set number
" Numerotation automatique des fichiers C
autocmd FileType c set number
" 5 Ligne de statut et Menu
" Options pour le GUI
" m : afficher la barre de menu
" T : afficher la toolbar
" g : les menus inactifs sont grisés
" r : afficher la barre de défilement à droite
" L : afficher la barre de défilement à gauche quand l'écran est vsplité
" a=autoselect : le texte sélectionné en VISUAL est copié dans le pressepapier PRIMARY
set guioptions=mgTrLa
" Complétion dans la barre de commande
set wmnu
set wildmode=list:longest,list:full
" Fichiers ignorés lors de la complétion
set wildignore=*.o,*.r,*.so,*.sl
" Taille de l'historique de la barre de commandes
set history=2000
" Affichage de la position dans le fichier dans la barre de statut
set ruler
" Configuration de l'affichage de la date et de la position dans le fichier
set rulerformat=%27(%{strftime('%a\ %e\ %b\ %I:%M\ %p')}\ %2l,%-2(%c%V%)\ %P%)
" Affichage du mode dans la barre de statut
set showmode
" Affichage intelligent des avertissements (file format, file status, etc.)
set shm=a
" La ligne de statut est l'avant dernière ligne
set laststatus=2
" 6 Fenetres
" Hauteur minimale d'une fenêtre active
set winheight=1
" Hauteur minimale d'une fenêtre
set winminheight=0
" Ne redimensionne pas automatiquement toutes les fenêtres lors de
" l'ouverture/fermeture de l'une d'entre elles
set noequalalways
" Ajoute les nouvelles fenêtres en dessous ou à droite
set splitbelow
set splitright
" 6bis Tabs
" Raccourcis claviers pour les Tabs
map <C-Down> :tabnew <CR>
nmap <C-Right> :tabnext <CR>
nmap <C-Left> :tabprevious <CR>
" 7 Sauvegarde
" Fait une copie de sauvegarde lors de l'écrasement d'un fichier
set backup
" Dossier contenant la sauvegarde. N'oubliez pas de le créer et de lui faire un
" chmod 700
set backupdir=~/.backup
" 8 Unixage
" Path pour la recherche de fichier avec :find, :sfind et :tabfind
set path=.,/usr/include,/usr/X11R6/include,/usr/local/include
" Le texte sélectionné en mode visuel est collé dans le presse-papier PRIMARY
set clipboard=autoselect
" Shell par défaut
set shell=/bin/bash
" 9 Mapping
" Supprimer les blancs en début de ligne
nmap _S :%s/^\s\+//<CR>
" Bien interpréter les caractères de contrôle
nmap <ESC>[1;5D <C-Left>
nmap <ESC>[1;5C <C-Right>
nmap <ESC>Oa <C-Up>
nmap <ESC>[1;5B <C-Down>
"indentation automatique
vnoremap <C-F> =$
vnoremap <tab> =
nnoremap <tab> =$
nnoremap <C-tab> mzvip=`z
" Génération des tags pour les fichiers à la C++
map <F11> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
" 10 Plugin
" Gestion des plugin grace a vundle
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
"Bundle 'html5.vim'
"Bundle 'HTML5-Syntax-File'
"Bundle 'css3'
"Bundle 'CSS3-Highlights'
filetype plugin indent on
"source /usr/share/vim-scripts/games/VimSokoban/sokoban.vim
"source /usr/share/vim-scripts/plugin/bufexplorer.vim
"source /usr/share/vim-scripts/plugin/taglist.vim
"Le plugin 2html utilise le CSS
let html_use_css3 = 1
"Configuration de vimspell
let loaded_vimspell = 1
set spelllang=fr
set spellsuggest=10
let spell_executable = "aspell"
let spell_auto_type = ''
let spell_insert_mode = 0
" Configuration OmbiCpp (C++)
let OmniCpp_DefaultNamespaces=["std", "_GLIBCXX_STD"]
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_NamespaceSearch = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_ShowPrototypeInAbbr = 1
""""""""""""""""""""""""""""""""""" script pour le header
" FUNCTION:
" Detection du type de fichier en regardant l'extension.
" VARIABLES:
" comment = commentaire sur le type de fichier.
" type = le chemin de l'interpreteur pour du type de fichier
" quand le fichier n'est pas un script executable.
function s:filetype ()
let s:file = expand("<afile>:t")
if match (s:file, "\.sh$") != -1
let s:comment = "#"
let s:type = s:comment . "!" . system ("whereis -b bash | awk '{print $2}' | tr -d '\n'")
let s:nocomment = "#"
elseif match (s:file, "\.py$") != -1
let s:comment = "#"
let s:type = s:comment . "!" . system ("whereis -b python | awk '{print $2}'| tr -d '\n'")
let s:nocomment = "#"
elseif match (s:file, "\.pl$") != -1
let s:comment = "#"
let s:type = s:comment . "!" . system ("whereis -b perl | awk '{print $2}'| tr -d '\n'")
let s:nocomment = "#"
elseif match (s:file, "\.c$") != -1
let s:comment = "//"
let s:type = s:comment . "C File"
let s:nocomment = "//"
elseif match (s:file, "\.php$") != -1
let s:a = "1"
let s:balise = "<?php"
let s:comment = "//"
let s:type = s:comment . "PHP File"
let s:nocomment = "//"
elseif match (s:file, "\.cpp$") != -1
let s:comment = "//"
let s:type = s:comment . "C++ File"
let s:nocomment = "//"
elseif match (s:file, "\.vim$") != -1
let s:comment = "\""
let s:type = s:comment . " Vim File"
let s:nocomment = "\""
elseif match (s:file, "\.rb$") != -1
let s:comment = "#"
let s:type = s:comment ." Ruby File"
let s:nocomment = "#"
elseif match (s:file, "\.html$") != -1
let s:comment = "<!-- -->"
let s:type = s:comment . "<!-- HTML File -->"
let s:nocomment = "<!-- -->"
elseif match (s:file, "\.css$") != -1
let s:comment = "/*"
let s:type = s:comment . " Css File"
let s:nocomment = "\*/"
else
let s:comment = "#"
let s:type = s:comment . " Text File"
let s:nocomment = "#"
endif
unlet s:file
endfunction
" FUNCTION:
" Insertion du headers a la creation du fichier.
" VARIABLES:
" author = le propriétaire du fichier
" file = chemin pour acceder au fichier.
" created = Date de creation du fichier.
" modified = Date de la derniere modification.
function s:insert ()
call s:filetype ()
let s:author = s:comment . " Auteur: Noubicier patrick"
let s:file = s:comment . " Fichier: " . expand("<afile>")
let s:created = s:comment . " Date de creation: " . strftime ("%H:%M:%S %d/%m/%Y")
let s:modified = s:comment . " Date de derniere modification: " . strftime ("%H:%M:%S %d/%m/%Y")
call append (0, s:balise)
call append (1, s:type)
call append (2, s:author)
call append (3, s:file)
call append (4, s:created)
call append (5, s:modified)
call append (6, s:nocomment)
unlet s:balise
unlet s:comment
unlet s:type
unlet s:author
unlet s:file
unlet s:created
unlet s:modified
unlet s:nocomment
endfunction
" FUNCTION:
" Mettre la date de derniere modification.
" mets a jour la ligne 5 correspondant a la date de derniere modification.
function s:update ()
call s:filetype ()
let s:pattern = s:comment . " MODIFIED: [0-9]"
let s:line = getline (5)
if match (s:line, s:pattern) != -1
let s:modified = s:comment . " MODIFIED: " . strftime ("%H:%M:%S %d/%m/%Y")
call setline (5, s:modified)
unlet s:modified
endif
unlet s:comment
unlet s:pattern
unlet s:line
endfunction
autocmd BufNewFile * call s:insert ()
autocmd BufWritePre * call s:update ()
"""""""""""""""""""""""""""""""""""fin du script pour header
" Configuration de taglist
"set tags+=~/.vim/tags/stl
Les commentaires sous vim s'active grace au caractère guillemet double ' " '
Donc pour activer certaines options il suffit de supprimer ce caractère en début de ligne ou en désactiver d'autre en le rajoutant en début de ligne.
Comme vous pouvez le constater j'ai rajouté un script pour le headers ou entête car à l'ETNA nous devons respecter une norme (le header est un des éléments de cette norme) et je me suis pris pas mal de -9 car je persistais à utiliser Vim contrairement à emacs qui génère automatiquement des headers.Tout problème a des solutions lol.
Pour gérer plus de type de fichier il suffit de rajouter une condition avec elseif ,Dans mon cas je n'ai gérer que les extensions dont j'aurai à me servir cette année et si besoin en ai j'en rajouterai.
Pour l'extension html, j'insère les balises de commentaire, donc il faut juste copier coller, le texte à droite au centre de la balise.
Pour l'extension html, j'insère les balises de commentaire, donc il faut juste copier coller, le texte à droite au centre de la balise.
Ensuite enregistrer le fichier comme ceci
appuyez sur la touche Echap ou ESC, taper :wq!
Activer le vimrc comme ceci (je fais une copie que je renomme .vimrc)
cp vimrc .vimrc
Maintenant que le fichier est activer toute modification se fera dans le .vimrc comme ca en cas de mauvaise manipulation j'ai toujours un backup de mon vimrc sous la main.
Si votre modification dans le .vimrc est un succes pour mettre a jour le backup
cp .vimrc vimrc
Voici un site qui m'a beaucoup aidé pour la réalisation de ce script
http://vim-fr.org
Aucun commentaire:
Enregistrer un commentaire