From 881bc14d410ad86e5c8632715ca3fa24fdba4cb0 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Thu, 25 Aug 2011 13:51:07 +0200 Subject: [PATCH] Renamed blog post --- .../html/en/blog/Efficient-Vim-knowledge.md | 244 --------- .../html/fr/blog/Efficient-Vim-knowledge.md | 244 --------- latest.md | 2 +- ...nowledge.md => Learn-Vim-Progressively.md} | 35 +- .../blog/Efficient-Vim-knowledge/index.html | 465 ------------------ .../blog/Efficient-Vim-knowledge/index.html | 453 ----------------- .../blog/Efficient-Vim-knowledge/macro.gif | Bin 10109 -> 0 bytes .../append-to-many-lines.gif | Bin .../autoindent.gif | Bin .../completion.gif | Bin .../macros.gif | Bin .../rectangular-blocks.gif | Bin ...dollar-man-a-bionic-christmas-carol-17.jpg | Bin .../split.gif | Bin .../the_six_million_dollar_man_image_04.jpg | Bin .../uber_leet_use_vim.jpg | Bin 16 files changed, 19 insertions(+), 1424 deletions(-) delete mode 100644 content/html/en/blog/Efficient-Vim-knowledge.md delete mode 100644 content/html/fr/blog/Efficient-Vim-knowledge.md rename multi/blog/{Efficient-Vim-knowledge.md => Learn-Vim-Progressively.md} (93%) delete mode 100644 output/Scratch/en/blog/Efficient-Vim-knowledge/index.html delete mode 100644 output/Scratch/fr/blog/Efficient-Vim-knowledge/index.html delete mode 100644 output/Scratch/img/blog/Efficient-Vim-knowledge/macro.gif rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/append-to-many-lines.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/autoindent.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/completion.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/macros.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/rectangular-blocks.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/six-million-dollar-man-a-bionic-christmas-carol-17.jpg (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/split.gif (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/the_six_million_dollar_man_image_04.jpg (100%) rename output/Scratch/img/blog/{Efficient-Vim-knowledge => Learn-Vim-Progressively}/uber_leet_use_vim.jpg (100%) diff --git a/content/html/en/blog/Efficient-Vim-knowledge.md b/content/html/en/blog/Efficient-Vim-knowledge.md deleted file mode 100644 index f17c63ef5..000000000 --- a/content/html/en/blog/Efficient-Vim-knowledge.md +++ /dev/null @@ -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 (<-↓↑->). Hint `j` look like a down arrow. -> - `:help `: Show help about , 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<command> -> 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<dir>` : where dir is any of `hjkl` or <-↓↑-> 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. - - - diff --git a/content/html/fr/blog/Efficient-Vim-knowledge.md b/content/html/fr/blog/Efficient-Vim-knowledge.md deleted file mode 100644 index 25b9da9c4..000000000 --- a/content/html/fr/blog/Efficient-Vim-knowledge.md +++ /dev/null @@ -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 (<-↓↑->). 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<commande> -> 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<dir>` : où dir est l'un de `hjkl` ou <-↓↑-> 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. - - - diff --git a/latest.md b/latest.md index ae9a17ee7..cc780a5e9 120000 --- a/latest.md +++ b/latest.md @@ -1 +1 @@ -./multi/blog/Efficient-Vim-knowledge.md \ No newline at end of file +./multi/blog/Learn-Vim-Progressively.md \ No newline at end of file diff --git a/multi/blog/Efficient-Vim-knowledge.md b/multi/blog/Learn-Vim-Progressively.md similarity index 93% rename from multi/blog/Efficient-Vim-knowledge.md rename to multi/blog/Learn-Vim-Progressively.md index 2182deca1..dfa834447 100644 --- a/multi/blog/Efficient-Vim-knowledge.md +++ b/multi/blog/Learn-Vim-Progressively.md @@ -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<dir>` : where dir is any of `hjkl` or <-↓↑-> to change split. +en: > - `C-w` : where dir is any of `hjkl` or <-↓↑-> 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<dir>` : où dir est l'un de `hjkl` ou <-↓↑-> permet de changer de split. +fr: > - `C-w` : où dir est l'un de `hjkl` ou <-↓↑-> 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. - - - - - Efficient Vim knowledge - - - - -
- - -
-

- Efficient Vim knowledge -

- -
- -
- - - - - -
-
-
-

Über leet use vim!

- - -
- - -

tl;dr: Want to learn vim (the best text editor known to human kind) the fastest way possible. I suggest you a way.

- - -
- - -

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. -
  3. Feel comfortable
  4. -
  5. Feel Better, Stronger, Faster
  6. -
  7. Power Overwhelming
  8. -
- -

By the end of this journey, you’ll become a vim superstar.

- -

1st Level: Survive

- -
    -
  1. Install vim
  2. -
  3. Launch vim
  4. -
  5. DO NOTHING! Read.
  6. -
- -

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 (←↓↑→). Hint j look like a down arrow.
  • -
  • :help <command>: Show help about , 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. -
  3. -

    Basic moves

    - -
    -
      -
    • 0 → go to first column
    • -
    • ^ → go to first character of the line
    • -
    • $ → go to the end of line
    • -
    • /pattern → search for pattern
    • -
    -
    -
  4. -
  5. -

    Copy/Paste

    - -
    -
      -
    • P → copy before, remember p is copy after current position.
    • -
    • yy → copy current line, easier but equivalent to ddP
    • -
    -
    -
  6. -
  7. -

    Undo/Redo

    -
  8. -
- -
-
    -
  • 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. -
  3. N<command> → will do the command N times.
  4. -
- -

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. NG → Go to line N
  2. -
  3. gg → shortcut for 1G, go to the start of the file
  4. -
  5. G → Go to last line
  6. -
  7. -

    Word moves:

    - -
    -
      -
    1. w → go to the start of the following word,
    2. -
    3. e → go to the end of this word.
    4. -
    - -

    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. -
    3. E → go to the end of this “extended” word.
    4. -
    -
    -
  8. -
- -

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
  • -
- -

Rectangular blocks

- -

Completion: C-n and C-p.

- -

In insertion mode, just type the start of a word, then type C-p, magic… -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-aqqa 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.

-
- -

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
  • -
- -

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.
  • -
- -

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 ←↓↑→ to change split.
  • -
  • C-w_ (resp. C-w|) : maximise size of split (resp. vertical split)
  • -
  • C-w+ (resp. C-w-) : Grow (resp. shrink) split
  • -
-
- -

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.

- - - - -
- - - - - -
-
-

comments

- - - - - - -
- -
- -
-
-
- - -
-
-
- - -
- -
- Created: 08/18/2011 - Modified: 08/25/2011 -
-
- Entirely done with - Vim - and - nanoc -
- -
-
-
- - - - - \ No newline at end of file diff --git a/output/Scratch/fr/blog/Efficient-Vim-knowledge/index.html b/output/Scratch/fr/blog/Efficient-Vim-knowledge/index.html deleted file mode 100644 index 0bff7169d..000000000 --- a/output/Scratch/fr/blog/Efficient-Vim-knowledge/index.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Vim efficace avec peu d'efforts - - - - -
- - -
-

- Vim efficace avec peu d'efforts -

- -
- -
- - - - - -
-
-
-

Über leet use vim!

- - -
- - -

tlàl : Vous désirez apprendre vim (le meilleur editeur de texte connu à ce jour) le plus rapidement possible. Voici mes conseils pour vous aider.

- - -
- - -

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. -
  3. Se sentir à son aise
  4. -
  5. Se sentir meilleur, plus fort et plus rapide
  6. -
  7. Les super-pouvoirs
  8. -
- -

Après ces leçons, vous serez une super star de l’édition de texte.

- -

1er Niveau: survivre

- -
    -
  1. Installez vim
  2. -
  3. Lancez vim
  4. -
  5. NE TOUCHEZ A RIEN! Lisez
  6. -
- -

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 (←↓↑→). 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. -
  3. -

    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.
    • -
    -
    -
  4. -
  5. -

    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
    • -
    -
    -
  6. -
  7. -

    Annuler/Refaire

    -
  8. -
- -
-
    -
  • 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. -
  3. N<commande> → répètera la commande N fois.
  4. -
- -

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. NG → Aller à la ligne N
  2. -
  3. gg → raccourci pour 1G, retourner au début du fichier
  4. -
  5. G → Aller à la dernière ligne.
  6. -
  7. -

    Déplacement autour des mots:

    - -
    -
      -
    1. w → aller au début du mot suivant
    2. -
    3. e → aller à la fin du mot courant
    4. -
    - -

    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. -
    3. E → aller à la fin du mot “étendu” courant
    4. -
    -
    -
  8. -
- -

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.
  • -
- -

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. -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-aqqa 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.

-
- -

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
  • -
- -

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.
  • -
- -

Ajouter à la fin de plusieurs lignes

- -

Splits : :split et vsplit. Pour en savoir plus faite un :help 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. -Souvenez-vous que je ne suis pas un “vim master”, seulement un utilisateur régulier.

- - - - -
- - - - - -
-
-

commentaires

- - - - - - -
- -
- -
-
-
- - -
-
-
- - -
- -
- Écrit le : 17/08/2011 - modifié le : 25/08/2011 -
-
- Site entièrement réalisé avec - Vim - et - nanoc -
- -
-
-
- - - - - \ No newline at end of file diff --git a/output/Scratch/img/blog/Efficient-Vim-knowledge/macro.gif b/output/Scratch/img/blog/Efficient-Vim-knowledge/macro.gif deleted file mode 100644 index a6aec08d74d802120ce551b57427138696b295c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10109 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