/MODE NORMAL/ ***** search the next occurence of the word under cursor /MODE INSERTION/ **i** mode insertion avant le curseur **I** mode insertion au debut de la ligne **a** mode insertion apres le curseur **A** mode insertion a la fin de la ligne **o** mode insertion a la ligne **O** mode insertion a la ligne du dessus **3iTEXT** ecrira trois fois TEXT **ctrl r** * colle depuis le clipboard en mode insertion /COMMANDES/ **:w** enregistrer **:w !sudo tee %** trick to save a page with sudo **:q** quitter **:wq** ou **ZZ** enregister et quitter **:q!** force a quitter **:** mode commande **work with multiple files :** **:e** open a new file in new buffer **:e C-d** print the list of files in current directory **:e C-d** auto complete with a mathing name of files in current directory **:b ** roll between opened files **:set hidden** add that to be able to cancel changes **:ls** list buffer oppened **:x bw** delete buffer number x, even if it's a directory **:bd** delete buffer **:bp** go to previous buffer **:bn** go to next buffer **:b#** switch to last edited buffer **:e.** open a temporary navigation explorer **:Explore / :ex** navigate through directory, rename, and plus **:Lexplore / :Lex** buffer directory open in left split window **:Lexplore 30** Explore window is of size 30 **:vertical resize 40** **search through files :** **:vim** the one function that gets to be name as the software ;) performes a kind of grep search on a list of files **:vim pattern *\* ** performs search on all sub folders **:vim pattern *.xml *.cpp** (without space between the two dots) performs search on all files of these extensions **:cn** go to next search result (might be in same file) **:cp** go to previous search result (might be in same file) **:cnf** go to next search result in next file **:cpf** go to previous search result in previous file **:cw** list all results **:%y+** copie toutes les lignes DANS LE CLIPBOARD **:set paste** copier sans les effets des tabulations **: up** affiche les dernieres commandes **:set number** ecrit les numeros de lignes **:set syntax=ON** active la coloration du texte **:set tabstop=4** montre les tabulations (meme existantes) de longueur 4 **:set colorcolumn=80** ajoute une ligne verticale a la colone 80 **transformer des espaces en tab :** **:set ts=2** ts pour tabstop, 2 si 2 espaces **:set noet** noet pour noexpandtab == use tabs no spaces **:%retab!** retabule tous le fichier **:set autoindent** copie l'indentation de la ligne precedente **:source ~/.vimrc** actualise le fichier vimrc sans redémarrer vim **:sav newname** save as with a new name **:!rm oldname** or **:!rm #** to delete the old copy **:sp** split windows (**** to navigate) **:vsp** split verivally **:on** unsplit by closing all windows except the active one **:sp filename** open a new or already existing filename in split mode **:sp %:h/filename** open new file in the same directory **%** refers to the current directory **:h** current directory minus file name and slash **:colo** active un systeme de coloration a choisir parmis : -- darkblue -- blue -- default -- delek -- desert -- -- elflord -- evening -- koehler -- morning -- -- murphy -- pablo -- peachpuff -- ron -- shine -- -- slate -- torte -- zellner -- (pour le modifier de manniere permanente : - pour l'utilisateur courant: ouvrir ou creer le fichier ~.vimrc et ajouter dedans: colo "nom du jeu de couleur"; - pour tous les utilisateurs: ouvrir le fichier /etc/vim/vimrc et y ajouter: colo "nom du jeu de couleur") /MODE VISUEL/ **v** mode visuel, selectionne avec le deplacement du curseur **v** **:s/o/n** remplace la premiere occurence par ligne en mode visuelle **v :s/o/n/g** remplace toutes les selections de chaque ligne **v :s/o/n/gc** demande confirmation (y:yes, n:no, a:all remaining, q:quit, l:last) /MODE REMPLACEMENT/ **R** mode remplacement (esc pour sortir) /MODE VISUAL BLOCK/ **ctrl v** passe en mode remplacement 1-mettre le curseur au debut d'un ligne a commenter 2-passer en visual block mode 3-avec les fleches descendre jusqu'a la derniere ligne 4-appuyer sur shift+i pour passer en mode insertion 5-inserer le.s signe.s de commentaire (par exemple: //) 6-appuyer sur esc (ttes les lignes vont se commenter) /MODE INTERACTIF/ **esc** quitte le mode insertion pour rentrer en mode interactif **x** supprime une lettre **r** remplace une lettre (rs remplace la lettre par s) **u** annuler **0** et **$** debut et fin de ligne **gg** et **G** aller a la premiere et derniere ligne **w** avancer le curseur au debut du mot suivant **b** reculer le curseur au debut du mot actuel **e** avancer le curseur a la fin du mot actuel **5G** aller a la ligne 5 **5g up/down** va 5 lignes up ou down **g,** va a la position du curseur avant la derniere modification **f** va au prochain signe demandé, par exemple "fa" va au prochain a **ctrl r** refaire **ctrl r 0** colle la derniere selection copiee avec y **ctrl n** auto-completion **dd** coupe une ligne **dw** coupe du curseur a la fin du mot **diw** coupe le "inner" mot **bde** pareil (begining delete end) **bdw** pareil mais en mangeant en plus l'espace en trop avec le mot suivant **d0** coupe du curseur jusqu'au debut de ligne **d$** coupe du curseur jusqu'a la fin de ligne **yy** copie la ligne **p** colle une ligne **.** repete la derniere commande **"ayy** copie la ligne dans le buffer a **"ap** colle la ligne du buffer a **g up/down** go a la ligne du dessous meme quand c la meme ligne en wrap **gUU** passe la ligne en uppercase **guu** passe la ligne en lowercase **bgUw** change le mot en uppercase **~** change casse du caractere sous le cursor ***** va a la prochaine occurence du mot sous le curseur **q:** affiche les dernieres commandes **==** rétablit la bonne indentation pour la ligne **=G** rétablit la bonne indentation pour toute la page **''** go to last cursor position **gx** open the file under cursor, or url or links **g ctrl a** increment a column of numbers : - create a column of "0" - then select them in visual block **ctrl v arrow** - then hit **g ctrl a** - or **g ctrl a a** if using screen - **ctrl a** is a vim feature to increase a number /REMPLACER/ **:s/old/new** remplace la 1ere occurence de ancien par nouveau **:%s/old/new** remplace toutes les occurences **:s/o/n/gi** i veut dire case insensitive **:s/A\zsB\zeC/X** remplace ABC par AXC **:s/A\zs[0-9]** * **\zeC/#\0@** remplace A865C par A#865@C, ou A123C par A#123@C replacement : **/old** va a la premiere prochaine occurence de 'old' **n** va a la prochaine occurence **:s//new** remplace 'old' par 'new' **N** va a la precedente occurence **&** repete la substitution **u** annule la deniere substitution etc... replacement2: **vim old %** va a la toute premiere occurence de 'old' **:s/old/new** remplace 'old' par 'new' **:cn** va a la prochaine occurence **&** repete la substitution **:p** va a la precedente occurence **u** annule la derniere sunstitution etc... **command! Name %s//** a écrire dans le fichier ~/.vimrc, créer une fonction **Name** (tjrs avec une majuscule) qui s'execute quand on l'appel. => **:command! Name %s/a/b %s/A/B** <=> grace à on peut écrire plusieurs fonctions a la suite **function! Test()** dans ~/.vimrc définit une fonction qui execute plusieurs commandes. Il faut les appeler avec :exec Test(), le ! est tres important pour que la fonction se réecrive a chaque fois, sinon conflit /SET SYNTAX FOR A FILE WITH EXTENSION NOT RECOGNIZE/ /in case the syntax already exist/ /like .tpp files with same syntax than .hpp, that have same syntax than .cpp/ /.hpp files are detected but not .tpp files/ **:set syntax=cpp** say to use cpp syntax **in .vimrc :** filetype on au BufNewFile,BufRead *.tpp set filetype=cpp