name: inverse layout: true class: center, middle, inverse --- layout: false # Vim pour les canetons (§2) - comprendre les déplacements - utiliser les commandes de base - progresser sur le chemin de l’éveil .footnote[:kazé / [@fabi1cazenave](https://github.com/fabi1cazenave)] --- ## Rappels… `:help vim-modes` - *normal* : visualiser et manipuler du texte (`Esc`) - *visuel* : sélectionner du texte (`v`) - *insertion* : ajouter (et supprimer) du texte (`i`) - *commande* : options et commandes complexes (`:`) Les indispensables : - `u`, `Ctrl-r` : annuler, refaire - `:w`, `:q`, `:cq` : enregistrer, quitter, quitter sans enregistrer --- template: inverse # Les déplacements --- ## Souris, touchpad, pointeur ? - `:set mouse=a` : active la sélection à la souris - mais veut-on vraiment faire un tel effort physique ? --- ## ←↓↑→ - pro tip : en appuyant sur une flèche, le curseur se déplace dans la direction indiquée par la flèche - ouais mais non, trop loin `~/.vimrc` ``` map
imap
map
imap
map
imap
map
imap
``` --- ## HJKL ? Pour des raisons historiques : - `h` : gauche - `j` : bas - `k` : haut - `l` : droite Ça fonctionne avec d’autres applications : - `jk` : gmail, feed.ly, twitter, emacs, screen, less/more/most… - `hjkl` : tweetdeck, Awesome, i3 (*ahem*), NetHack… --- ## JK, vraiment ? TL;PL : oui, avec modération (= sans répétitions) - `{`, `}` : sauter à la ligne vide précédente / suivante - `/`, `?` : rechercher vers le haut / vers le bas (+ `n`, `N`) - `*`, `#` : idem, avec le mot sous le curseur (PRO-TIP !) - `gg`, `G` : sauter en début / fin de fichier `~/.vimrc` ``` " recherche incrémentale set hlsearch set incsearch ``` --- ## HL, vraiment ? Mouahahahahaha, nope. - `w`, `b` : mot suivant / précédent - `W`, `B` : MOT suivant / précédent (= délimité par des espaces) - `e`, `ge` : fin de mot suivant / précédent - `E`, `gE` : fin de MOT suivant / précédent (= délimité par des espaces) - `^`, `$` : début / fin de ligne --- ## Hopopop, ch’uis perdu. Les indispensables, verticalement : - `j`, `k` : ligne à ligne - `/`, `?` : recherche Les indispensables, horizontalement : - `w`, `b` : mot à mot - `^`, `$` : début / fin de ligne Tous les autres : `:help navigation` --- template: inverse # Poésie minimaliste On n’appuie pas sur des raccourcis clavier. On discute avec Vim. On lui adresse des demandes précises sur quoi effectuer avec quel morceau. Tout ceci de manière annulable, répétable, factorisable, partageable ! [@delapouite](https://twitter.com/Delapouite) — auteur de [« Vim en 10 vimutes »](http://delapouite.com/slides/vim-en-10-vimutes/#/vimutes) --- ## Sélection de texte Trois variantes de mode *visuel* : - `v` = caractère par caractère : `w`, `b`, `^`, `$`… - `Shift-v` = ligne par ligne : `j`, `k`, `{`, `}`… - `Ctrl-v` = sélection rectangulaire … et `Esc` (ou même opérateur) pour revenir au mode *normal*. --- ## Règle 0 (niveau : caneton) `sélection opérateur` Une fois la sélection effectuée, les opérateurs déclenchent une action : - `d` : delete (couper) - `y` : yank (copier) - `p` : paste (coller) - `c` : change (couper + passer en mode *insertion*) Démo ! --- template: inverse # Bonus Arrivés ici, vous en êtes au niveau « caneton ». Félicitations, vous êtes autonomes avec Vim ! Les diapos qui suivent visent à atteindre le niveau « colvert ». Ne clignez pas des yeux. --- ## Règle 1 `opérateur mouvement` - `dw` : efface jusqu’à la fin du mot (“delete word”) - `d$` : efface jusqu’à la fin de ligne - `yW` : copie jusqu’à la fin du MOT (“yank Word”) - `cw` : efface jusqu’à la fin du mot et passe en mode *insertion* (“change word”) Bonus : `.` pour répéter l’action. --- ## Règle 1bis `[répétition] operateur [répétition] mouvement` - `3dw` : efface un mot, trois fois - `d3w` : efface trois mots (bon, OK, c’est pareil) - `5d3w` : efface trois mots, cinq fois - `c3w` : efface trois mots et passe en mode *insertion* --- ## text-objects `modifieur objet` Modifieur : - `i`, `a` : “in” ou “around” Objet : - `w`, `W` : mot - `s`, `p` : phrase, paragraphe (point / ligne vide) - `b`, `B` : bloc (parenthèses / accolades) - `t` : tag (html/xml) - `[`, `]`, `{`, `}`, `(`, `)`, `'`, `"`… --- ## Règle 2 `opérateur objet` - `vaw` : sélectionne le mot - `daw` : supprime le mot - `dip` : supprime le paragraphe (*sans* la ligne de séparation) - `dap` : supprime le paragraphe (*avec* la ligne de séparation) - `ci'` : change le contenu d’une chaîne Bonus : `.` pour répéter l’action, encore et derechef. --- ## Idiomes Opérateur répété = action sur une ligne : - `dd` : couper toute la ligne - `yy` : copier toute la ligne - `cc` : changer toute la ligne Opérateur en majuscule = action jusqu’à la fin de ligne : - `D` : effacer jusqu’à la fin de ligne (d$) - `C` : changer jusqu’à la fin de ligne (c$) --- template: inverse background-image: url(images/superduck.jpg) # Ayé. http://tuppervim.org/ .footnote[:kazé / [@fabi1cazenave](https://github.com/fabi1cazenave)]