Vim

en 10 vimutes

Delapouite

delapouite

Bruno Heridet

ByteClub

morse

JavaScript

javascript

♥ Vim !

vim

Vim ?

vim

Pas vim

pas vim

Raccourcis

  • Ctrl-x
  • Ctrl-c
  • Ctrl-v
  • Ctrl-a
  • Ctrl-Alt-Shift-† ??

Clic clic

mouse

Trooooop loin !

↑↑↓↓←→←→ab

arrows

Encore troooop loin !

H J K L

Escape

esc

Caps-Lock !

(encore mieux : jj)

Undo

undo

Ctrl-zu

Repeat ?

repeat

. ⇐ le point vient à point

e-antiquité

  • 1969 - ed - Ken Thompson
  • 1976 - ex - Bill Joy
  • 1976 - vi - Bill Joy
  • 1991 - vi improved - Bram Moolenaar

Juste du texte ?

Landes : un homme en slip avec une pelle

On parle déjà de "SlipGate". Des membres de la Ligue de protection des oiseaux (LPO) et leur président, Allain Bougrain-Dubourg, ont mené, ce lundi 9 novembre au matin, une action contre le braconnage des pinsons dans les Landes.

Une demi-douzaine de militants, accompagnés par autant de journalistes, se sont introduits dans un champ de maïs du village d'Audon et ont commencé à détruire les pièges (qu'on appelle "matoles" dans le sud-ouest) que les chasseurs utilisent pour capturer les pinsons, une espèce protégée depuis 1976.

Des lignes

1 - Landes : un homme en slip avec une pelle

2 - On parle déjà de "SlipGate". Des membres de la Ligue de protection des oiseaux (LPO) et leur président, Allain Bougrain-Dubourg, ont mené, ce lundi 9 novembre au matin, une action contre le braconnage des pinsons dans les Landes.

3 - Une demi-douzaine de militants, accompagnés par autant de journalistes, se sont introduits dans un champ de maïs du village d'Audon et ont commencé à détruire les pièges (qu'on appelle "matoles" dans le sud-ouest) que les chasseurs utilisent pour capturer les pinsons, une espèce protégée depuis 1976.

Se déplacer dans une ligne

  • ^ — aller au début
  • $ — aller à la fin
  • k — aller à la ligne du dessus
  • j — aller à la ligne du dessous

Une ligne ⇒ des mots

Salut aux participants de ce Human Talks

7 mots

Se déplacer de mot à mot

Salut aux participants de ce Human Talks

w---e w-e w----------e we we w---e w---e
  • w — aller au début du prochain mot
  • e — aller à la fin du prochain mot
  • b — aller au début du précédent mot

Bondir à la lettre voulue

Salut aux participants de ce Human Talks

  • f{char} → fH

Salut aux participants de ce Human Talks

  • t{char} — unTil
  • ; — occurence suivante

Bondir dans le fichier

  • gg — aller au début du fichier
  • G — aller à la fin du fichier
  • m{char} — déposer une marque
  • '{char} — aller à la marque

OK, on bouge…

tektonik

et après ?

Un peu d'action

tektonik

Les 3 C : Couper, Copier, Coller

Opérateurs

  • d — delete
  • y — yank
  • p — put

Ok mais jusqu'où ?

Opérateurs + mouvements

  • d$ — efface jusqu'à la fin de la ligne
  • yb — copie jusqu'au début du mot précedent
  • dd — efface la ligne
  • yy — copie la ligne
  • dt, — efface jusqu'à la prochaine virgule
  • yG — copie jusqu'à la fin du fichier

Combien de fois

  • 5dj — efface les 5 prochaines lignes
  • 42yw — copie les 42 prochains mots

Do it again

Opérateur + mouvement = action

Les actions sont annulables (u) / répetables (.)

On a le contrôle sur la granularité !

OK, pas mal…

repeat

Mais moi je veux écrire du code !

Insertion

  • i — insérer avant le curseur
  • a — ajouter après le curseur
  • I — insérer au début de la ligne
  • A — ajouter à la fin de la ligne
  • o — insérer à la ligne suivante
  • O — insérer à la ligne précedente

Changer

  • cw — efface jusqu'à la fin du mot et insère
  • c$ — efface jusqu'à la fin de la ligne et insère
  • c'e — efface jusqu'à la marque e

Du code, bien plus que des mots

const add = (a, b) => a + b;

let sum = [1, 42, 51].reduce(add);

console.log(`la somme est ${sum}`) // 94;

Des functions, des strings, des arguments, des class, des listes…

Text-objects

  • dip — delete in paragraph
  • dap — delete around paragraph
  • cis — change in sentence
  • ya" — copy around double quote string
  • gUi[ — UPPERCASE in square brackets
  • >i{ — indent in braces

Yank, mais où ?

Des dizaines de registres à disposition

  • "gY — copie jusqu'a la fin de la ligne dans le registre g
  • "tp — colle le contenu du registre t
  • ddp — efface la ligne courante et colle depuis le registre anonyme → déplace la ligne

Macros

Les séries de commandes sont enregistrables dans des macros

Elles mêmes éditables depuis des registers.

Ces derniers peuvent être sauvegardés entre session.

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 !

Vim Quiz

  • Tim Pope, offre dans vim-commentary l'opérateur gc pour commenter
  • Kana Natsuno, propose dans son plugin le text-object af/if représentant la fonction courante

gcif

function gotham (joker) {
  joker = joker || "yolo";
  return Array(16).join(joker - 2) + " Batman!";
}
gotham("foo");

comment in function !

function gotham (joker) {
  // joker = joker || "yolo";
  // return Array(16).join(joker - 2) + " Batman!";
}
gotham("foo");

Bonus : et gcaf ?

Possibilités infinies

mind blown

Félicitations

expert

Vous êtes maintenant des experts du vim way

IDE ?

  • Langages
  • Split, Vsplit, tabs
  • Autocompletion
  • Snippets
  • Fuzzy Search
  • Git, Mercurial…
  • REPL
  • Diff
  • Linter
  • Builder
  • Session
  • Plain text config
  • VimL
  • Plugins Manager

Open Sauce++

neovim

Async, terminal, Lua…

vimistes du coin

tuppervim

Paris, Lyon, Grenoble…

Merci !

ghost

http://delapouite.com/slides

:qa!