name: inverse layout: true class: center, middle, inverse --- layout: false # Vim pour les canetons (§1) - survivre à Vim en cas d’apocalypse zombie - utiliser Vim comme un canard (ou presque) - débuter sur le chemin de l’éveil .footnote[:kazé / [@fabi1cazenave](https://github.com/fabi1cazenave)] --- template: inverse # Survivre à Vim… - pour écrire un message de commit - en cas d’apocalypse zombie - ou pire : quand Xorg / Wayland est tout cassé --- ## ~/.vimrc Sans `~/.vimrc` (ou `~/.vim/vimrc`), Vim émule Vi. Pour y remédier : - `:set nocp` (“no compatible”) - utiliser une distro convenable (`/etc/vim/vimrc`) - utiliser Neovim (`~/.config/nvim/init.vim`) --- ## Émulation Vi ? Si vraiment vous voulez revivre les années 60 : - les flèches ne fonctionnent pas en mode insertion - le mode n’est pas indiqué (surprise !) - un seul niveau de “undo” - etc… Vous êtes prévenus : `vim -u NONE` --- ## :help vim-modes Pour survivre il faut connaître ces trois modes : - *normal* : visualiser et manipuler du texte - *insertion* : ajouter (et supprimer) du texte - *commande* : options et commandes complexes --- ## Cheat mode - `i` passe en mode *insertion* - `Esc` passe en mode *normal* En mode insertion, Vim se comporte comme un Notepad… mais sans aucun raccourci clavier. Objectif : passer le plus de temps possible en mode *normal*. --- ## Enregistrer - mode *normal* - Ctrl-S (It’s a trap ! Remède : Ctrl-Q) --- ## Enregistrer (pour de vrai) - mode *normal* - “Enregistrer” == `:w` (“write”) - “Enregistrer sous…” == `:saveas [nom_de_fichier]` --- ## Panic mode Pour quitter Vim sans rien enregistrer : - mode *normal* - `:cq` (“cancel and quit”) Note : Vim sort avec une erreur (status == 1). Parfait pour annuler un commit. --- ## Annuler - mode *normal* - Ctrl-Z (It’s a trap ! Remède : `fg`) --- ## Annuler (pour de vrai) - mode *normal* - `u` (“undo”) Redo = Ctrl-R (suggestion : `nmap U
`). --- template: inverse # Recherche de texte --- ## Ctrl-F ? F3 ? En mode *normal* : - `/` + expression rationnelle pour chercher vers le bas - `?` + expression rationnelle pour chercher vers le haut - `n` pour aller à l’occurrence suivante - `N` pour aller à l’occurrence précédente Nota : `/` fonctionne dans beaucoup d’autres applications que Vim. --- ## Options qui tuent Indispensable : - `:set hlsearch` : mise en évidence de la recherche - `:set incsearch` : recherche incrémentale (“ find as you type”) Bonus : - `:set ignorecase` : recherche insensible à la casse… - `:set smartcase` … sauf si le motif de recherche contient des majuscules --- ## Commandes qui tuent En mode *normal* : - `*` : cherche le mot sous le curseur (vers le bas) - `#` : cherche le mot sous le curseur (vers le haut) --- template: inverse # Couper, Copier, Coller --- ## Mode *visuel* En mode *normal* : - `v` : sélection de texte caractère par caractère - `V` : sélection de texte ligne par ligne - `:set mouse=a` : active la sélection à la souris --- ## Ctrl-X, Ctrl-C, Ctrl-V ? En mode *visuel* : - `d` (“delete”) : coupe la sélection - `y` (“yank”) : copie la sélection En mode *normal* : - `p` (“paste”) : colle la sélection après le curseur --- ## Presse-papiers système Par défaut, Vim utilise ses propres registres de copie. `:set clipboard=unnamedplus` permet d’utiliser le presse-papiers système comme registre de copie par défaut : beaucoup plus simple quand on débute. Pour les autres, il y a `:help registers`. --- ## Commande qui tue En mode *normal* : - `.` : répète la dernière action ’nuf said. --- template: inverse # ~/.vimrc --- ## Quelques recommandations - ne pas copier des lignes de vimrc qu’on ne comprend pas (`:help` FTW) ; - ne pas utiliser des « distributions Vim » contenant tout un tas de greffons et options discutables ; - il est toujours bon de savoir utiliser un Vim sans aucun vimrc ni greffon. Voilà un **exemple** pas tant mal de vimrc. Pour info. --- ``` " coloration syntaxique syntax on colorscheme desert set background=dark " aides visuelles set number set ruler " recherche incrémentale set incsearch set hlsearch " auto-indentation à 2 espaces set autoindent set tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab " compléter avec
en mode commande set wildmenu set wildmode=longest,full " options honteuses (pour les faibles) set mouse=a set clipboard=unnamedplus ``` --- template: inverse # Aller plus loin « Ce n’est pas le chemin qui est difficile, c’est le difficile qui est chemin. » (et si c’est Bouddha qui le dit, c’est que c’est vrai) --- ## 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) --- ## Le chemin de l’éveil 1. repérer une tâche qu’on pourrait mieux faire 2. trouver une façon de mieux la faire 3. en faire une habitude 4. GOTO 1 Pour ça il y a [tupperVim](http://tuppervim.org/) — à Paris, Lyon, Grenoble… Alternative solo : VimTutor + [VimGolf](https://vimgolf.com/). --- template: inverse background-image: url(images/superduck.jpg) # Ayé. http://tuppervim.org/ .footnote[:kazé / [@fabi1cazenave](https://github.com/fabi1cazenave)]