Vim, l'éditeur de texte Linux
Vim est un éditeur de texte puissant et polyvalent, doté d'une haute personnalisation et de nombreuses fonctionnalités. Pour ouvrir un fichier : tapez vim nomdefichier dans le terminal. Vim supporte les chemins relatifs et absolus.
Les principaux modes de Vim :
- Mode Normal : C'est le mode principal de Vim, où toutes les commandes sont exécutées. Au démarrage, Vim se trouve dans ce mode. Les entrées clavier sont interprétées comme des commandes, et non comme du texte. (Appuyez sur
ipour entrer en mode Insertion, sur:pour entrer en mode Ligne de commande, et surEscpour revenir au mode Normal depuis d'autres modes) - Mode Insertion : En appuyant sur
i, vous entrez dans ce mode où vous pouvez saisir du texte comme dans un éditeur standard. Appuyez surEscpour retourner au mode Normal. - Mode Ligne de commande : En appuyant sur
Shift+;(ce qui donne:), vous accédez à ce mode qui permet des opérations complexes sur les fichiers. Par exemple,:wqenregistre et quitte Vim. Appuyez surEscpour revenir au mode Normal.
Commandes courantes en mode Normal :
Navigation
gg: Placer le curseur au début du fichier.G: Placer le curseur à la fin du fichier.nG: Aller à la ligne numéron.$: Placer le curseur à la fin de la ligne actuelle.^: Placer le curseur au début de la ligne actuelle.w, b: Déplacer le curseur d'un mot en avant ou en arrière.h, j, k, l: Déplacer le curseur à gauche, en bas, en haut, à droite.
Édition de texte
(n)yy: Copier la ligne actuelle ounlignes.(n)dd: Couper (supprimer) la ligne actuelle ounlignes.(n)p: Collernlignes après le curseur.u: Annuler la dernière action.Ctrl+r: Rétablir l'action précédemment annulée.
Autres opérations
~: Changer la casse du caractère sous le curseur.(n)r: Remplacerncaractères par un autre.R: Entrer en mode remplacement.(n)x: Supprimerncaractères après le curseur.:wenregistrer,:w!forcer l'enregistrement,:qquitter,:q!quitter sans sauvegarder,:wq!quitter et forcer l'enregistrement
Édition multi-fenêtres dans Vim
Vim permet d'ouvrir plusieurs fichiers simultanément et d'utiliser des fenêtres divisées pour l'édition parallèle.
Ouvrir plusieurs fichiers - Division verticale (vs) :
- Fonction : Ouvre une nouvelle fenêtre à droite de la fenêtre actuelle et charge le fichier spécifié.
- Utilisation :
:vs fichier2.c. Exemple : ouvrez d'abordfichier1.c, puis dans Vim tapez:vs fichier2.cpour créer une fenêtre à droite et ouvrirfichier2.c.
Changement de fenêtre Ctrl+w w :
- Fonction : Permuter entre plusieurs fenêtres.
- Utilisation : Appuyez sur
Ctrl+w, puis surwpour déplacer le curseur vers la fenêtre suivante.
Édition dans une fenêtre : L'édition (insertion, suppression, copie, etc.) ne se fait que dans la fenêtre active.
- Division horizontale :
:sp fichier2.c - Ajustement de taille :
Ctrl+w +(augmenter la hauteur),Ctrl+w -(diminuer la hauteur).
Configuration simple de Vim
Vim utilise deux fichiers de configuration pricnipaux :
- Fichier de configuration global :
/etc/vimrc, applicable à tous les utilisateurs. - Fichier de configuration utilisateur : Chaque utilisateur peut créer un fichier
.vimrcdans son répertoire personnel. Par exemple,/home/utilisateur/.vimrc.
Modifier .vimrc
- Allez dans votre répertoire personnel :
cd ~ - Ouvrez le fichier
.vimrc:vim .vimrc
Configurations Vim courantes
Ajoutez ces configurations dans .vimrc :
syntax on: Active la coloration syntaxique.set nu: Affiche les numéros de ligne.set shiftwidth=4: Définit l'indentation à 4 espaces.
Tester la configuration
Après modification, rechargez la configuration avec :source ~/.vimrc dans Vim ou redémarrez l'éditeur.
Gestion des privilèges sudo
Pour accorder des privilèges sudo à un utilisateur :
- Ouvrez le fichier sudoers :
sudo visudo(recommandé plutôt quevim /etc/sudoers) - Ajoutez cette ligne (remplacez
utilisateurpar le nom du compte) :
utilisateur ALL=(ALL:ALL) ALL
- Enregistrez et quittez
Vérification :
su - utilisateur
sudo ls /root
GCC/G++ et le processus de compilation
Le processus de compilation C/C++ comporte quatre étapes : prétraitement → compilation → assemblage → édition de liens.
1. Prétraitement
Le prétraitement gère les macros, commentaires et fichiers d'en-tête.
Commande :
gcc -E source.c -o source.i
2. Compilation
La compilation transforme le code prétraité en code assembleur.
Commande :
gcc -S source.i -o source.s
3. Assemblage
L'assemblage convertit le code assembleur en code objet.
Commande :
gcc -c source.s -o source.o
4. Édition de liens
L'édition de liens combine les fichiers objets et bibliothèques pour créer un exécutable.
Commande :
gcc source.o -o programme
Bibliothèques statiques et dynamiques
Bibliothèques statiques (.a) :
- Le code est intégré dans l'exécutable
- Avantage : Exécutable autonome
- Inconvénient : Fichiers plus volumineux
Bibliothèques dynamiques (.so) :
- Chargées à l'exécution
- Avantage : Partage entre programmes, économie d'espace
- Inconvénient : Dépendances externes
Lien statique :
gcc -static programme.c -o programme_statique
Lien dynamique (par défaut) :
gcc programme.c -o programme_dynamique
Modes Debug et Release
Mode Debug :
- Inclut les informations de débogage
- Pas d'optimisation
- Facilite le débogage avec gdb
Commande :
gcc -g programme.c -o programme_debug
Mode Release :
- Optimisations pour la performance
- Pas d'informations de débogage
- Fichier exécutable plus compact
Commende :
gcc -O2 programme.c -o programme_release
Options courantes de GCC/G++
| Option | Fonction | Exemple |
|---|---|---|
-o <nom> |
Spécifie le nom du fichier de sortie | gcc -o prog prog.c |
-c |
Compilation seulement (crée .o) |
gcc -c prog.c |
-g |
Informations de débogage | gcc -g prog.c -o prog |
-O0 |
Aucune optimisation | gcc -O0 prog.c -o prog |
-O2 |
Optimisation standard | gcc -O2 prog.c -o prog |
-Wall |
Active tous les avertissements | gcc -Wall prog.c -o prog |
-static |
Lien statique | gcc -static prog.c -o prog |
-shared |
Crée une bibliothèque partagée | gcc -shared prog.c -o libprog.so |
-L<chemin> |
Chemin de recherche des bibliothèques | gcc -L/usr/local/lib prog.c -o prog |
-I<chemin> |
Chemin de recherche des en-têtes | gcc -I/usr/local/include prog.c -o prog |
-l<nom> |
Lie avec la bibliothèque spécifiée | gcc prog.c -lm -o prog |
GCC vs G++
gcc: Compilateur C (peut aussi compiler du C++ mais sans liaison automatique des bibliothèques C++)g++: Compilateur C++ (lie automatiquement avec les bibliothèques C++ comme libstdc++)