vim¶
plein de doc http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know
Paramétrage¶
dans le fichier HOME/.vimrc il est possible d’ajouter des paramètres:
syn enable
set number
set autoindent
set nopaste
set shiftwidth=4
set softtabstop=4
set tabstop=4
syntax on
set ai
set hlsearch
pour permettre que lors de l’indentation automatique les tabulations soient remplacé par des espaces il faut ajouter après autoindent
set expandtab
pour empêcher la sauvegarde automatique
set nobackup
set nowritebackup
pour empêcher les bips en cas d’erreurs et les remplacer par un flash visuel
set visualbell
pour avoir un visuel plus joli on peut modifier la font utilisée
set gfn=Courier:h11
pour avoir les raccourcit vers une liste de repertoire (plugin NERDTree) et les Crtl-c / a /v /x
map <C-e> :NERDTree<CR>
map <C-a> ggVG
map <C-c> "+y
map <C-x> "+x
map <C-v> "+gP
pour pouvoir lancer facilement la commande python par F2 on peut ajouter dans .vimrc
function! Python()
:! python "%"
endfunction
map <F2> :call Python()<CR>
donc au total le .vimrc ressemble à ceci
" general
syn enable
set number
set autoindent
set expandtab
set nopaste
set shiftwidth=4
set softtabstop=4
set tabstop=4
set visualbell
syntax on
set ai
"set hlsearch
set nohlsearch
set colorcolumn=81
set nobackup
set nowritebackup
" encoding
set encoding=utf-8
set fileencoding=utf-8
" map copy/paste print
map <C-o> :e .<CR>
map <C-a> ggVG
map <C-c> "+y
map <C-x> "+x
map <C-v> "+gP
map <C-s> <Esc>:w<CR>
imap <C-s> <Esc>:w<CR>
noremap <C-p> :ha<CR>
function! Load()
if &filetype == "python"
:! start cmd /k python "%"
endif
if &filetype == "dosbatch"
:! start cmd /k "%"
endif
endfunction
map <F5> :call Load()<CR><CR>
function! LoadDebug()
if &filetype == "python"
:! python -m pdb "%"
endif
endfunction
map <F6> :call LoadDebug()<CR>
function! LoadHelp()
echo "ha print C-e explorer F5 load file F6 load debug"
echo "ls list buffer bd del buffers b? select buffers q quit vi"
echo "<C-t> new tab <C-o> new tab open <Esc>v<Right> selected F2 terminal"
echo "e file open file s/find/replace/g find and replace all :vert diffsplit file2 comparaison"
endfunction
map <F1> :call LoadHelp()<CR>
"fonction tab
:command New tabnew
noremap <C-t> :tabnew<CR>
noremap <C-n> :tabnew<CR>
noremap <C-o> :tabnew<CR>:e .<CR>
noremap <C-Right> :tabnext<CR>
noremap <C-Left> :tabprevious<CR>
map <S-Right> <Esc>v<Right>
map <S-Left> <Esc>v<Left>
noremap <S-Right> <Esc>v<Right>
noremap <S-Left> <Esc>v<Left>
" open terminal
function! Term()
:!start cmd /k cd %:p:h
endfunction
:command TERM call Term()
map <F2> :call Term()<CR>
color mycolor
pour l’encoding il faut en plus ajouter
set encoding=utf-8
set fileencoding=utf-8
On peut ajouter une fonction pour formatter notre code qui sera appellé par la commande format
" open terminal
function! Format(synt)
if a:synt == "python"
:! start cmd /k python /opt/prettycode.py -i "%" -o "%" -s python
endif
if a:synt == "sql"
:! start cmd /k python /opt/prettycode.py -i "%" -o "%" -s python
endif
if a:synt == "java"
:! start cmd /k jalopy "%"
endif
if a:synt == "xml"
:! start cmd /k xmllint --format "%" --output "%"
endif
endfunction
:command FORMAT call Format(b:current_syntax)
pour linux il faut supprimer le "start cmd /k"
pour avoir un gvim sans barre d’outil
:set guioptions-=m "remove menu bar
:set guioptions-=T "remove toolbar
:set guioptions-=r "remove right-hand scroll bar
:set guioptions-=L "remove left-hand scroll bar
Warning
sur windows il faut modifie le fichier _vimrc qui ce trouve dans le répertoire d’installation de gvim
Note
pour avoir un gvim (une seule instance) avec plusieurs onglets essayer ceci
gvim first_file.dat
gvim --remote-tab second_file.dat
il est alors possible d’écrire un fichier bat (que vous pourrez transformer en exe) qui n’ouvre toujours qu’un gvim
@echo off
tasklist /FI "IMAGENAME eq gvim.exe" | grep gvim.exe
if ERRORLEVEL 1 goto Process_NotFound
:Process_Found
"C:\Program Files\Vim\vim73\gvim.exe" --remote-tab "%1"
goto END
:Process_NotFound
"C:\Program Files\Vim\vim73\gvim.exe" "%1"
goto END
:END
pour ouvrir les fichiers avec GVimOne ainsi créé vous pouvez modifier dans un explorateur le paramétrage via OutilOption des dossiersTypes de fichier .. figure:: data20110214_1.jpg
Pour windows 7 (Vista) on peut créer un nouveau “Edit with gVimOne” en modifiant la base de registre
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Open with gvim]
@="Edit with gVimOne"
[HKEY_CLASSES_ROOT\*\shell\Open with gvim\Command]
@="C:\\Program Files\\Vim\\vim73\\gvimOne.exe \"%1\""
Warning
sous windows 8 pour avoir les accents en mode console il faut ajouter
set encoding=utf-8
set termencoding=cp1252
et dans alias.bat un “chcp 1252” afin d’être sur d’avoir une console dos avec un encoding en 1252
Utilisation¶
l’autocomplementation
<crtl><x> + <crtl><n>
<crtl><x> + <crtl><o>
<crtl><x> + <crtl><k>
Note
il existe plusieurs mode d’auto-complementation basé sur le type de code, un dictionnaire ou bien sur ce qui est déjà écrit
lancement d’une commande
<echap>:!ma_commande
Commande utile¶
Warning
il faut ajouter ”:” avant chaque commande
- o NameFile ouverture d’un fichier
- w [NameFile] enregistrement d’un fichier
- file NameFile sauvegarde du fichier
- q fermeture
- ha impression
- crtl+g fin de fichier
- sh accès un une console classique (exit pour revenir au fichier)
- ”! cmd” lance la commande cmd
- r file insère le contenu du fichier dans le buffer
- r !cmd envoie le contenu de la commande dans le buffer
- yy copie la ligne courante
- xp colle le tampon
- A ce place en fin de ligne
- /tutu recherche la chaine tutu
- s/chaine à chercher/texte de remplacement/g recherche et remplace
- e . Ouvre l’explorateur de fichiers intégré
- Sex sépare en la fenetre en deux et ouvre l’explorateur
- crtl + w se déplace dans les fenêtres
- crtl+n complète le mot
- crtl+x compléte le mot en utilisant le dictionnaire
- buffers liste des fichiers ouverts
- ls même chose que :buffers
- buffer 2 ouvre le fichier contenu dans le tampon 2
les buffeurs:
: ls [liste des buffers]
: bx (x=numero du buffer) [atteindre un buffer]
:e # [passer au buffer suivant]
:bd [supprime le buffer en cours]
Editer le premier buffer avec <ctrl> fleche haut
noremap <C-Up> :1b!<CR>
Editer le dernier buffer avec <ctrl> fleche bas
noremap <C-Down> :blast!<cr>
Editer le prochain buffer avec <ctrl> fleche droite
noremap <C-Right> :bnext!<cr>
Editer le précédent buffer avec <ctrl> fleche gauche
noremap <left> :bprevious!<cr>
lancer une commande
:! cmd
lancer la commande python avec le fichier en paramètre
:! python "%"
recherche / remplace
:/tutu recherche la chaine tutu
:s/chaine à chercher/texte de remplacement/g recherche et remplace
plugin¶
NERDTree¶
très utile: il suffit de lancer la commande :NERDTree pour voir un arbre des répertoire apparaitre
AirLine¶
permet d’avoir une barre d’état plus jolie et avec plus d’information
l’installation
cd .vim
git clone https://github.com/bling/vim-airline.git
mv vim-airline/* .
rm -Rf vim-airline/
rm Gemfile
rm LICENSE
rm Rakefile
rm README.md
wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf
mv PowerLineSymbols.otf .fonts/
fc-cache -vf .~/.fonts
Note
si le dossier ~/.vim n’existe pas il faut le créer. On peut mettre aussi le fichier .vimrc avec un lien sur ~ ce qui permet de garder toutes la configuration de vim dans un même répertoire
le paramétrage de vim dans .vimrc
" Airline setup
"------------------------------------------------------------------------------
set t_Co=256
set laststatus=2
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled = 1
Afin d’avoir la barre du type
il faut que le terminal utilise la font Powerlinesymbol ... exemple de configuration dans gnome-terminal
vous pouvez trouver d’autres font powerline sur http://github.com/Lokaltog/powerline-fonts
sous windows il faut installer la police DejaVuSansMono Powerline que vous pouvez trouver sur le lien https://github.com/Lokaltog/powerline-fonts puis modifier la police dans gvim.
Cette modification peut être définitive si on ajoute dans .vimrc
set guifont=DejaVu\ Sans\ Mono\ for\ Powerline
Pour le vim en console sous windows je n’ai pas trouvé de solution pour utiliser la font, il faut modifier le fichier .vimrc ainsi
let g:airline_powerline_fonts=0
let g:airline_left_sep='>'
let g:airline_right_sep='<'
Note
tout cela a été trouvé dans la doc de airline :help airline
créer une nouvelle synthaxe¶
dans le répertoir vim73/synthax créer un fichier fred.vim (qui est une copie de python.vim par exemple)
dans le fichier .vimrc ajouter la ligne
autocmd BufRead *.fred set ft=fred
et voila maintenant tout les fichiers *.fred s’ouvrirons avec la synthaxe fred
coloration¶
n’ayant pas trouvé ce qui me convenait sous le terminal windows voilà deux exemples simple mais efficase
mycolor.vim
" local syntax file - set colors on a per-machine basis:
" vim: tw=0 ts=4 sw=4
" Vim color file
" inpired by: Ron Aaron <ron@ronware.org>
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "mycolor"
hi Normal ctermfg=White ctermbg=black guifg=cyan guibg=black
hi Comment term=bold ctermfg=DarkGrey ctermbg=black guifg=#80a0ff
hi Constant term=underline ctermfg=Magenta ctermbg=black guifg=Magenta
hi Character term=underline ctermfg=Green ctermbg=black guifg=Green
hi Special term=bold ctermfg=Magenta ctermbg=black guifg=Red
hi Identifier term=underline ctermfg=Cyan ctermbg=black guifg=#40ffff cterm=bold
hi Statement term=bold ctermfg=Yellow ctermbg=black guifg=#aa4444 gui=bold
hi PreProc term=underline ctermfg=Red ctermbg=black guifg=#ff80ff
hi Type term=underline ctermfg=LightGreen ctermbg=black guifg=#60ff60 gui=bold
hi Function term=bold ctermfg=cyan ctermbg=black guifg=cyan
hi Repeat term=underline ctermfg=Red ctermbg=black guifg=white
hi Operator ctermfg=Red ctermbg=black guifg=Red
hi Ignore ctermfg=black ctermbg=black guifg=bg
hi Error term=reverse ctermfg=White ctermbg=Red guibg=Red guifg=White
hi Todo term=standout ctermfg=Black ctermbg=Yellow guifg=Blue guibg=Yellow
hi LineNr ctermfg=Darkgreen ctermbg=black cterm=italic
hi Excep ctermfg=brown ctermbg=black
" Common groups that link to default highlighting.
" You can specify other highlighting easily.
hi link String Character
hi link Character Character
hi link Number Constant
hi link Boolean Constant
hi link Float Number
hi link Conditional Repeat
hi link Label Statement
hi link Keyword Statement
hi link Exception Excep
hi link Include PreProc
hi link Define PreProc
hi link Macro PreProc
hi link PreCondit PreProc
hi link StorageClass Type
hi link Structure Type
hi link Typedef Type
hi link Tag Special
hi link SpecialChar Special
hi link Delimiter Special
hi link SpecialComment Special
hi link Debug Special
mycolorinv.vim
" local syntax file - set colors on a per-machine basis:
" vim: tw=0 ts=4 sw=4
" Vim color file
" inpired by: Ron Aaron <ron@ronware.org>
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "mycolorinv"
hi Normal ctermfg=Black ctermbg=White guifg=cyan guibg=White
hi Comment term=bold ctermfg=DarkGrey ctermbg=White guifg=#80a0ff
hi Constant term=underline ctermfg=DarkMagenta ctermbg=White guifg=Magenta
hi Character term=underline ctermfg=Darkgreen ctermbg=White guifg=Darkgreen
hi Special term=bold ctermfg=DarkMagenta ctermbg=White guifg=Red
hi Identifier term=underline ctermfg=Cyan ctermbg=White guifg=#40ffff cterm=bold
hi Statement term=bold ctermfg=Blue ctermbg=White guifg=#aa4444 gui=bold
hi PreProc term=underline ctermfg=Red ctermbg=White guifg=#ff80ff
hi Type term=underline ctermfg=Darkgreen ctermbg=White guifg=#60ff60 gui=bold
hi Function term=bold ctermfg=DarkCyan ctermbg=White guifg=cyan
hi Repeat term=underline ctermfg=Red ctermbg=White guifg=white
hi Operator ctermfg=Red ctermbg=White guifg=Red
hi Ignore ctermfg=White ctermbg=White guifg=bg
hi Error term=reverse ctermfg=Black ctermbg=Red guibg=Red guifg=White
hi Todo term=standout ctermfg=Black ctermbg=Yellow guifg=Blue guibg=Yellow
hi LineNr ctermfg=Darkgreen ctermbg=White cterm=italic
hi Excep ctermfg=brown ctermbg=White
" Common groups that link to default highlighting.
" You can specify other highlighting easily.
hi link String Character
hi link Character Character
hi link Number Constant
hi link Boolean Constant
hi link Float Number
hi link Conditional Repeat
hi link Label Statement
hi link Keyword Statement
hi link Exception Excep
hi link Include PreProc
hi link Define PreProc
hi link Macro PreProc
hi link PreCondit PreProc
hi link StorageClass Type
hi link Structure Type
hi link Typedef Type
hi link Tag Special
hi link SpecialChar Special
hi link Delimiter Special
hi link SpecialComment Special
hi link Debug Special
" color dispo
" Black White
" Green DarkGreen LightGreen
" Brown
" Red DarkRed LightRed
" Grey DarkGrey LightGrey
" Magenta DarkMagenta LightMagenta
" Cyan DarkCyan
" Yellow DarkYellow LightYellow
" Blue DarkBlue LightBlue