Renamed blog post

This commit is contained in:
Yann Esposito (Yogsototh) 2011-08-25 13:51:07 +02:00
parent 61b9263a84
commit 881bc14d41
16 changed files with 19 additions and 1424 deletions

View file

@ -1,244 +0,0 @@
-----
isHidden: false
menupriority: 1
kind: article
created_at: 2011-08-18T00:28:20+02:00
title: Efficient Vim knowledge
author_name: Yann Esposito
author_uri: yannesposito.com
# tags:
-----
<%= blogimage("uber_leet_use_vim.jpg","Über leet use vim!") %>
begindiv(intro)
<%= tldr %> Want to learn vim (the best text editor known to human kind) the fastest way possible. I suggest you a way.
enddiv
[Vim] the Six Billion Dollar editor
> Better, Stronger, Faster.
Learn [vim] and it will be your last text editor.
There isn't any better text editor I know.
Hard to learn, but it will pay a billion times.
I suggest you to learn it in 4 steps:
1. Survive
2. Feel comfortable
3. Feel Better, Stronger, Faster
4. Power Overwhelming
By the end of this journey, you'll become a vim superstar.
[Vim]: http://www.vim.org
[vim]: http://www.vim.org
## 1st Level: Survive
0. Install [vim]
1. Launch vim
2. DO NOTHING! Read.
In a standard editor, typing on the keyboard is enough to write something and see it on the screen.
Not this time.
Vim is in _edition_ mode.
Lets get in _insertion_ mode.
Type on the letter `i`.
Now you should feel a bit better.
You can type letters like in a standard notepad.
To get back in _edition_ mode just tap the `ESC` key.
Now you know how to switch between insertion and edition mode. And now, the list of command you can use in edition mode to survive:
> - `i`: Insertion mode. Type `ESC` to return to edition mode.
> - `x`: Delete the char under the cursor
> - `:wq`: Save and Quit (`:w` save, `:q` quit)
> - `dd`: Delete (and copy) current line
> - `p`: Paste current line
> - `hjkl` (recommended but not mandatory): basic cursor move (<-&darr;&uarr;->). Hint `j` look like a down arrow.
> - `:help <command>`: Show help about <command>, you can start using `:help` without anything else.
Only 5 commands. This is very few to start.
Once these command start to become natural (may be after a complete day), you should try to confront to level 2.
## 2nd Level - Feel comfortable
You know the survivor commands.
Now, just a bit more commands to use.
I suggest:
1. Insertion mode variations:
> - `a` -> insert _after_ the cursor
> - `o` -> insert a new line after the current one
> - `O` -> insert a new line before the current one
> - `cw` -> replace the word under the cursor
2. Basic moves
> - `0` -> go to first column
> - `^` -> go to first character of the line
> - `$` -> go to the end of line
> - `/pattern` -> search for `pattern`
3. Copy/Paste
> - `P` -> copy before, remember `p` is copy after current position.
> - `yy` -> copy current line, easier but equivalent to `ddP`
4. Undo/Redo
> - `u` -> undo
> - `C-r` -> redo
## Level 3 - Better. Stronger. Faster.
Congratulation! If you managed to go until here, we can start the interresting stuff.
At level 3, we'll only talk about command which are compatible in the old vi.
Lets start by the first vi super-power. Limit to repeat yourself (basic):
1. `.` -> (dot) will repeat the last command,
2. N&lt;command&gt; -> will do the command N times.
Some examples, open a file and type:
> - `2dd` -> will delete 2 lines
> - `3p` -> will paste the text 3 times
> - `100idesu [ESC]` -> will write "desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu "
> - `.` -> Just after the last command will write again the 100 "desu ".
> - `3.` -> Will write 3 "desu" (and not 300, how clever).
Second vi super power, moving (basic):
Knowing how to move efficiently with vim is _very_ important. Do not jump this section.
1. N`G` -> Go to line N
2. `gg` -> shortcut for `1G`, go to the start of the file
3. `G` -> Go to last line
4. Word moves:
> 1. `w` -> go to the start of the following word,
> 2. `e` -> go to the end of this word.
>
> By default, word are composed of letter and the underscore character.
> If you want to use word in the meaning of group of letter separated by spaces, just use uppercases:
>
> 1. `W` -> go to the start of the following "extended" word,
> 2. `E` -> go to the end of this "extended" word.
Now lets talk about very efficient moves:
> - `%` : Go to corresponding `(`, `{`, `[`.
> - `*` (resp. `#`) : go to next (resp. previous) occurrence of the word under the cursor
Believe me, these last three command are gold.
## Level 4 - Power Overwhelming
With all preceding commands you should be comfortable to use vim.
But now, here are the killer features.
Some of these features were the reason I started to use vim.
Move on current line, any of: `0^$fFtT,;`
> - `0` -> go to column 0
> - `^` -> go to first character on the line
> - `$` -> go to the last character on the line
> - `fa` -> go to next occurrence of the letter `a` on the line. `,` (resp. `;`) will seek for the next (resp. previous) occurrence.
> - `t,` -> go just after the character `,`.
> - `3fa` -> search the 3rd occurrence of `a` on this line.
> - `F` and `T` -> like `f` and `t` but backward.
_Some Useful Tips_
>
> - `dt"` -> remove everything until the `"`.
> - `vi"` -> select everthing inside two `"`.
Select rectangular blocs: `C-V`.
s
Rectangular blocks are very useful to comment many lines of code.
Typically: `0C-VC-dI// [ESC]`
- `^` -> go to start of the line
- `C-V` -> Start block selection
- `C-d` -> move down (could also be `jjj` or `%`, etc...)
- `I// [ESC]` -> write `// ` to comment each line
<%= blogimage("rectangular-blocks.gif","Rectangular blocks") %>
Completion: `C-n` and `C-p`.
In insertion mode, just type the start of a word, then type `C-p`, magic...
<%= blogimage("completion.gif","Completion") %> en: Macros : `qa` do something `q`, then `@a` (also `@@`, repeat the last `@x`).
`qa` record your actions in the _register_ `a`. Then `@a` will replay the macro saved into the register `a` as if you typed it.
> Example:
> On a line containing only the number 1, type this:
> `qaYpC-aq` -> `qa` start recording. `Yp` duplicate this line. `C-a` increment the number. `q` stop recording.
>
> `@a` -> write 2 under the 1
> `@@` -> write 3 under the 2
> Now do `100@@` will create a list of increasing numbers until 103.
<%= blogimage("macros.gif","Macros") %>
But also,
Visual selection
We saw an example with `C-V`.
There is also `v` and `V`.
Once the selection made, you can:
- `J` -> join all lines together.
- `<` (resp. `>`) -> indent to the left (resp. to the right).
- `=` -> auto indent
<%= blogimage("autoindent.gif","Autoindent") %>
Add something at the end of all visually selected lignes:
- `S-V`
- go to desired line (`jjj` or `C-d` or `/pattern` or `%` etc...)
- `$` go to the end of line
- `A`, write texte, `ESC`.
<%= blogimage("append-to-many-lines.gif","Append to many lines") %>
Splits : `:split` and `vsplit`. You should look at `:help split`.
But main commands are:
> - `:split` -> create a split (`:vsplit` create a vertical split)
> - `C-w&lt;dir&gt;` : where dir is any of `hjkl` or <-&darr;&uarr;-> to change split.
> - `C-w_` (resp. `C-w|`) : maximise size of split (resp. vertical split)
> - `C-w+` (resp. `C-w-`) : Grow (resp. shrink) split
<%= blogimage("split.gif","Split") %>
## Conclusion
You now have 90% of all command I use every day.
Take the time to be used for each command you integrate.
Do not try to know too much on one time.
Just try to use one or two new command per day.
After two to three weeks you'll start to feel very comfortable.
Vim will be your last editor.
You will learn about NERDTree, folds and many other features.
And keep in mind I am not a vim master, just a regular user.
<script>
// Style the keywords
$(document).ready(function() {
$('code').css({ 'border': 'solid 1px #CCC', 'padding':'3px'});
});
</script>

View file

@ -1,244 +0,0 @@
-----
isHidden: false
menupriority: 1
kind: article
created_at: 2011-08-18T00:28:20+02:00
title: Vim efficace avec peu d'efforts
author_name: Yann Esposito
author_uri: yannesposito.com
# tags:
-----
<%= blogimage("uber_leet_use_vim.jpg","Über leet use vim!") %>
begindiv(intro)
<%= tlal %> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider.
enddiv
[Vim] ou l'éditeur qui vallait 3 milliards :
> Meilleur, plus fort, plus rapide.
Apprenez [vim] et ce sera votre dernier éditeur.
Aucun éditeur que je connaise ne le surpasse.
Sa prise en mais est difficile, mais payante.
Je vous conseille de l'apprendre en 4 étapes :
1. La survie
2. Se sentir à son aise
3. Se sentir meilleur, plus fort et plus rapide
4. Les super-pouvoirs
Après ces leçons, vous serez une super star de l'édition de texte.
[Vim]: http://www.vim.org
[vim]: http://www.vim.org
## 1er Niveau: survivre
0. Installez [vim]
1. Lancez vim
2. NE TOUCHEZ A RIEN! Lisez
Dans un éditeur normal, il suffit de taper sur une touche du clavier et la lettre s'affiche à l'écran.
Pas ici.
Vim est en mode _edition_.
Commençons par placer vim en mode _insertion_.
Tapez sur la touche `i`.
Voilà, c'est magique.
Vous pouvez tapez comme dans un éditeur standard.
Pour repasser en mode édition tapez sur la touche `Echap`.
Maintenant que vous savez passer du mode edition au mode insertion. Voici les commandes de survie (toutes en mode edition) :
> - `i` : Passer en mode insértion. Taper Echap pour repasser en mode edition.
> - `x` : Supprimer le caractère sous le curseur
> - `:wq` : Sauvegarder et quitter (`:w` sauvegarde, `:q` quitter)
> - `dd` : Supprimer (et copier) la ligne courante
> - `p` : Coller
> - `hjkl` (optionnel) : se déplacer (<-&darr;&uarr;->). Souvenez vous `j` ressemble à une flèche vers le bas.
Seulement 5 commandes. Voilà, c'est tout pour un début.
Essayez d'éditer vos fichier comme ça pendant une petite journée.
Lorsque ces commandes vous seront devenues naturelle.
Vous pouvez passer à l'étape d'après.
## 2ème Niveau - Se sentir à son aise
Vous connaissez les commandes de survie. Passons à des commandes pour être un peu plus à notre aise. Je vous suggère :
1. Les variantes de l'insertion
> - `a` -> comme `i`, mais après la position du curseur.
> - `o` -> comme `i`, mais à la ligne suivante
> - `O` -> comme `o` mais ajoute la ligne avant.
> - `cw` -> remplacer le mot sous le curseur.
2. Déplacements basiques
> - `0` -> aller à la première colonne
> - `^` -> aller au premier caratère de la ligne
> - `$` -> aller à la fin de la ligne
> - `/pattern` -> rechercher `pattern` dans le fichier.
3. Copier/Coller
> - `P` -> Coller avant, souvenez-vous que `p` collait après la position du curseur.
> - `yy` -> copier la ligne courante. C'est plus simple et équivalent à `ddP`
4. Annuler/Refaire
> - `u` -> Annuler (undo)
> - `C-r` -> Refaire
## Niveau 3 - Meilleur. Plus fort. Plus rapide.
Bravo ! Si vous êtes arrivé jusqu'ici nous allons pouvoir commencer à apprendre les choses vraiment intéressantes.
Pour cette section, je vais seulement parler de choses qui sont aussi disponible dans le vieux vi.
Commençons par le premier super pouvoir de vi, éviter les répétitions (niveau 1):
1. `.` -> Le caractère point répètera la dernière commande.
2. N&lt;commande&gt; -> répètera la commande N fois.
Quelques exemples, ouvrez un fichier avec vim et tapez :
> - `2dd` -> Supprimera 2 lignes
> - `3p` -> copiera 3 fois d'affiler le texte copié
> - `100idesu [ESC]` -> écrira "desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu "
> - `.` -> Juste après la dernière commande réécrira les 100 "desu ".
> - `3.` -> Écrira 3 "desu" et non pas 300.
Second super pouvoir de vim, les déplacements (niveau 1) :
Savoir se déplacer efficacement avec vim est _très_ important, ne sautez pas cette section.
1. N`G` -> Aller à la ligne N
2. `gg` -> raccourci pour `1G`, retourner au début du fichier
3. `G` -> Aller à la dernière ligne.
4. Déplacement autour des mots:
> 1. `w` -> aller au début du mot suivant
> 2. `e` -> aller à la fin du mot courant
>
> Par défaut les mots sont seulement composés de lettres (et du caractère souligné `_`).
> Si vous voulez considérer les mots au sens "jusqu'au prochain espace", alors il suffit d'utiliser les majuscules.
>
> 1. `W` -> aller au début du mot "étendu" suivant
> 2. `E` -> aller à la fin du mot "étendu" courant
Maintenant passons aux déplacement qui vont vous faire sentir vraiment meilleur :
> - `%` : Aller à la parenthèse, accolade, crochet correspondante.
> - `*` (resp. `#`) : Aller à la prochaine (resp. précédente) occurrence du mot sous le curseur
Croyez moi, ces trois dernières commandes valent de l'or.
Retenez les, et vous gagnerez beaucoup de temps.
## Niveau 4 - Power Overwhelming
Avec toutes les commandes précédentes vous avez presque toutes les commandes que j'utilise tous les jours.
Mais voici les killer features de vim.
Celles que je n'ai retrouvé que dans vim (ou presque).
Déplacement sur la ligne : `0^$fFtT,;`
> - `0` -> aller à la colonne 0,
> - `^` -> aller au premier caractère de la ligne
> - `$` -> aller au dernier caractère de la ligne
> - `fa` -> vous amène à la prochaine occurrence de a sur la ligne courante. `,` (resp. `;`) recherche l'occurrence suivante (resp. précédente).
> - `t,` -> vous amène juste après le `,`.
> - `3fa` -> recherche la 3ième occurrence de `a`.
> - `F` et `T` -> comme `f` et `t` mais en arrière.
_Quelques trucs utiles_
>
> - `dt"` -> supprime tout jusqu'au `"`.
> - `vi"` -> selectionne tout ce qui se trouve entre les deux `"`.
Sélection de blocs rectangulaires : `C-V`.
s
Les blocs rectangulaires sont très commodes pour commenter plusieurs lignes de codes.
Typiquement: `^C-VC-dI// [ESC]`
- `^` -> aller en début de ligne
- `C-V` -> Commencer la sélection du bloc
- `C-d` -> se déplacer vers le bas (pourrait être `jjj` ou `%` etc...)
- `I// [ESC]` -> écrit `// ` pour commenter le reste de la ligne.
<%= blogimage("rectangular-blocks.gif","Rectangular blocks") %>
Complétion : `C-n` et `C-p`.
En mode insertion, commencez à écrire le début d'un mot déjà présent dans l'un des buffers (fichers) ouvert et tapes `C-p`. Magique.
<%= blogimage("completion.gif","Completion") %> en: Macros : `qa` do something `q`, then `@a` (also `@@`, repeat the last `@x`).
Macros : `qa` faire quelque chose `q`. `@a`, puis `@@`.
`qa` enregistre tout ce que vous faite et enregistre le tout dans le _registre_ `a`. Ensuite `@a` va rejouer la macro enregistrée dans le registre `a` comme si c'est vous qui tapiez au clavier.
> Exemple :
> Sur une ligne contenant seulement un 1 tapez :
> `qaYpC-aq` -> `qa` début de l'enregistrement. `Yp` copier cette ligne. `C-a` incrémente le nombre. `q` arrête d'enregistrer.
>
> `@a` -> écrit un 2 sous le 1.
> `@@` -> écrit un 3 sous le 2.
> Écrivez `100@a`. Cela va créer une liste de nombre croissants.
<%= blogimage("macros.gif","Macros") %>
Mais aussi,
Sélection visuelle.
On a déjà vu un exemple avec `C-V`.
Mais il y a aussi, `v` et `V`.
Et une fois la sélection visuelle faite vous pouvez par exemple:
- `J` -> joindre toutes les lignes pour en faire une seule
- `<` (resp. `>`) -> indenter à gauche (resp. à droite).
- `=` -> auto indenter
<%= blogimage("autoindent.gif","Autoindent") %>
Ajouter quelque chose à la fin de toutes les lignes sélectionnées visuellement :
- `S-V`
- aller jusqu'à la ligne désirée (`jjj` ou `C-d` ou `/pattern` ou `%` etc...)
- `$` aller à la fin
- `A`, écrire le texte, `Echap`.
<%= blogimage("append-to-many-lines.gif","Ajouter à la fin de plusieurs lignes") %>
Splits : `:split` et `vsplit`. Je vous conseille de faire un `:help split`. Celà permet de manipuler plusieurs buffer sur la même fenêtre.
Voici les commandes principales :
> - `:split` -> crée un split (`:vsplit` crée un split vertical)
> - `C-w&lt;dir&gt;` : où dir est l'un de `hjkl` ou <-&darr;&uarr;-> permet de changer de split.
> - `C-w_` (resp. `C-w|`) : Maximise la taille du split (resp. split vertical)
> - `C-w+` (resp. `C-w-`) : Agrandi (resp. diminue) le split
<%= blogimage("split.gif","Split") %>
## Conclusion
Voilà, je vous ai donné 90% des commandes que j'utilise tous les jours.
N'essayez pas de tout apprendre en une journée.
Il faut le temps de s'habituer à chaque nouvelle commande.
Ajouter une ou deux commande par jour tous les jours est un bon exercice.
Dans 1 mois vous en connaitrez au moins autant que moi.
Vous apprendrez à utiliser NERDTree, les folds et tout un tas d'autres choses.
Souvenez-vous que je ne suis pas un "vim master", seulement un utilisateur régulier.
<script>
// Style the keywords
$(document).ready(function() {
$('code').css({ 'border': 'solid 1px #CCC', 'padding':'3px'});
});
</script>

View file

@ -1 +1 @@
./multi/blog/Efficient-Vim-knowledge.md
./multi/blog/Learn-Vim-Progressively.md

View file

@ -3,8 +3,8 @@ isHidden: false
menupriority: 1
kind: article
created_at: 2011-08-18T00:28:20+02:00
en: title: Efficient Vim knowledge
fr: title: Vim efficace avec peu d'efforts
en: title: Learn Vim Progressively
fr: title: Apprenez Vim Progressivement
author_name: Yann Esposito
author_uri: yannesposito.com
# tags:
@ -13,9 +13,9 @@ author_uri: yannesposito.com
begindiv(intro)
en: <%= tldr %> Want to learn vim (the best text editor known to human kind) the fastest way possible. I suggest you a way.
en: <%= tldr %> Want to learn vim (the best text editor known to human kind) the fastest way possible. I suggest you a way. Start by learning the minimal to survive, then integrate slowly all tricks.
fr: <%= tlal %> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider.
fr: <%= tlal %> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider. Commencez à apprendre le minimum vital, puis apprenez doucement de nouvelles commandes.
enddiv
@ -359,14 +359,14 @@ en: Splits : `:split` and `vsplit`. You should look at `:help split`.
en: But main commands are:
en:
en: > - `:split` -> create a split (`:vsplit` create a vertical split)
en: > - `C-w&lt;dir&gt;` : where dir is any of `hjkl` or <-&darr;&uarr;-> to change split.
en: > - `C-w<dir>` : where dir is any of `hjkl` or <-&darr;&uarr;-> to change split.
en: > - `C-w_` (resp. `C-w|`) : maximise size of split (resp. vertical split)
en: > - `C-w+` (resp. `C-w-`) : Grow (resp. shrink) split
fr: Splits : `:split` et `vsplit`. Je vous conseille de faire un `:help split`. Celà permet de manipuler plusieurs buffer sur la même fenêtre.
fr: Voici les commandes principales :
fr:
fr: > - `:split` -> crée un split (`:vsplit` crée un split vertical)
fr: > - `C-w&lt;dir&gt;` : où dir est l'un de `hjkl` ou <-&darr;&uarr;-> permet de changer de split.
fr: > - `C-w<dir>` : où dir est l'un de `hjkl` ou <-&darr;&uarr;-> permet de changer de split.
fr: > - `C-w_` (resp. `C-w|`) : Maximise la taille du split (resp. split vertical)
fr: > - `C-w+` (resp. `C-w-`) : Agrandi (resp. diminue) le split
@ -374,21 +374,22 @@ fr: > - `C-w+` (resp. `C-w-`) : Agrandi (resp. diminue) le split
## Conclusion
en: You now have 90% of all command I use every day.
en: Take the time to be used for each command you integrate.
en: Do not try to know too much on one time.
en: Just try to use one or two new command per day.
en: After two to three weeks you'll start to feel very comfortable.
en: Vim will be your last editor.
en: You will learn about NERDTree, folds and many other features.
en: And keep in mind I am not a vim master, just a regular user.
en: That was 90% of commands I use every day.
en: I suggest you to learn no more than one or two new command per day.
en: After two to three weeks you'll start to feel the power of vim in your hands.
en:
en: After some time, you will learn about NERDTree, folds and many other features.
en: Also keep in mind I am not a vim master, just a regular user.
en: The power to become a "vim ninja" is inside.
fr: Voilà, je vous ai donné 90% des commandes que j'utilise tous les jours.
fr: N'essayez pas de tout apprendre en une journée.
fr: Il faut le temps de s'habituer à chaque nouvelle commande.
fr: Ajouter une ou deux commande par jour tous les jours est un bon exercice.
fr: Je vous conseille de ne pas apprendre plus d'une ou deux commandes par jour.
fr:
fr: Dans 1 mois vous en connaitrez au moins autant que moi.
fr: Vous apprendrez à utiliser NERDTree, les folds et tout un tas d'autres choses.
fr: Souvenez-vous que je ne suis pas un "vim master", seulement un utilisateur régulier.
fr: Vous découvrirez NERDTree, les folds et tout un tas d'autres choses.
fr: Et n'oubliez pas que je ne suis pas un "vim master", seulement un utilisateur régulier.
fr: Le pouvoir de devenir un "vim ninja" est en vous.
<script>

View file

@ -1,465 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Vim efficace avec peu d'efforts" type="text/html" hreflang="fr" href="/Scratch/fr/blog/Efficient-Vim-knowledge/" />
<link rel="alternate" lang="en" xml:lang="en" title="Efficient Vim knowledge" type="text/html" hreflang="en" href="/Scratch/en/blog/Efficient-Vim-knowledge/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- < % if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %>
-->
<title>Efficient Vim knowledge</title>
</head>
<body lang="en">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="loading..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/fr/blog/Efficient-Vim-knowledge/" onclick="setLanguage('fr')">en Français</a>
</div>
</div>
<div id="titre">
<h1>
Efficient Vim knowledge
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><img alt="Über leet use vim!" src="/Scratch/img/blog/Efficient-Vim-knowledge/uber_leet_use_vim.jpg" /></p>
<div class="intro">
<p><span class="sc"><abbr title="Too long; don't read">tl;dr</abbr>: </span> Want to learn vim (the best text editor known to human kind) the fastest way possible. I suggest you a way.</p>
</div>
<p><a href="http://www.vim.org">Vim</a> the Six Billion Dollar editor</p>
<blockquote>
<p>Better, Stronger, Faster.</p>
</blockquote>
<p>Learn <a href="http://www.vim.org">vim</a> and it will be your last text editor.
There isn&rsquo;t any better text editor I know.
Hard to learn, but it will pay a billion times.</p>
<p>I suggest you to learn it in 4 steps:</p>
<ol>
<li>Survive</li>
<li>Feel comfortable</li>
<li>Feel Better, Stronger, Faster</li>
<li>Power Overwhelming</li>
</ol>
<p>By the end of this journey, you&rsquo;ll become a vim superstar. </p>
<h2 id="st-level-survive">1<sup>st</sup> Level: Survive</h2>
<ol>
<li>Install <a href="http://www.vim.org">vim</a></li>
<li>Launch vim</li>
<li>DO NOTHING! Read.</li>
</ol>
<p>In a standard editor, typing on the keyboard is enough to write something and see it on the screen.
Not this time.
Vim is in <em>edition</em> mode.
Lets get in <em>insertion</em> mode.
Type on the letter <code>i</code>.</p>
<p>Now you should feel a bit better.
You can type letters like in a standard notepad.
To get back in <em>edition</em> mode just tap the <code>ESC</code> key.</p>
<p>Now you know how to switch between insertion and edition mode. And now, the list of command you can use in edition mode to survive:</p>
<blockquote>
<ul>
<li><code>i</code>: Insertion mode. Type <code>ESC</code> to return to edition mode.</li>
<li><code>x</code>: Delete the char under the cursor</li>
<li><code>:wq</code>: Save and Quit (<code>:w</code> save, <code>:q</code> quit)</li>
<li><code>dd</code>: Delete (and copy) current line</li>
<li><code>p</code>: Paste current line</li>
<li><code>hjkl</code> (recommended but not mandatory): basic cursor move (&larr;&darr;&uarr;&rarr;). Hint <code>j</code> look like a down arrow.</li>
<li><code>:help &lt;command&gt;</code>: Show help about <command />, you can start using <code>:help</code> without anything else.</li>
</ul>
</blockquote>
<p>Only 5 commands. This is very few to start.
Once these command start to become natural (may be after a complete day), you should try to confront to level 2.</p>
<h2 id="nd-level---feel-comfortable">2<sup>nd</sup> Level - Feel comfortable</h2>
<p>You know the survivor commands.
Now, just a bit more commands to use.
I suggest:</p>
<ol>
<li>
<p>Insertion mode variations:</p>
<blockquote>
<ul>
<li><code>a</code> &rarr; insert <em>after</em> the cursor</li>
<li><code>o</code> &rarr; insert a new line after the current one</li>
<li><code>O</code> &rarr; insert a new line before the current one</li>
<li><code>cw</code> &rarr; replace the word under the cursor</li>
</ul>
</blockquote>
</li>
<li>
<p>Basic moves</p>
<blockquote>
<ul>
<li><code>0</code> &rarr; go to first column</li>
<li><code>^</code> &rarr; go to first character of the line</li>
<li><code>$</code> &rarr; go to the end of line</li>
<li><code>/pattern</code> &rarr; search for <code>pattern</code> </li>
</ul>
</blockquote>
</li>
<li>
<p>Copy/Paste</p>
<blockquote>
<ul>
<li><code>P</code> &rarr; copy before, remember <code>p</code> is copy after current position.</li>
<li><code>yy</code> &rarr; copy current line, easier but equivalent to <code>ddP</code></li>
</ul>
</blockquote>
</li>
<li>
<p>Undo/Redo</p>
</li>
</ol>
<blockquote>
<ul>
<li><code>u</code> &rarr; undo</li>
<li><code>C-r</code> &rarr; redo</li>
</ul>
</blockquote>
<h2 id="level-3---better-stronger-faster">Level 3 - Better. Stronger. Faster.</h2>
<p>Congratulation! If you managed to go until here, we can start the interresting stuff.
At level 3, we&rsquo;ll only talk about command which are compatible in the old vi.</p>
<p>Lets start by the first vi super-power. Limit to repeat yourself (basic):</p>
<ol>
<li><code>.</code> &rarr; (dot) will repeat the last command,</li>
<li>N&lt;command&gt; &rarr; will do the command N times.</li>
</ol>
<p>Some examples, open a file and type:</p>
<blockquote>
<ul>
<li><code>2dd</code> &rarr; will delete 2 lines</li>
<li><code>3p</code> &rarr; will paste the text 3 times</li>
<li><code>100idesu [ESC]</code> &rarr; will write &ldquo;desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu &ldquo;</li>
<li><code>.</code> &rarr; Just after the last command will write again the 100 &ldquo;desu &ldquo;. </li>
<li><code>3.</code> &rarr; Will write 3 &ldquo;desu&rdquo; (and not 300, how clever).</li>
</ul>
</blockquote>
<p>Second vi super power, moving (basic):
Knowing how to move efficiently with vim is <em>very</em> important. Do not jump this section.</p>
<ol>
<li>N<code>G</code> &rarr; Go to line N</li>
<li><code>gg</code> &rarr; shortcut for <code>1G</code>, go to the start of the file</li>
<li><code>G</code> &rarr; Go to last line</li>
<li>
<p>Word moves:</p>
<blockquote>
<ol>
<li><code>w</code> &rarr; go to the start of the following word,</li>
<li><code>e</code> &rarr; go to the end of this word.</li>
</ol>
<p>By default, word are composed of letter and the underscore character.
If you want to use word in the meaning of group of letter separated by spaces, just use uppercases:</p>
<ol>
<li><code>W</code> &rarr; go to the start of the following &ldquo;extended&rdquo; word,</li>
<li><code>E</code> &rarr; go to the end of this &ldquo;extended&rdquo; word.</li>
</ol>
</blockquote>
</li>
</ol>
<p>Now lets talk about very efficient moves:</p>
<blockquote>
<ul>
<li><code>%</code>&nbsp;: Go to corresponding <code>(</code>, <code>{</code>, <code>[</code>.</li>
<li><code>*</code> (resp. <code>#</code>)&nbsp;: go to next (resp. previous) occurrence of the word under the cursor</li>
</ul>
</blockquote>
<p>Believe me, these last three command are gold.</p>
<h2 id="level-4---power-overwhelming">Level 4 - Power Overwhelming</h2>
<p>With all preceding commands you should be comfortable to use vim.
But now, here are the killer features.
Some of these features were the reason I started to use vim.</p>
<p>Move on current line, any of: <code>0^$fFtT,;</code></p>
<blockquote>
<ul>
<li><code>0</code> &rarr; go to column 0</li>
<li><code>^</code> &rarr; go to first character on the line</li>
<li><code>$</code> &rarr; go to the last character on the line</li>
<li><code>fa</code> &rarr; go to next occurrence of the letter <code>a</code> on the line. <code>,</code> (resp. <code>;</code>) will seek for the next (resp. previous) occurrence.</li>
<li><code>t,</code> &rarr; go just after the character <code>,</code>.</li>
<li><code>3fa</code> &rarr; search the 3<sup>rd</sup> occurrence of <code>a</code> on this line.</li>
<li><code>F</code> and <code>T</code> &rarr; like <code>f</code> and <code>t</code> but backward.</li>
</ul>
</blockquote>
<p><em>Some Useful Tips</em>
&gt;
&gt; - <code>dt"</code> &rarr; remove everything until the <code>"</code>.
&gt; - <code>vi"</code> &rarr; select everthing inside two <code>"</code>.</p>
<p>Select rectangular blocs: <code>C-V</code>.
s
Rectangular blocks are very useful to comment many lines of code.
Typically: <code>0C-VC-dI// [ESC]</code></p>
<ul>
<li><code>^</code> &rarr; go to start of the line</li>
<li><code>C-V</code> &rarr; Start block selection</li>
<li><code>C-d</code> &rarr; move down (could also be <code>jjj</code> or <code>%</code>, etc&hellip;)</li>
<li><code>I// [ESC]</code> &rarr; write <code>// </code> to comment each line</li>
</ul>
<p><img alt="Rectangular blocks" src="/Scratch/img/blog/Efficient-Vim-knowledge/rectangular-blocks.gif" /></p>
<p>Completion: <code>C-n</code> and <code>C-p</code>.</p>
<p>In insertion mode, just type the start of a word, then type <code>C-p</code>, magic&hellip;
<img alt="Completion" src="/Scratch/img/blog/Efficient-Vim-knowledge/completion.gif" /> en: Macros&nbsp;: <code>qa</code> do something <code>q</code>, then <code>@a</code> (also <code>@@</code>, repeat the last <code>@x</code>).</p>
<p><code>qa</code> record your actions in the <em>register</em> <code>a</code>. Then <code>@a</code> will replay the macro saved into the register <code>a</code> as if you typed it.</p>
<blockquote>
<p>Example:
On a line containing only the number 1, type this:
<code>qaYpC-aq</code> &rarr; <code>qa</code> start recording. <code>Yp</code> duplicate this line. <code>C-a</code> increment the number. <code>q</code> stop recording.</p>
<p><code>@a</code> &rarr; write 2 under the 1
<code>@@</code> &rarr; write 3 under the 2
Now do <code>100@@</code> will create a list of increasing numbers until 103.</p>
</blockquote>
<p><img alt="Macros" src="/Scratch/img/blog/Efficient-Vim-knowledge/macros.gif" /></p>
<p>But also,</p>
<p>Visual selection</p>
<p>We saw an example with <code>C-V</code>.
There is also <code>v</code> and <code>V</code>.
Once the selection made, you can:</p>
<ul>
<li><code>J</code> &rarr; join all lines together.</li>
<li><code>&lt;</code> (resp. <code>&gt;</code>) &rarr; indent to the left (resp. to the right).</li>
<li><code>=</code> &rarr; auto indent</li>
</ul>
<p><img alt="Autoindent" src="/Scratch/img/blog/Efficient-Vim-knowledge/autoindent.gif" /></p>
<p>Add something at the end of all visually selected lignes:</p>
<ul>
<li><code>S-V</code> </li>
<li>go to desired line (<code>jjj</code> or <code>C-d</code> or <code>/pattern</code> or <code>%</code> etc&hellip;)</li>
<li><code>$</code> go to the end of line</li>
<li><code>A</code>, write texte, <code>ESC</code>.</li>
</ul>
<p><img alt="Append to many lines" src="/Scratch/img/blog/Efficient-Vim-knowledge/append-to-many-lines.gif" /></p>
<p>Splits&nbsp;: <code>:split</code> and <code>vsplit</code>. You should look at <code>:help split</code>.
But main commands are:</p>
<blockquote>
<ul>
<li><code>:split</code> &rarr; create a split (<code>:vsplit</code> create a vertical split)</li>
<li><code>C-w&amp;lt;dir&amp;gt;</code>&nbsp;: where dir is any of <code>hjkl</code> or &larr;&darr;&uarr;&rarr; to change split.</li>
<li><code>C-w_</code> (resp. <code>C-w|</code>)&nbsp;: maximise size of split (resp. vertical split)</li>
<li><code>C-w+</code> (resp. <code>C-w-</code>)&nbsp;: Grow (resp. shrink) split</li>
</ul>
</blockquote>
<p><img alt="Split" src="/Scratch/img/blog/Efficient-Vim-knowledge/split.gif" /></p>
<h2 id="conclusion">Conclusion</h2>
<p>You now have 90% of all command I use every day.
Take the time to be used for each command you integrate.
Do not try to know too much on one time.
Just try to use one or two new command per day.
After two to three weeks you&rsquo;ll start to feel very comfortable.
Vim will be your last editor.
You will learn about NERDTree, folds and many other features.
And keep in mind I am not a vim master, just a regular user.</p>
<script>
// Style the keywords
$(document).ready(function() {
$('code').css({ 'border': 'solid 1px #CCC', 'padding':'3px'});
});
</script>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Comments</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">comments</h2>
<noscript>
You must enable javascript to comment.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/en/blog/Efficient-Vim-knowledge/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/en/blog/Efficient-Vim-knowledge/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/en/">Home</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li>
<li><a href="/Scratch/en/about/">About</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
previous entries
</div>
<div id="next_articles">
next entries
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div>
<div id="lastmod">
Created: 08/18/2011
Modified: 08/25/2011
</div>
<div>
Entirely done with
<a href="http://www.vim.org">Vim</a>
and
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/en/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/en/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
<script type="text/javascript">
var clicky = { log: function(){ return; }, goal: function(){ return; }};
var clicky_site_id = 66374971;
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = ( document.location.protocol == 'https:' ? 'https://static.getclicky.com/js' : 'http://static.getclicky.com/js' );
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/66374971ns.gif" /></p></noscript>
</body>
</html>

View file

@ -1,453 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Vim efficace avec peu d'efforts" type="text/html" hreflang="fr" href="/Scratch/fr/blog/Efficient-Vim-knowledge/" />
<link rel="alternate" lang="en" xml:lang="en" title="Efficient Vim knowledge" type="text/html" hreflang="en" href="/Scratch/en/blog/Efficient-Vim-knowledge/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- < % if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
< % end %>
-->
<title>Vim efficace avec peu d'efforts</title>
</head>
<body lang="fr">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/Efficient-Vim-knowledge/" onclick="setLanguage('en')">in English</a>
</div>
</div>
<div id="titre">
<h1>
Vim efficace avec peu d'efforts
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p><img alt="Über leet use vim!" src="/Scratch/img/blog/Efficient-Vim-knowledge/uber_leet_use_vim.jpg" /></p>
<div class="intro">
<p><span class="sc"><abbr title="Trop long à lire">tlàl</abbr>&nbsp;: </span> Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider.</p>
</div>
<p><a href="http://www.vim.org">Vim</a> ou l&rsquo;éditeur qui vallait 3 milliards&nbsp;:</p>
<blockquote>
<p>Meilleur, plus fort, plus rapide.</p>
</blockquote>
<p>Apprenez <a href="http://www.vim.org">vim</a> et ce sera votre dernier éditeur.
Aucun éditeur que je connaise ne le surpasse.
Sa prise en mais est difficile, mais payante.</p>
<p>Je vous conseille de l&rsquo;apprendre en 4 étapes&nbsp;:</p>
<ol>
<li>La survie</li>
<li>Se sentir à son aise</li>
<li>Se sentir meilleur, plus fort et plus rapide</li>
<li>Les super-pouvoirs</li>
</ol>
<p>Après ces leçons, vous serez une super star de l&rsquo;édition de texte.</p>
<h2 id="er-niveau-survivre">1<sup>er</sup> Niveau: survivre</h2>
<ol>
<li>Installez <a href="http://www.vim.org">vim</a></li>
<li>Lancez vim</li>
<li>NE TOUCHEZ A RIEN! Lisez</li>
</ol>
<p>Dans un éditeur normal, il suffit de taper sur une touche du clavier et la lettre s&rsquo;affiche à l&rsquo;écran.
Pas ici.
Vim est en mode <em>edition</em>.
Commençons par placer vim en mode <em>insertion</em>.
Tapez sur la touche <code>i</code>.</p>
<p>Voilà, c&rsquo;est magique.
Vous pouvez tapez comme dans un éditeur standard.
Pour repasser en mode édition tapez sur la touche <code>Echap</code>.</p>
<p>Maintenant que vous savez passer du mode edition au mode insertion. Voici les commandes de survie (toutes en mode edition)&nbsp;:</p>
<blockquote>
<ul>
<li><code>i</code>&nbsp;: Passer en mode insértion. Taper Echap pour repasser en mode edition.</li>
<li><code>x</code>&nbsp;: Supprimer le caractère sous le curseur</li>
<li><code>:wq</code>&nbsp;: Sauvegarder et quitter (<code>:w</code> sauvegarde, <code>:q</code> quitter)</li>
<li><code>dd</code>&nbsp;: Supprimer (et copier) la ligne courante</li>
<li><code>p</code>&nbsp;: Coller</li>
<li><code>hjkl</code> (optionnel)&nbsp;: se déplacer (&larr;&darr;&uarr;&rarr;). Souvenez vous <code>j</code> ressemble à une flèche vers le bas.</li>
</ul>
</blockquote>
<p>Seulement 5 commandes. Voilà, c&rsquo;est tout pour un début.
Essayez d&rsquo;éditer vos fichier comme ça pendant une petite journée.
Lorsque ces commandes vous seront devenues naturelle.
Vous pouvez passer à l&rsquo;étape d&rsquo;après. </p>
<h2 id="me-niveau---se-sentir--son-aise">2<sup>ème</sup> Niveau - Se sentir à son aise</h2>
<p>Vous connaissez les commandes de survie. Passons à des commandes pour être un peu plus à notre aise. Je vous suggère&nbsp;:</p>
<ol>
<li>
<p>Les variantes de l&rsquo;insertion</p>
<blockquote>
<ul>
<li><code>a</code> &rarr; comme <code>i</code>, mais après la position du curseur.</li>
<li><code>o</code> &rarr; comme <code>i</code>, mais à la ligne suivante</li>
<li><code>O</code> &rarr; comme <code>o</code> mais ajoute la ligne avant.</li>
<li><code>cw</code> &rarr; remplacer le mot sous le curseur.</li>
</ul>
</blockquote>
</li>
<li>
<p>Déplacements basiques</p>
<blockquote>
<ul>
<li><code>0</code> &rarr; aller à la première colonne</li>
<li><code>^</code> &rarr; aller au premier caratère de la ligne</li>
<li><code>$</code> &rarr; aller à la fin de la ligne</li>
<li><code>/pattern</code> &rarr; rechercher <code>pattern</code> dans le fichier.</li>
</ul>
</blockquote>
</li>
<li>
<p>Copier/Coller</p>
<blockquote>
<ul>
<li><code>P</code> &rarr; Coller avant, souvenez-vous que <code>p</code> collait après la position du curseur.</li>
<li><code>yy</code> &rarr; copier la ligne courante. C&rsquo;est plus simple et équivalent à <code>ddP</code></li>
</ul>
</blockquote>
</li>
<li>
<p>Annuler/Refaire</p>
</li>
</ol>
<blockquote>
<ul>
<li><code>u</code> &rarr; Annuler (undo)</li>
<li><code>C-r</code> &rarr; Refaire</li>
</ul>
</blockquote>
<h2 id="niveau-3---meilleur-plus-fort-plus-rapide">Niveau 3 - Meilleur. Plus fort. Plus rapide.</h2>
<p>Bravo&nbsp;! Si vous êtes arrivé jusqu&rsquo;ici nous allons pouvoir commencer à apprendre les choses vraiment intéressantes.
Pour cette section, je vais seulement parler de choses qui sont aussi disponible dans le vieux vi. </p>
<p>Commençons par le premier super pouvoir de vi, éviter les répétitions (niveau 1):</p>
<ol>
<li><code>.</code> &rarr; Le caractère point répètera la dernière commande.</li>
<li>N&lt;commande&gt; &rarr; répètera la commande N fois. </li>
</ol>
<p>Quelques exemples, ouvrez un fichier avec vim et tapez&nbsp;:</p>
<blockquote>
<ul>
<li><code>2dd</code> &rarr; Supprimera 2 lignes</li>
<li><code>3p</code> &rarr; copiera 3 fois d&rsquo;affiler le texte copié</li>
<li><code>100idesu [ESC]</code> &rarr; écrira &ldquo;desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu &ldquo;</li>
<li><code>.</code> &rarr; Juste après la dernière commande réécrira les 100 &ldquo;desu &ldquo;. </li>
<li><code>3.</code> &rarr; Écrira 3 &ldquo;desu&rdquo; et non pas 300.</li>
</ul>
</blockquote>
<p>Second super pouvoir de vim, les déplacements (niveau 1)&nbsp;:
Savoir se déplacer efficacement avec vim est <em>très</em> important, ne sautez pas cette section.</p>
<ol>
<li>N<code>G</code> &rarr; Aller à la ligne N</li>
<li><code>gg</code> &rarr; raccourci pour <code>1G</code>, retourner au début du fichier</li>
<li><code>G</code> &rarr; Aller à la dernière ligne.</li>
<li>
<p>Déplacement autour des mots:</p>
<blockquote>
<ol>
<li><code>w</code> &rarr; aller au début du mot suivant</li>
<li><code>e</code> &rarr; aller à la fin du mot courant</li>
</ol>
<p>Par défaut les mots sont seulement composés de lettres (et du caractère souligné <code>_</code>).
Si vous voulez considérer les mots au sens &ldquo;jusqu&rsquo;au prochain espace&rdquo;, alors il suffit d&rsquo;utiliser les majuscules.</p>
<ol>
<li><code>W</code> &rarr; aller au début du mot &ldquo;étendu&rdquo; suivant</li>
<li><code>E</code> &rarr; aller à la fin du mot &ldquo;étendu&rdquo; courant</li>
</ol>
</blockquote>
</li>
</ol>
<p>Maintenant passons aux déplacement qui vont vous faire sentir vraiment meilleur&nbsp;:</p>
<blockquote>
<ul>
<li><code>%</code>&nbsp;: Aller à la parenthèse, accolade, crochet correspondante.</li>
<li><code>*</code> (resp. <code>#</code>)&nbsp;: Aller à la prochaine (resp. précédente) occurrence du mot sous le curseur</li>
</ul>
</blockquote>
<p>Croyez moi, ces trois dernières commandes valent de l&rsquo;or.
Retenez les, et vous gagnerez beaucoup de temps.</p>
<h2 id="niveau-4---power-overwhelming">Niveau 4 - Power Overwhelming</h2>
<p>Avec toutes les commandes précédentes vous avez presque toutes les commandes que j&rsquo;utilise tous les jours.
Mais voici les killer features de vim.
Celles que je n&rsquo;ai retrouvé que dans vim (ou presque).</p>
<p>Déplacement sur la ligne&nbsp;: <code>0^$fFtT,;</code></p>
<blockquote>
<ul>
<li><code>0</code> &rarr; aller à la colonne 0,</li>
<li><code>^</code> &rarr; aller au premier caractère de la ligne</li>
<li><code>$</code> &rarr; aller au dernier caractère de la ligne</li>
<li><code>fa</code> &rarr; vous amène à la prochaine occurrence de a sur la ligne courante. <code>,</code> (resp. <code>;</code>) recherche l&rsquo;occurrence suivante (resp. précédente).</li>
<li><code>t,</code> &rarr; vous amène juste après le <code>,</code>.</li>
<li><code>3fa</code> &rarr; recherche la 3ième occurrence de <code>a</code>.</li>
<li><code>F</code> et <code>T</code> &rarr; comme <code>f</code> et <code>t</code> mais en arrière.</li>
</ul>
</blockquote>
<p><em>Quelques trucs utiles</em>
&gt;
&gt; - <code>dt"</code> &rarr; supprime tout jusqu&rsquo;au <code>"</code>.
&gt; - <code>vi"</code> &rarr; selectionne tout ce qui se trouve entre les deux <code>"</code>.</p>
<p>Sélection de blocs rectangulaires&nbsp;: <code>C-V</code>.
s</p>
<p>Les blocs rectangulaires sont très commodes pour commenter plusieurs lignes de codes.
Typiquement: <code>^C-VC-dI// [ESC]</code></p>
<ul>
<li><code>^</code> &rarr; aller en début de ligne</li>
<li><code>C-V</code> &rarr; Commencer la sélection du bloc</li>
<li><code>C-d</code> &rarr; se déplacer vers le bas (pourrait être <code>jjj</code> ou <code>%</code> etc&hellip;)</li>
<li><code>I// [ESC]</code> &rarr; écrit <code>// </code> pour commenter le reste de la ligne.</li>
</ul>
<p><img alt="Rectangular blocks" src="/Scratch/img/blog/Efficient-Vim-knowledge/rectangular-blocks.gif" /></p>
<p>Complétion&nbsp;: <code>C-n</code> et <code>C-p</code>.</p>
<p>En mode insertion, commencez à écrire le début d&rsquo;un mot déjà présent dans l&rsquo;un des buffers (fichers) ouvert et tapes <code>C-p</code>. Magique.
<img alt="Completion" src="/Scratch/img/blog/Efficient-Vim-knowledge/completion.gif" /> en: Macros&nbsp;: <code>qa</code> do something <code>q</code>, then <code>@a</code> (also <code>@@</code>, repeat the last <code>@x</code>).
Macros&nbsp;: <code>qa</code> faire quelque chose <code>q</code>. <code>@a</code>, puis <code>@@</code>.</p>
<p><code>qa</code> enregistre tout ce que vous faite et enregistre le tout dans le <em>registre</em> <code>a</code>. Ensuite <code>@a</code> va rejouer la macro enregistrée dans le registre <code>a</code> comme si c&rsquo;est vous qui tapiez au clavier.</p>
<blockquote>
<p>Exemple&nbsp;:
Sur une ligne contenant seulement un 1 tapez&nbsp;:
<code>qaYpC-aq</code> &rarr; <code>qa</code> début de l&rsquo;enregistrement. <code>Yp</code> copier cette ligne. <code>C-a</code> incrémente le nombre. <code>q</code> arrête d&rsquo;enregistrer.</p>
<p><code>@a</code> &rarr; écrit un 2 sous le 1.
<code>@@</code> &rarr; écrit un 3 sous le 2.
Écrivez <code>100@a</code>. Cela va créer une liste de nombre croissants.</p>
</blockquote>
<p><img alt="Macros" src="/Scratch/img/blog/Efficient-Vim-knowledge/macros.gif" /></p>
<p>Mais aussi,</p>
<p>Sélection visuelle.</p>
<p>On a déjà vu un exemple avec <code>C-V</code>.
Mais il y a aussi, <code>v</code> et <code>V</code>.
Et une fois la sélection visuelle faite vous pouvez par exemple:</p>
<ul>
<li><code>J</code> &rarr; joindre toutes les lignes pour en faire une seule</li>
<li><code>&lt;</code> (resp. <code>&gt;</code>) &rarr; indenter à gauche (resp. à droite).</li>
<li><code>=</code> &rarr; auto indenter</li>
</ul>
<p><img alt="Autoindent" src="/Scratch/img/blog/Efficient-Vim-knowledge/autoindent.gif" /></p>
<p>Ajouter quelque chose à la fin de toutes les lignes sélectionnées visuellement&nbsp;: </p>
<ul>
<li><code>S-V</code> </li>
<li>aller jusqu&rsquo;à la ligne désirée (<code>jjj</code> ou <code>C-d</code> ou <code>/pattern</code> ou <code>%</code> etc&hellip;)</li>
<li><code>$</code> aller à la fin </li>
<li><code>A</code>, écrire le texte, <code>Echap</code>.</li>
</ul>
<p><img alt="Ajouter à la fin de plusieurs lignes" src="/Scratch/img/blog/Efficient-Vim-knowledge/append-to-many-lines.gif" /></p>
<p>Splits&nbsp;: <code>:split</code> et <code>vsplit</code>. Pour en savoir plus faite un <code>:help split</code></p>
<h2 id="conclusion">Conclusion</h2>
<p>Voilà, je vous ai donné 90% des commandes que j&rsquo;utilise tous les jours.
N&rsquo;essayez pas de tout apprendre en une journée.
Il faut le temps de s&rsquo;habituer à chaque nouvelle commande.
Ajouter une ou deux commande par jour tous les jours est un bon exercice.
Dans 1 mois vous en connaitrez au moins autant que moi.
Souvenez-vous que je ne suis pas un &ldquo;vim master&rdquo;, seulement un utilisateur régulier.</p>
<script>
// Style the keywords
$(document).ready(function() {
$('code').css({ 'border': 'solid 1px #CCC', 'padding':'3px'});
});
</script>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/Efficient-Vim-knowledge/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/Efficient-Vim-knowledge/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
</div>
<div id="next_articles">
articles suivants
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 17/08/2011
modifié le : 25/08/2011
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/fr/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/fr/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
<script type="text/javascript">
var clicky = { log: function(){ return; }, goal: function(){ return; }};
var clicky_site_id = 66374971;
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = ( document.location.protocol == 'https:' ? 'https://static.getclicky.com/js' : 'http://static.getclicky.com/js' );
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="http://in.getclicky.com/66374971ns.gif" /></p></noscript>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

View file

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View file

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View file

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB