Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Graver en ligne de commande
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Divers
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 5 visiteurs connectés sur le site !

Google

Vi peut vous sauver la vie
Vi peut vous sauver la vie

 

Introduction
Fonctionnement
Déplacement dans les fichiers
Traitement dans les fichiers
Fonctions
Commandes mnémoniques
Copier-coller
Rechercher/remplacer
La puissance des raccourcis clavier
Prise en charge des fichiers multiples
Associer des commandes et leur abbréviation
Complétion
Correction orthographique
Commandes diverses

 

Introduction

Tout le monde connaît vi , qui est l'éditeur de base de tous les systèmes UNIX . Vi peut vous sauver la vie, quand X ne répond plus sur votre machine , ou bien quand vous désirez vous connecter à distance sur une autre machine .

Fonctionnement

Vi fonctionne sous trois mode :
en mode insertion, on saisit du texte , et pour cela il faut saisir avant toute chose le caractère i,I,a,O ou o
en mode commande , vous pouvez vous déplacer dans le fichier et saisir des commandes , c'est le mode dans lequel on est quand on ouvre vi
en mode "ligne de commande" , qui sont les commandes de EX , on doit saisir : ou / , taper sa commande et finir avec Enter
Pour sortir de chaque mode ,on utilise la touche Echap

Déplacement dans les fichiers

vi fichier.txt ouvre un fichier , pour le fermer la commande :q fera l'affaire .
:w enregistrera ce même fichier et :wq permettra de d'enregistrer les informations que vous venez de placer dans ce fichier ,il s'agit d'une commande à ne pas oublier
Si vous souhaitez quitter sans sauvegarder, alors :q! est votre ami
Je me déplace dans un fichier le plus naturellement du monde en utilisant les flèches du pavé numérique , sinon vous avez aussi les touches h,l,j et k ,mais c'est se compliquer la vie
Plus intéressant, la touche $ ,déplace le curseur sur le dernier caractère de la ligne tandis que la touche 0, s'occupe du premier
Pour éviter tout déplacement fastidieux, G place le curseur sur la dernière ligne du fichier, et 1G ,le ramènera à la première.
Vim fournit plusieurs commandes à l'aide d'une seule touche pour accèder à un caractère particulier de la ligne. Ceci couplé à une bonne utilisation des techniques d'insertion de vim devrait vous conduire où vous souhaitez presque sans effort.
(ptca = puts the cursor at, place le curseur à)
w - Vous mène un mot en avant. ptca au début du prochain mot. ('W' fait presque la même chose, mais pour les "mots" qui peuvent inclure des caractères spéciaux (à l'exception de 'l'espace'))
e - ptca la fin de ce mot. Si le curseur est déjà à la fin de ce mot, il vous méne à la fin du prochain mot.
b - recule d'un mot; ptca début du mot précédent

Ensuite, il est important de savoir comment accéder à des emplacements particuliers dans une ligne. Des endroits importants sont le début de la ligne et la fin de la ligne.
0 - ptca début de la ligne

Vous vous souvenez des expressions régulières ? Vim essaie de faciliter le cours de l'apprentissage. Les deux commandes suivantes devraient suivre naturellement si vous pensez aux expressions régulières.
^ - ptca premier caractère non-vierge de la ligne
$ - ptca la fin de la ligne

Les commandes suivantes sont vraiment tout aussi utiles. Elles vous conduisent à la plus proche occurence d'un caractère dans une ligne particulière.

fx - ptca l'occurence suivante (vers l'avant)
du caractère 'x' dans la même ligne. Fx - ptca l'occurence précèdente du caractère


Celles-ci forment également les blocs de construction toutes les fois qu'un mouvement générique est demandé—comme dans les macros.

Les commandes g, comme je les appelle, se rapportent à un ensemble utile de commandes goto qui facilitent les déplacements. Les énoncer simplement devrait suffire.

1G - Vous conduit au début du fichier
0G - à la fin du fichier


gD - vous conduit à la première occurrence (intelligente) du mot sous le curseur dans le même fichier. C'est intelligent, puisqu'en langage de programmation, cela vous conduit à la définition ou à la déclaration de la fonction ou de la variable.
gj - va à la prochaine ligne. C'est semblable à j quand il n'y a pas de sauts de ligne. Quand il y a des sauts de ligne, saisir j vous conduira à la prochaine nouvelle ligne. gj vous conduira au même caractère dans la prochaine rangée. (Essayez-le.)
gk - Semblable.
(Pour éviter les sauts de ligne, saisissez :set nowrap)

Notez en effet que le g minuscule est nommé opérateur étendu chez vim. Il fait bien plus qu'un simple goto. En effet, l'utilisateur peut consulter :help g pour plus d'informations. Je mentionnerai quelques uns utiles :

gf - Ouvre le nom de fichier sous le curseur
ga - Écrit la valeur ascii du caractère sous le curseur.
gs - Arrête vim pendant 1 seconde. Évidemment, comme la plupart des commandes vim, on peut préfixer ceci
avec un nombre pour obtenir une commande générale de mise en sommeil.

Traitement dans les fichiers

Si le caractère i insère votre saisie juste avant le curseur, A place votre saisie après le dernier caractère de la ligne, ce qui est bien pratique en cas de ligne interminable.
x efface le caractère qui se trouve sous le curseur , 2x effacera 2 caractères et ainsi de suite .
D efface toute la ligne à partir du caractère sous le curseur, tandis que dd efface la ligne courante , 4dd ayant pour effet d'effacer 4 lignes à partir de la ligne courante .
Ne pas oublier la commande u qui annule la dernière modification effectuée dans le texte .

r remplace le caractère à la position du curseur et revient en mode remplacement, en d'autres termes, remplace un caractère
shift+r (ou R) entre dans ce que les gens appelent génèralement le mode remplacement.

y : copie la selection. (Emploie visuel ou copie implicitement)
yy : copie la ligne courante.
Y : copie la ligne courante.
d : supprime (coupe) la sélection. Même usage que y.
dd : supprime (coupe) la ligne courante.
D : supprime depuis ici jusqu'à la fin de la ligne.
p : copie la sélection (Coller est intelligent. Si vous copiez une ligne entière, il la placera au-dessous de la ligne courante .) Reportez-vous à 'ddp' ci-dessous dans claviers combos

Fonctions

Pour exécuter une commande sous vi , saisissez :set all et vous aurez une idée de l'ensemble des options de configuration
:set number /:set nonumber permet de numéroter ou dénuméroter les lignes du fichier
:set showmatch /:set noshowmatch permet à chaque fois que vous fermez une accolade ou parenthèse, de mettre en surbrillance l'accolade ou parenthèse correspondante .
Pour rendre les modifications permanentes il suffit de créer dans votre répertoire personnel un fichier .exrc qui contiendra :

set number
set showmatch selon les options que vous souhaitez activer au démarrage avec vi 

Commandes mnémoniques

Les commandes mnémoniques sont des commandes exécutant des tâches ordinaires. Ce qui les distingue des commandes normales est leur capacité fondamentale à se les rappeler d'après les tâches qu'elles exécutent. Pour bien comprendre et utiliser les commandes mnémoniques, on doit d'abord comprendre les objets texte. Reportez-vous à :help text-objects. Comme exemple de commande mnémonique, saisissez ctx:

ctx - modifie jusqu'à x (supprime d'ici jusqu'au premier caractère x et vous conduit dans un mode insertion)
dtx - supprime jusqu'à x

Les commandes mnémoniques soumises aux objets texte

Il y a plusieurs objets dans vim qui agissent en tant qu'objets texte : des mots, des phrases, des blocs, etc .. Vim vous permet de les utiliser dans les sélections et les éditions.



daw - supprime un mot
dw - supprime d'ici jusqu'à la fin du mot
daW - supprime un mot (incluant des caractères spéciaux, à l'exception de l'espace)
dW - supprime d'ici jusqu'à la fin du mot

das - supprime la phrase où nous sommes
daB - supprime un bloc intèrieur de code {}

Des règles telles que celles qui précèdent peuvent s'appliquer en général aux objets texte :

s - phrase
w - mot
W - MOT
t - balise ( 'dat' supprime depuis jusqu'à
p - paragraphe
B - bloc de code ( '{' ou '}' fonctionne seulement pour des blocs de style C)

Formes de parenthèse:
( ou ) - parenthèse ( ... )
[ ou ] - [ .. ]
< ou > - se rapporte à <....>
{ ou } - { bloc également visé par le bloc b ci-dessus

Formes de citation:
Juste comme les formes de parenthèse
", ', ` - peut être employé pour se rapporter aux objets texte delimités par eux.

Ces choses peuvent de ce fait être utilisées de manière semblable à

da : supprime un objet texte
di : supprime la partie interne de l'objet texte.
(Cela laisse le () ou les espaces dans les mots ou le {} dans les blocs)

Copier-coller

Il est possible sous Vi de copier-coller une sélection de lignes. Pour ce faire, il suffit de taper la commande suivante pour copier n lignes :
nyy
Par exemple la commande suivante copiera dans le tampon 16 lignes :
16yy
Pour coller la sélection, il suffit de taper la lettre p.

Rechercher /remplacer

Pour rechercher un mot dans un document, il vous suffit (en mode normal) de taper / suivi de la chaîne à rechercher, puis de valider par la touche entrée. Il est alors possible d'aller d'occurrence en occurrence grâce à la touche n.
Pour remplacer une chaîne de caractère par une autre sur une ligne, il existe une commande très puissante sous Vi utilisant les expressions régulières. Voici sa syntaxe :
:s/chaîne_a_remplacer/chaîne_de_remplacement/
Il est possible de la généraliser à tout le document grâce à la syntaxe suivante :
:%s/chaine_a_remplacer/chaine_de_remplacement/
Une astuce très utile lors de la recherche est la touche # et la touche *. Celles-ci recherchent le mot sous le curseur, en arrière et en avant respectivement. Pour résumer ceci,
/foobar recherche foobar
n va vers le prochain résultat
N va vers le précédent résultat
# recherche vers l'arrière le mot sous le curseur
* recherche vers l'avant le mot sous le curseur


La commende remplacer est lègérement plus compliquée. Cependant, dans des mains adroites, elle peut s'avérer sans égale. La syntaxe de la commande remplacer est la suivante :

:[range]s[ubstitute]/pattern/string/[options]

La plage est un argument très interessant à manier. Ici nous observons la commande :help range de vim pour voir ce qu'on peut faire.

Range Ce que cela signifie
------ --------------
{number} un nombre de ligne absolu
. la ligne courante
$ la dernière ligne du fichier
% égal à 1,$ (le fichier entier)
* égal à '<,'> (l'aire de vision)
't la position du marqueur mark t (en minuscule)
/{pattern}[/] la ligne suivante où (le motif) correspond
?{pattern}[?] la ligne précèdente où (le motif) correspond
\/ la ligne suivante où le motif de recherche précèdemment utilisé correspond
\? la ligne précèdente où le motif de recherche précèdemment utilisé correspond
\& la ligne suivante où le motif de remplacement précèdemment utilisé correspond


La plupart des commandes de remplacement dans vim sont souvent écrites de telle sorte :%s/old_string/new_string, pour des raisons évidentes.
Examinons de nouveau l'aide de vim pour obtenir les options (en bref) :
Option What it means
------ --------------
c Interroge avant le remplacement. (Vérifie)
e N'affiche pas de messages d'erreur si un tel modèle n'est pas trouvé.
g Global (remplace toutes les occurrences dans la ligne).
i Ignore la casse.
I N'ignore pas la casse.
n Ne remplace pas. Renvoie seulement le nombre de correspondances réussies.

Pour, par exemple, un remplacement de ce modèle
:1,'b/dog/cat/ceg
remplacera dog avec cat après avoir vérifié avec vous, pour toutes les occurences de cette ligne, depuis la ligne 1 vers la ligne où le marqueur est défini en tant que b. Aucune erreur ne sera affichée si dog n'est pas trouvé.
Réfèrez-vous à la section "Prise en charge de répertoires multiples" pour remplacer et rechercher parmis plusieurs fichiers

La puissance des raccourcis clavier

Pensez à la puissance des frappes tels que les combos dans un jeu de combattants de style arcade. Cela vous aide à faire plusieurs tâches triviales et répétitives avec deux touches combinées. La signification de chacune des touches est déjà connue, juste comme celle des frappes légères et des coups de pied violents. Les placer ensemble de façon spécifique produit plusieurs résultats souhaitables. On illustre quelques uns d'entre-eux de la manière suivante.
xp - intervertit le caractère courant et le suivant
ddp - intervertit la ligne courante et la suivante
A; - ajoute un point virgule à la fin de la ligne.
>> - augmente l'indentation de la ligne courante.
<< - diminue l'augmentation de la ligne courante.

Prise en charge des fichiers multiples

Souvent, les programmeurs ou les développeurs ont plusieurs fichiers dans leurs mémoires tampon. Je suppose que vous savez comment dédoubler des fenêtres ainsi que tout ce qui s'ensuit. Sinon, vous pouvez lire le tutorial Vim :help vsplit

À partir de vim 7.0, les onglets sont pris en charge. Les onglets peuvent être ouverts avec

:tabnew file.txt

Pour parcourir les onglets, on pourrait utiliser tabnext (:tabn) et :tabprevious (:tabp). On peut par défaut, également se diriger vers l'onglet précèdent ou prochain en employant Control+PgUp et Control+PgDwn à condition naturellement qu'il n'y ait pas d'autres programmes ouverts sur cette application. (Gnome-terminal est un programme commun avec plusieurs onglets.)

Une autre manière d'ouvrir et d'éditer plusieurs fichiers est la mémoire tampon. N'importe quel fichier que vous ouvrez est dans votre mémoire tampon jusqu'à ce que vous le fermiez. Pour ouvrir un fichier dans une mémoire tampon, employez simplement la commande d'édition usuelle

:e foo.txt

Pour prendre en charge la mémoire tampon, on peut trouver utile les commandes suivantes :
:bfirst change pour la première mémoire tampon
:bn change pour la prochaine mémoire tampon
:bp change pour la précèdente mémoire tampon
:blast change pour la dernière mémoire tampon
:ls liste toutes les mémoires tampon actuellement ouvertes
:buf foo.txt change pour foo.txt dans la mémoire tampon

La puissance principale des mémoires tampon apparait lors de leur prise en charge dans un batch Vim intègre la commande bufdo, qui vous permet d'exécuter une commande pour tous les fichiers de votre mémoire tampon

:bufdo {cmd}

En citant le manuel de vim,

Ce qu'il fait fondamentalement est

:bfirst :{cmd} :bnext :{cmd} etc ...

Quand le fichier courant ne peut être abandonné et que [!] n'est pas prèsent, la commande échoue. Quand une erreur est détectée sur une mémoire tampon, d'autres mémoires ne seront pas parcourues. Les mémoires non listées sont ignorées. La dernière mémoire (ou quand une erreur survient) devient la mémoire courante. {cmd} peut contenir | pour enchaîner plusieurs commandes. {cmd} ne doit pas supprimer des mémoires tampon ou ajouter des mémoires dans la liste des mémoires.

Pour chercher dans plusieurs fichiers, on fera simplement

:bufdo /searchstring/

Pour chercher et remplacer par exemple, on pourrait faire

:bufdo %s/oldtext/newtext/ge

Il existe d'autres choses intèressantes que l'on peut faire avec la mémoire tampon. On peut sauvegarder son projet entier dans une archive en faisant quelque chose de semblable à

:silent bufdo !tar -rvf backup.tar %

Naturellement, les fichiers ne doivent pas être ouverts dans vim, vous pourriez définir la variable args dans vim, et employer semblablement argdo.

Par exemple, pour indenter tous les fichiers dans foobar/, on pourrait faire

:args foobar/* :argdo !indent % | update

update écrit seulement dans le fichier si des modifications sont faîtes


Associer des commandes et leur abbréviation

Associer des commandes et leurs abréviations
Associer des commandes et leurs abbréviations est une partie essentielle de la ligne de survie du programmeur dans vim

Des commandes peuvent être associées de la façon suivante :

:map commande-devant-être-exécutée

Cela associera la commande sous deux modes. Employez nmap, si vous souhaitez associer une commande en mode normal seulement et imap en mode insertion.

Par exemple, on pourrait considérer

:nmap \cc !gcc\ -g\ %

Cela signifierai que saisir \cc (rapidement) en mode normal exécuterait la compilation via gcc sur le programme courant en permettant le débogage

Les abréviations sont réellement des choses utiles à avoir dans son arsenal. Elles vous permettent de remplacer un grand mot par un plus petit ou de réparer vos erreurs de saisie communes. Un exemple pourra établir ceci assez clairement :

:iab cs Computer Science. :iab mroe more

Cela remplacera cs (suivi par un espace) par Computer Science chaque fois que je le saisis et remplacera mroe par more. Le i représente le mode insertion et le ab abbréviation. On pourrait saisir :ab aussi bien, bien que cela ne soit pas recommandé. (cela remplacerai une de nos commandes \cs par \Computer Science.)

Pour supprimer l'association ou l'abbreviation ci-dessus, saisissez simplement

:unmap \cc or :unab cs

respectivement

Si vous souhaitez que ces abbreviations où ces associations perdurent parmi les diverses utilisations de vim, placez-les simplement dans votre ~/.vimrc

Comme exemple final, prenons l'association de Y vers une manière plus intuitive de l'utiliser. On pourrait faire

:map Y y$

pour cette session et pour l'enregistrer de façon permanente, ajoutez

map Y y$

à votre ~/.vimrc

Complétion

Vim gère à présent l'omni-completion de même que la complétion intelligente de la mémoire tampon. Les commandes suivantes pourraient résumer cela :

Ctrl-n - compléte (une petite fenêtre devrait apparaître). Vous pouvez l'examiner avec Ctrl-n et Ctrl-p. Continuer simplement à saisir quand vous avez fini.
Ctrl-x f - compléte ce nom de fichier.
Ctrl-x i - compléte depuis les fichiers inclus.

Correction orthographique

Avec Vim 7.0, ce dernier prend en charge le contrôle orthographique intégré. Pour l'activer, saisissez simplment
:set spell

et pour le désactiver
:set nospell

Vous pouvez parcourir le fichier à la recherche d'erreurs orthographiques en utilisant ]s et [s . Vous pouvez les corriger en saisissant z= . Cela affichera une liste des possibilités dans laquelle vous pourrez choisir.

Commandes diverses

Cette section énumère quelques commandes diverses qui ne conviendraient nulle par ailleurs dans ce document.



Shift+j (ou J) - Cela ajoutera la ligne précèdente à la fin de la ligne courante. Apprenez à l'utiliser convenablement. C'est ce que des utilisateurs d'autres éditeurs exécuteraient avec <End><>. Une mnémonique pour Joindre la précèdente ligne avec la ligne courante.

Shift+k (ou K) - Affiche la page de manuel pour le mot sous le curseur

~ - Modifie la casse du caractère sous le curseur et se déplace vers le prochain caractère.

. - répète la dernière commande, quelle qu'elle soit. (La commande peut être l'insertion d'une phrase ou même d'une macro). Ce que nombre d'éditeurs appeleraient répétition.

Vim peut aussi incrémenter et décrémenter des nombres pour vous. C'est extrêmement utile lors de l'écriture de macros gènériques plus grandes. Comme d'habitude, des nombres précédés par un 0 sont considérés comme octaux ; des nombres précédés par un 0x sont considérés comme hexadécimaux. Les nombres ne commençant pas par zéro sont décimaux

Control+A - Incrémente le nombre sous le curseur
Control+X - Décrémente le nombre sous le curseur

Sources de l'article


 

Forum
Forum d'entraide
Blog
Le blog
News
Les news du site
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Humour
Ensemble
Divers