Vimrc
From AleikoumWiki
(Difference between revisions)
m |
|||
(7 intermediate revisions not shown.) | |||
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 | + | " tres largement inspire de celui de J. T. le pro du Web ;) |
" Configuration generale | " Configuration generale | ||
Line 30: | Line 30: | ||
" Option de collage | " Option de collage | ||
set nopaste | set nopaste | ||
- | " le J. T. official V!m status , laststatus permet d'afficher tout le temps la statusline | + | " 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] | + | 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 | set laststatus=2 | ||
" Modification des tabs et des espaces | " Modification des tabs et des espaces | ||
Line 88: | Line 88: | ||
map! <F9> <esc>:!perl -c %<CR> | map! <F9> <esc>:!perl -c %<CR> | ||
- | " Fais un backup | + | " Fais un backup |
- | map <F10> <esc>: | + | map <F10> <esc>:call SaveAndDate()<CR> |
- | map! <F10> <esc>: | + | map! <F10> <esc>:call SaveAndDate()<CR> |
" Indenter une ligne ou le texte complet | " Indenter une ligne ou le texte complet | ||
Line 111: | Line 111: | ||
"map! <F11> <esc>:set paste<CR> | "map! <F11> <esc>:set paste<CR> | ||
"map! <F12> <esc>:set nopaste<CR> | "map! <F12> <esc>:set nopaste<CR> | ||
+ | "map <F10> <esc>:w %.save<CR> | ||
+ | "map! <F10> <esc>:w %.save<CR> | ||
" Fonctions | " Fonctions | ||
Line 157: | Line 159: | ||
endif | endif | ||
endfunction | 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> | ||
Line 174: | Line 189: | ||
zc : replie le fold courant | zc : replie le fold courant | ||
zo : deplie 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> | </pre> | ||
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