Vimrc
From AleikoumWiki
(Difference between revisions)
(31 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
- | V!m tel quel est assez lourd à utiliser, alors voici un petit .vimrc toujours à coller dans votre home | + | V!m tel quel est assez lourd à utiliser, alors voici un petit .vimrc toujours à coller dans votre home ! Bien entendu je remercie une fois de plus le pro du Web - un certain J. T. - pour m'avoir initie a l'univers et a la configuration V!m ! |
<pre> | <pre> | ||
Line 7: | Line 7: | ||
"# --------------------------------------- # | "# --------------------------------------- # | ||
"# # | "# # | ||
- | "#last MAJ : | + | "#last MAJ : 2009-02-20 11:02 # |
"#e.bensouiden@gmail.com # | "#e.bensouiden@gmail.com # | ||
"######################################################################### | "######################################################################### | ||
- | " | + | " tres largement inspire de celui de J. T. le pro du Web ;) |
+ | " Configuration generale | ||
+ | " ---------------------- | ||
+ | |||
+ | " Affiche les numeros de lignes, set nonu pour les retirer | ||
+ | set number | ||
+ | "set numberwidth=1 | ||
+ | " Va highlighter directement la pattern lors d'une recherche a la volee | ||
+ | set incsearch | ||
+ | " Va highlighter les resultats d'une recherche | ||
+ | set hlsearch | ||
+ | " Indentation automatique | ||
+ | set autoindent | ||
+ | " Pour la souris : en 'a' la souris permet de scroller | ||
+ | " en 'h' la souris permet de selectionner | ||
+ | set mouse=a | ||
+ | " Option de collage | ||
+ | set nopaste | ||
+ | " le J. T. official V!m status modifiee par mes soins , laststatus permet d'afficher tout le temps la statusline | ||
+ | set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\[HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]\ [LASTMODIFIED=%{FileTime()}] | ||
+ | set laststatus=2 | ||
+ | " Modification des tabs et des espaces | ||
+ | set softtabstop=4 | ||
+ | set tabstop=4 | ||
+ | set shiftwidth=4 | ||
+ | set expandtab | ||
+ | set ttymouse=xterm2 | ||
+ | " Syntax enable | ||
+ | syntax on | ||
+ | |||
+ | " La ligne sur laquelle le curseur se trouve est highlighte | ||
+ | "set cursorline | ||
+ | "highlight Cursorline term=reverse cterm=reverse | ||
+ | |||
+ | set showmatch | ||
+ | set wildmenu | ||
+ | set wildignore=*.o,*#,*~,*.dll,*.so,*.a | ||
+ | set wildmode=full | ||
+ | |||
+ | set foldmethod=indent " A chaque indentation, un fold est cree | ||
+ | set fillchars=fold:- | ||
+ | set foldtext=MyFoldDisplay() | ||
+ | au BufWinLeave * mkview | ||
+ | au BufWinEnter * silent loadview | ||
+ | |||
+ | " Shortcuts | ||
+ | " --------- | ||
+ | |||
+ | " Diviser le buffer actuel puis switcher entre les buffers | ||
+ | map <F2> <esc><c-w>s | ||
+ | map <F3> <esc><c-w><Up> | ||
+ | map <F4> <esc><c-w><Down> | ||
+ | map! <F2> <esc><c-w>s | ||
+ | map! <F3> <esc><c-w><Up> | ||
+ | map! <F4> <esc><c-w><Down> | ||
+ | |||
+ | " Changer dynamiquement la souris ainsi que le mode de copie | ||
+ | map <F5> <esc>:call MouseManage()<CR>i | ||
+ | map! <F5> <esc>:call MouseManage()<CR>i | ||
+ | |||
+ | " Plus de numero ligne ou pas ! | ||
+ | map <F6> <esc>:call NumLineManage()<CR> | ||
+ | map! <F6> <esc>:call NumLineManage()<CR> | ||
+ | |||
+ | " Gestion des buffers avec le vim * | ||
+ | map <F7> <esc>:ls<CR> | ||
+ | map! <F7> <esc>:ls<CR> | ||
+ | |||
+ | " Ouvrir un nouveau fichier | ||
+ | map <F8> <esc>:e | ||
+ | map! <F8> <esc>:e | ||
+ | |||
+ | " Test si le script perl compile | ||
+ | map <F9> <esc>:!perl -c %<CR> | ||
+ | map! <F9> <esc>:!perl -c %<CR> | ||
+ | |||
+ | " Fais un backup | ||
+ | map <F10> <esc>:call SaveAndDate()<CR> | ||
+ | map! <F10> <esc>:call SaveAndDate()<CR> | ||
+ | |||
+ | " Indenter une ligne ou le texte complet | ||
+ | map <F11> <esc>==<CR> | ||
+ | map! <F11> <esc>==<CR> | ||
+ | map <F12> <esc>gg=G<CR> | ||
+ | map! <F12> <esc>gg=G<CR> | ||
+ | |||
+ | " Anciens Shortcuts | ||
+ | " ----------------- | ||
+ | " avec la gestion de la souris | ||
+ | "map <F5> <esc>:set mouse=h<CR> | ||
+ | "map <F6> <esc>:set mouse=a<CR> | ||
+ | "map! <F5> <esc>:set mouse=h<CR> | ||
+ | "map! <F6> <esc>:set mouse=a<CR> | ||
+ | " F11 pour coller du texte formatte | ||
+ | " et F12 pour revenir a l'etat initial | ||
+ | "map <F11> <esc>:set paste<CR> | ||
+ | "map <F12> <esc>:set nopaste<CR> | ||
+ | "map! <F11> <esc>:set paste<CR> | ||
+ | "map! <F12> <esc>:set nopaste<CR> | ||
+ | "map <F10> <esc>:w %.save<CR> | ||
+ | "map! <F10> <esc>:w %.save<CR> | ||
+ | |||
+ | " Fonctions | ||
+ | " --------- | ||
+ | |||
+ | " Fonction 1 : affichage divers | ||
+ | function! s:DisplayStatus(msg) | ||
+ | echohl Todo | ||
+ | echo a:msg | ||
+ | echohl None | ||
+ | endfunction | ||
+ | |||
+ | " Fonction 2 : activation/desactivation de la gestion de la souris | ||
+ | let s:mouseActivation = 1 | ||
+ | function! MouseManage() | ||
+ | if (s:mouseActivation) | ||
+ | let s:mouseActivation = 0 | ||
+ | set mouse=n | ||
+ | set paste | ||
+ | call s:DisplayStatus('mouse desactivee + possibilite de coller du texte deja formatte') | ||
+ | else | ||
+ | let s:mouseActivation = 1 | ||
+ | set mouse=a | ||
+ | set nopaste | ||
+ | call s:DisplayStatus('mouse activee + collage avec gestion de l autoindent') | ||
+ | endif | ||
+ | endfunction | ||
+ | |||
+ | " Fonction 3 : modification du texte dans les folds | ||
+ | function! MyFoldDisplay() | ||
+ | let line = getline(v:foldstart) | ||
+ | let sub = substitute(line,'/\*\|\*/\|^\s+', '', 'g') | ||
+ | let lines = v:foldend - v:foldstart + 1 | ||
+ | return v:folddashes.sub.'...<< '.lines.' Lines >>...'.getline(v:foldend) | ||
+ | endfunction | ||
+ | |||
+ | " Fonction 4 : numero de lignes ou pas ? | ||
+ | let s:numlineActivation = 1 | ||
+ | function! NumLineManage() | ||
+ | if (s:numlineActivation) | ||
+ | set nonu | ||
+ | let s:numlineActivation = 0 | ||
+ | else | ||
+ | set number | ||
+ | let s:numlineActivation = 1 | ||
+ | endif | ||
+ | endfunction | ||
+ | |||
+ | " Fonction 5 : recuperer le dernier lastmodified du fichier courant | ||
+ | function! FileTime() | ||
+ | let filename=expand("%:p") | ||
+ | let msg=strftime("%Y/%m/%d-%H:%M:%S",getftime(filename)) | ||
+ | return msg | ||
+ | endf | ||
+ | |||
+ | " Fonction 6 : fait une sauvegarde du fichier courant en .$date | ||
+ | function! SaveAndDate() | ||
+ | let thedate=strftime("%Y%m%d-%H%M%S") | ||
+ | exec 'w %.'.thedate | ||
+ | endf | ||
</pre> | </pre> | ||
+ | |||
+ | Quelques memo pour V!m : | ||
+ | <pre> | ||
+ | <esc>K : permet d'afficher le man de la commande sur laquelle se trouve le pointeur | ||
+ | <esc>:! commande : execute "commande" dans le terminal | ||
+ | yy : copie la ligne sur laquelle se trouve le pointeur | ||
+ | yNUMy : copie les NUM lignes a partie de laquelle se trouve le pointeur | ||
+ | dd : coupe la ligne sur laquelle se trouve le pointeur | ||
+ | dNUMd : coupe les NUM lignes a partie de laquelle se trouve le pointeur | ||
+ | p : colle les lignes copiees | ||
+ | <shift>C : efface tout entre le pointeur et la fin de la ligne + passe en mode insertion | ||
+ | <esc>:r!which commande : affiche le chemin vers l exec commande sur la ligne ou se trouve le curseur | ||
+ | <esc>gg : va au debut du fichier | ||
+ | <esc>G : va a la fin du fichier | ||
+ | zc : replie le fold courant | ||
+ | zo : deplie le fold courant | ||
+ | <esc>gg=G : indente tout le texte | ||
+ | <esc>:24,67= : indente entre la ligne 24 et 67 | ||
+ | <esc>:1,3s/^/# /g : commente la ligne 1 a 3 | ||
+ | <esc>:.,$s/^/# /g : commente de la ligne courante a la fin | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | Quelques colorscheme sympas :<br/> | ||
+ | Les schemes doivent se trouver dans ~/.vim/colors/ et doivent posseder l'extension .vim<br/> | ||
+ | Pour changer de colorscheme il suffit de faire <pre><esc>colorscheme nom-scheme-sans-ext</pre> | ||
+ | http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/midnight2.vim : pour perl |
Current revision
V!m tel quel est assez lourd à utiliser, alors voici un petit .vimrc toujours à coller dans votre home ! Bien entendu je remercie une fois de plus le pro du Web - un certain J. T. - pour m'avoir initie a l'univers et a la configuration V!m !
"######################################################################### "# # "# Mon ~/.vimrc par Erwan Laby Ben Souiden # "# --------------------------------------- # "# # "#last MAJ : 2009-02-20 11:02 # "#e.bensouiden@gmail.com # "######################################################################### " tres largement inspire de celui de J. T. le pro du Web ;) " Configuration generale " ---------------------- " Affiche les numeros de lignes, set nonu pour les retirer set number "set numberwidth=1 " Va highlighter directement la pattern lors d'une recherche a la volee set incsearch " Va highlighter les resultats d'une recherche set hlsearch " Indentation automatique set autoindent " Pour la souris : en 'a' la souris permet de scroller " en 'h' la souris permet de selectionner set mouse=a " Option de collage set nopaste " le J. T. official V!m status modifiee par mes soins , laststatus permet d'afficher tout le temps la statusline set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\[HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]\ [LASTMODIFIED=%{FileTime()}] set laststatus=2 " Modification des tabs et des espaces set softtabstop=4 set tabstop=4 set shiftwidth=4 set expandtab set ttymouse=xterm2 " Syntax enable syntax on " La ligne sur laquelle le curseur se trouve est highlighte "set cursorline "highlight Cursorline term=reverse cterm=reverse set showmatch set wildmenu set wildignore=*.o,*#,*~,*.dll,*.so,*.a set wildmode=full set foldmethod=indent " A chaque indentation, un fold est cree set fillchars=fold:- set foldtext=MyFoldDisplay() au BufWinLeave * mkview au BufWinEnter * silent loadview " Shortcuts " --------- " Diviser le buffer actuel puis switcher entre les buffers map <F2> <esc><c-w>s map <F3> <esc><c-w><Up> map <F4> <esc><c-w><Down> map! <F2> <esc><c-w>s map! <F3> <esc><c-w><Up> map! <F4> <esc><c-w><Down> " Changer dynamiquement la souris ainsi que le mode de copie map <F5> <esc>:call MouseManage()<CR>i map! <F5> <esc>:call MouseManage()<CR>i " Plus de numero ligne ou pas ! map <F6> <esc>:call NumLineManage()<CR> map! <F6> <esc>:call NumLineManage()<CR> " Gestion des buffers avec le vim * map <F7> <esc>:ls<CR> map! <F7> <esc>:ls<CR> " Ouvrir un nouveau fichier map <F8> <esc>:e map! <F8> <esc>:e " Test si le script perl compile map <F9> <esc>:!perl -c %<CR> map! <F9> <esc>:!perl -c %<CR> " Fais un backup map <F10> <esc>:call SaveAndDate()<CR> map! <F10> <esc>:call SaveAndDate()<CR> " Indenter une ligne ou le texte complet map <F11> <esc>==<CR> map! <F11> <esc>==<CR> map <F12> <esc>gg=G<CR> map! <F12> <esc>gg=G<CR> " Anciens Shortcuts " ----------------- " avec la gestion de la souris "map <F5> <esc>:set mouse=h<CR> "map <F6> <esc>:set mouse=a<CR> "map! <F5> <esc>:set mouse=h<CR> "map! <F6> <esc>:set mouse=a<CR> " F11 pour coller du texte formatte " et F12 pour revenir a l'etat initial "map <F11> <esc>:set paste<CR> "map <F12> <esc>:set nopaste<CR> "map! <F11> <esc>:set paste<CR> "map! <F12> <esc>:set nopaste<CR> "map <F10> <esc>:w %.save<CR> "map! <F10> <esc>:w %.save<CR> " Fonctions " --------- " Fonction 1 : affichage divers function! s:DisplayStatus(msg) echohl Todo echo a:msg echohl None endfunction " Fonction 2 : activation/desactivation de la gestion de la souris let s:mouseActivation = 1 function! MouseManage() if (s:mouseActivation) let s:mouseActivation = 0 set mouse=n set paste call s:DisplayStatus('mouse desactivee + possibilite de coller du texte deja formatte') else let s:mouseActivation = 1 set mouse=a set nopaste call s:DisplayStatus('mouse activee + collage avec gestion de l autoindent') endif endfunction " Fonction 3 : modification du texte dans les folds function! MyFoldDisplay() let line = getline(v:foldstart) let sub = substitute(line,'/\*\|\*/\|^\s+', '', 'g') let lines = v:foldend - v:foldstart + 1 return v:folddashes.sub.'...<< '.lines.' Lines >>...'.getline(v:foldend) endfunction " Fonction 4 : numero de lignes ou pas ? let s:numlineActivation = 1 function! NumLineManage() if (s:numlineActivation) set nonu let s:numlineActivation = 0 else set number let s:numlineActivation = 1 endif endfunction " Fonction 5 : recuperer le dernier lastmodified du fichier courant function! FileTime() let filename=expand("%:p") let msg=strftime("%Y/%m/%d-%H:%M:%S",getftime(filename)) return msg endf " Fonction 6 : fait une sauvegarde du fichier courant en .$date function! SaveAndDate() let thedate=strftime("%Y%m%d-%H%M%S") exec 'w %.'.thedate endf
Quelques memo pour V!m :
<esc>K : permet d'afficher le man de la commande sur laquelle se trouve le pointeur <esc>:! commande : execute "commande" dans le terminal yy : copie la ligne sur laquelle se trouve le pointeur yNUMy : copie les NUM lignes a partie de laquelle se trouve le pointeur dd : coupe la ligne sur laquelle se trouve le pointeur dNUMd : coupe les NUM lignes a partie de laquelle se trouve le pointeur p : colle les lignes copiees <shift>C : efface tout entre le pointeur et la fin de la ligne + passe en mode insertion <esc>:r!which commande : affiche le chemin vers l exec commande sur la ligne ou se trouve le curseur <esc>gg : va au debut du fichier <esc>G : va a la fin du fichier zc : replie le fold courant zo : deplie le fold courant <esc>gg=G : indente tout le texte <esc>:24,67= : indente entre la ligne 24 et 67 <esc>:1,3s/^/# /g : commente la ligne 1 a 3 <esc>:.,$s/^/# /g : commente de la ligne courante a la fin
Quelques colorscheme sympas :
Les schemes doivent se trouver dans ~/.vim/colors/ et doivent posseder l'extension .vim
<esc>colorscheme nom-scheme-sans-ext
http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/midnight2.vim : pour perl