post

Vim fr:Bases De L'Édition

Contents

Introduction

Apprenons les commandes de base dans Vim pour lire et écrire des fichiers, couper/copier/coller, défaire/refaire et rechercher.

Lire et écrire des fichiers

Buffers

Quand vous éditez un fichier, Vim prend le texte dans un fichier sur le disque et le place dans la RAM de l’ordinateur. Cela signifie qu’une copie du fichier est stockée sur disque et tout changement que vous faites est stocké en RAM et immédiatement affiché. Quand vous avez fini de modifier le fichier, vous pouvez l’enregistrer, ce qui signifie que Vim copie le texte de la RAM sur le disque dur. La RAM de l’ordinateur utilisée pour stocker temporairement le texte est appelée “buffer”. Notez que ce concept est la raison qui implique de “sauver” des fichiers dans n’importe quel éditeur ou traitement de texte utilisé.

Maintenant ouvrez Vim, écrivez les mots Hello World et enregistrez dans le fichier hello.txt. Si vous devez vous rappeler comment faire ceci, allez au chapitre Premiers_Pas.

Swap

Vous pouvez noter qu’un autre fichier a été créé dans le même répertoire que votre fichier, ce fichier a un nom comme .hello.txt.swp. Lancez la commande suivante pour avoir le nom exact du fichier:

:swapname

Qu’est ce que ce fichier? Vim garde une copie du buffer dans un fichier régulièrement sauvegardé sur le disque, en cas de problème (comme un problème de l’ordinateur ou si Vim plante) vous avez une sauvegarde de vos modifications. Ce fichier est appelé un “swap file” parce que Vim continue à échanger les contenus du buffer en mémoire avec les contenus du fichier sur le disque. Voyez :help swap-file pour plus de détails.

Enregistrer mon fichier

Maintenant que le fichier est chargé, faisons une petite modification. Tapez ~ pour changer la casse d’un caractère sur lequel le curseur est positionné. Notez que Vim marque maintenant le fichier comme changé (par exemple un signe + apparaît dans la version avec GUI de Vim). Vous pouvez ouvrir ce fichier avec un autre éditeur et vérifier qu’il n’a pas encore changé, Vim a seulement changé le buffer et pas encore sauvegardé sur disque.

Nous pouvons écrire le buffer dans le fichier de départ sur le disque en tapant:

:write
Note
Pour simplifier cela, ajouter la ligne suivante à votre fichier vimrc:
" To save, ctrl-s.
nmap <c-s> :w<CR>
imap <c-s> <Esc>:w<CR>a

Maintenant vous pouvez juste taper ctrl-s pour enregistrer le fichier.

Travailler dans mon répertoire

Vim démarre avec votre home directory comme répertoire par défaut et toutes les opérations seront faites dans ce répertoire.

Pour ouvrir des fichiers dans d’autres répertoires, vous pouvez utiliser des chemins complets ou relatifs comme:

:e ../tmp/test.txt
:e C:\shopping\monday.txt

Ou vous pouvez envoyer Vim dans ce répertoire:

:cd ../tmp

:cd est le raccourci pour ‘c’hange ‘d’irectory.

Pour connaître votre réperoire courant dans lequel Vim recherche les fichiers:

:pwd

:pwd est le raccourci pour ‘p’rint ‘w’orking ‘d’irectory (montre le répertoire courant).

Couper, copier et coller

Comme le dit Sean Connery, dans le film ‘Finding Forrester’:

Ne pas penser – cela vient plus tard. Vous devez écrire votre premier brouillon avec votre cœur. Vous re-écrivez avec votre tête. La première clé pour écrire est … d’écrire, pas de penser!

Quand nous re-écrivons, nous changeons l’ordre des paragraphes ou des phrases, par exemple nous avons besoin de couper/copier/coller du texte. Dans Vim, nous utilisons une terminologie légèrement différente:

desktop world vim world opération
couper delete d
copier yank y
coller paste p

Dans la terminologie normale du bureau, couper du texte (‘cut’ting) signifie enlever du texte et le mettre dans le presse-papier. La même opération dans Vim signifie détruire le texte du buffer du fichier et l’enregistrer dans un ‘register’ (une partie de la RAM de l’ordinateur). Comme nous pouvons choisir le register où enregistrer le fichier, on y fait référence en tant qu’opération “delete”.

De la même manière, ‘copier’ du texte signifie qu’une copie du texte est placée dans le presse-papiers. Vim fait la même chose, il “yanks” le texte et le place dans un register.

“Paste” (coller) signifie la même chose dans les deux terminologies.

Nous avons vu comment couper/copier/coller dans Vim. Mais comment indiquer le texte auquel s’applique ces opérations? En fait, nous avons déjà vu cela dans la section précédente Parties du texte.

En associant les opérations de notation et les opérations sur les objets texte, nous avons un nombre incalculable de manières pour manipuler du texte. Voyons quelques exemples.

Écrivez ce texte dans Vim (exactement ce qui suit):

This is the rthe first paragraph.
This is the second line.

This is the second paragraph.

Placez le curseur tout en haut à gauche, en tapant 1G et | qui se positionne à la première ligne et la première colonne respectivement.

Voyons le début: nous avons tapé un ‘r’ en trop, qu’il faut enlever. Tapez 3w pour avancer de 3 mots.

Nous devons enlever un caractère à la position actuelle du curseur.

Notez qu’il y a deux parties pour cela:

Opération Objet texte/Mouvement
Détruire d
Un caractère à la position du curseur l

Donc, il suffit de taper dl et nous détruisons un caractère! Notez que nous pouvons utiliser l même s’il y a mouvement.

Maintenant nous constatons que le mot complet est doublé car nous avons deux fois “the”. Réfléchissez, qu’est-ce qui est le plus efficace pour rectifier cela?

Prenez le temps de chercher. Si vous ne trouvez pas, lisez la suite.

Opération Objet texte/Mouvement
Détruire d
Word (mot) w

Donc, tapez dw et vous détruisez un mot. Voila! Tellement simple et joli. La beauté est que de tels concepts simples peuvent être combinés pour fournir un riche éventail de possibilités.

Comment faisons-nous la même chose pour les lignes? Les lignes sont considérées comme spéciales dans Vim, parce que c’est notre manière de penser à un texte. En tant que raccourci, si vous répétez l’opération appelée deux fois, cela concernera la ligne. Donc, dd détruira la ligne et yy va yank la ligne courante.

Notre texte dans Vim va maintenant ressembler à cela:

This is the first paragraph.
This is the second line.

This is the second paragraph.

Allez à la deuxième ligne en tapant j. Maintenant tapez dd et la ligne sera détruite. Vous devez voir maintenant:

This is the first paragraph.

This is the second paragraph.

Voyons un cas plus important: comment yanker le paragraphe courant?

Opération Objet texte/Mouvement
Yank (arracher) y
Paragraphe courant ap

Donc yap va copier le paragraphe courant.

Maintenant que nous avons copié le texte, comment le paster (coller)? En tapant ‘p’ .

Vous devriez maintenant voir:

This is the first paragraph.
This is the first paragraph.


This is the second paragraph.

Notez que la ligne blanche est également copiée quand nous faisons yap, donc p ajoute également la ligne blanche.

Il y a deux manières de coller du texte, comme les deux types d’insertion vues précédemment:

p (minuscule) P (majuscule)
colle après la position du curseur colle avant la position du curseur

En poussant l’idée, nous pouvons combiner cela de manière plus puissante.

Comment échanger deux caractères? Tapez xp.

  • x → détruit un caractère à la position du curseur
  • p → colle après la position du curseur

Comment échanger deux mots? Tapez dwwP.

  • d → détruit
  • w → un mot
  • w → va au mot suivant
  • P → colle avant la position du curseur

La chose importante est de ne pas apprendre ces opérations par cœur. Ces combinaisons d’opérations et objet ou mouvements de texte doivent être automatiques pour vos doigts, sans vous forcer à réfléchir. Cela arrive quand cela devient une habitude.

Marquer votre territoire

Vous êtes en train d’écrire, et vous réalisez d’un coup que vous devez changer des phrases dans une section précédente pour que cela convienne avec ce que vous écrivez dans cette section. Le problème est que vous devez vous souvenir où vous êtes pour pouvoir y revenir. Est-ce que Vim peut s’en souvenir pour moi? Cela se fait en utilisant les marques.

Vous créez une marque en tapant m suivi par le nom de la marque qui est un caractère parmi a-zA-Z. Par exemple, taper ma va créer la marque appelée ‘a’.

Taper 'a renvoie le curseur au début de la marque.
Taper `a vous replace à la ligne et colonne de la marque.

Le meilleur est que vous pouvez aller à cette position n’importe quand en utilisant les marques ensuite.

Voyez :help mark-motions pour plus de détails.

Défaire et refaire

Supposez que vous retravaillez un paragraphe, mais finalement vous n’êtes pas satisfait et voulez revenir à avant vos modifications. C’est ici que vous voulez faire un “undo” sur ce que vous avez fait. Si nous voulons changer à nouveau, nous pouvons refaire (“redo”) les modifications faites. Notez qu’une modification est un changement dans le texte, et ne prend pas en compte tous les déplacements du curseur et autres choses sans rapport avec le texte.

Supposons que vous avez le texte suivant:

I have coined a phrase for myself – ‘CUT to the G’:

1. Concentrate
2. Understand
3. Think
4. Get Things Done

Step 4 is eventually what gets you moving, but Steps 2 and 3 are equally
important. As Abraham Lincoln once said “If I had eight hours to chop down a
tree, I’d spend six hours sharpening my axe.” And to get to this stage, you need
to do Step 1 which boils down to one thing – It’s all in the mind. That’s why
it’s so hard.

Maintenant, éditez la première ligne:

  1. Tapez S pour ‘s’ubstituer la ligne complète.
  2. Tapez le texte After much thought, I have coined a new phrase to help me solidify my approach:.
  3. Tapez<esc>.

Maintenant réfléchissez sur la modification que nous venons de faire. Est-ce que la phrase est mieux? Hum, le texte était mieux avant? Comment peut-on y revenir?

Tapez u pour annuler le dernier changement et voir ce qu’il y avait. Vous voyez maintenant le texte I have coined a phrase for myself - 'CUT to the G':. pour revenir au dernier changement, tapez ctrl-r pour voir maintenant la ligne After much thought, I have coined a new phrase to help me solidify my approach:.

Il est important de noter que Vim n’est pas limité dans son historique des undo/redo changes, mais il est en général limité par la valeur de undolevels définie dans Vim et la quantité de mémoire de votre ordinateur.

Maintenant voyons quelque chose qui montre vraiment les fonctionnalités avancées de Vim pour faire et refaire, quelque chose dont les autres éditeurs sont jalous: Vim n’est pas seulement un éditeur, c’est également une time machine.

Par exemple,

:earlier 4m

Vous replacera comme il y a 4 minutes, c’est à dire l’état du texte 4 minutes plus tôt.

Cela est supérieur à tous les défaire et refaire. Par exemple, si vous faites un changement, puis vous l’annulez, puis vous continuez à éditer, ce changement ne peut être retrouvé avec des commandes u. Mais c’est possible dans Vim en utilisant la commande :earlier.

Vous pouvez également vous déplacer en avant dans le temps:

:later 45s

va vous placer 45 secondes plus tard.

Et si vous voulez une manière simple pour annuler 5 changements:

:undo 5

Vous pouvez voir le undo tree en faisant:

:undolist

Voyez :help:undolist pour les explications de l’output de cette commande.

Voyez :help undo-redo et :help usr_32.txt pour plus de détails.

Un moteur de recherche puissant mais pas un .com

Vim a un puissant moteur de recherche intégré, que vous pouvez utiliser pour trouver exactement ce que vous cherchez. Cela prend un peu de temps pour s’y habituer, donc démarrons.

Revenons à notre exemple habituel:

I have coined a phrase for myself – ‘CUT to the G’:

1. Concentrate
2. Understand
3. Think
4. Get Things Done

Step 4 is eventually what gets you moving, but Steps 2 and 3 are equally important. As Abraham Lincoln once said “If I had eight hours to chop down a tree, I’d spend six hours sharpening my axe.” And to get to this stage, you need to do Step 1 which boils down to one thing – It’s all in the mind. That’s why it’s so hard. gm

Supposons que vous cherchez le mot “Step”. En mode normal,vous tapez /Step<cr> (i.e., /Step suivi par la touche Entrée). Cela vous place à la première occurrence de ce groupe de caractères. Tapez n pour aller à l’occurrence suivante (‘n’ext) et N pour aller dans la direction opposée,donc l’occurrence précédente.

Mais comment faire si vous connaissez seulement une partie de la phrase ou pas la manière exacte de l’écrire? Est-ce que cela ne serait pas utile si Vim pouvait commencer à chercher et surligner pendant que vous tapez la chaîne recherchée? Vous pouvez activer cela en faisant:

set incsearch

Vous pouvez aussi dire à Vim d’ignorer la casse (minuscule ou majuscule) du texte que vous cherchez:

set ignorecase

d eight hours to chop down a

tree, I’d spend six hours sharpening my axe

Ou vous pouvez utiliser:

set smartcase

Quand vous avez activé smartcase:

  • Si vous cherchez /step, i.e., le texte que vous entrez est en minuscule, il va rechercher n’importe quelle combinaison de texte en majuscule et minuscule. Par exemple, il trouvera les quatre textes suivants – “Step”, “Stephen”, “stepbrother”, “misstep.”
  • Si vous cherchez /Step, i.e., le texte que vous entrez contient une majuscule, il recherchera SEULEMENT les textes avec exactement la même casse. Par exemple, il trouvera “Step” et “Stephen”, mais pas “stepbrother” ou “misstep.”
Note
Je recommande d’insérer ces deux lignes dans votre fichier d’initialisation de Vim , le fichier vimrc file (expliqué plus tard, mais voyez :help vimrc-intro pour une introduction rapide)a afin que cela soit validé par défaut.

Maintenant que nous avons assimilé les bases de la recherche, voyons la véritable puissance de cette recherche. La première chose à noter est que ce que vous fournissez à Vim peut ne pas être une simple phrase, cela peut être une “expression”. Une expression vous permet de préciser les ‘types’ de texte à chercher, pas juste un texte précis.

Par exemple, notez que /step va trouver steps comme step et même footstep si ce mot est présent. Et si vous cherchez exactement step et pas des mots contenant step? Alors utilisez /<step>. Le < et > indiquent le début et la fin d’un mot, respectivement.

De la même manière, comment chercher un nombre? Cherchez /d va trouver un ‘digit’. Mais un nombre est juste un groupe de digits ensemble. Donc nous indiquons “un ou plusieurs” digits ensemble /d+. Si nous cherchions zero ou plus de caractères, nous pourrions utiliser * au lieu de +.

Il y a une variété d’astuces que nous pouvons utiliser pour la recherche de motifs (patterns). Voyez :help pattern pour plus de détails.

Récapitulatif

Nous avons étudié quelques-unes des commandes d’édition basiques que nous utiliserons tous les jours dans Vim. Il est très important que vous soyez à l’aise avec ces concepts et que cela devienne une habitude. Il n’est pas utile d’apprendre chaque commande ou chaque variante d’une commande. Si vous savez comment utiliser une commande et comment en savoir plus à partir de vos connaissances, vous êtes un vrai Vimmer.

Maintenant, en avant et commencez à éditer!