L'éditeur de texte Vi

L'éditeur de texte Vi - Divers - Programmation

Marsh Posté le 04-08-2005 à 20:47:45    

Bonjour tout le monde  :hello:  
 
Après le topic emacs je lance le topic vi celui-ci aura pour but de discuter du dinosaure Vi et ses variantes, je mettrai également quelque commande utile voilà :)
 
Vi est tout simplement un éditeur de texte, le plus répandu depuis des années sur tous les systèmes d'esprit Unix.
Vi = Visual Interactive editor
Vi peut être un choc pour le débutant habitué aux interfaces graphiques et aux menus déroulants mais une version plus moderne nous et proposé appelée nvi ainsi que l'évolution appelée vim (vi improved)
 
pour vous déplacez dans vi utilisez les flèches si celle-ci ne fonctionne pas (ex: dans le cas de liaisons à distance de type telnet à partir d'un terminal) utilisez:
h : vers la gauche
j : ligne suivante
k : ligne précedente
l : vers la droite
 
Lancement du programme :
vi nom : Démarre l'éditeur et charge le fichier désigné
vi nom1 nom2 nom3 : Démarre et charge les 3 fichier
vi -R nom : Démarre et charge le fichier en lecture seul
vi -r nom : Démarre et restaure le fichier après une avarie
 
Nota :
Vim propose un mode à fichier multiples,
:vsplit : Divise la surface d'affichage en 2 fenêtres
:bn : affiche le contenu du tempon suivant
:set scrollbind : pour coupler les déplacements du curseur dans les deux fenêtres
 
combiaison de défilement :
Ctrl+U : vers le haut
Ctrl+D : vers le bas
 
Mode multiplicateur:
5x : supprime d'un coup 5 caractères depuis la position du curseur
forme général: <n>x où n est un entier
 
Commandes :
I (pou Input): bascule en mode saisi
Echap : active le mode commande  
 
:set : affiche les paramètres de l'utilisateur
:set all : affiche tout les paramètres actuels
:set[option] : active une option
:set no[option] : desactive une option
:set option? : affiche les options possible
 
ZZ : enregistre et quite l'editeur
x : supprimer un caractère
u : annule la suppression
:w : sauvegarder
:q : quitter
:wq : sauvegarder en quittant
yy : fait une copie de la ligne courante dans un tampon mémoire
    ex: 5yy : copie 5 lignes
p : coller le contenu du tampon
:w! : enregistre dans le fichier même si il a été ouvert en lecture seule
:e nom : charge le fichier nom
 
(à suivre)


Message édité par blastman le 05-08-2005 à 03:42:37

---------------
http://www.blastmanu.info
Reply

Marsh Posté le 04-08-2005 à 20:47:45   

Reply

Marsh Posté le 05-08-2005 à 10:20:02    

Salut, bonne initiative :D
 
Je rajouterai que la commande :vsplit, split l'écran en vertical, alors que la commande :split split l'écran de manière horizontal
 
Ensuite le '.' permet de refaire l'action précédente
ctrl+w et flèche haut/bas/gauche/droite permet de se déplacer dans les différents buffers
 
Pour sélectionner du texte en visuel, v ou V+bas pour sélectionner les lignes que l'on veut ou taper:
V 100 bas (faut tapper les commandes à la suite et non en même temps) permettra de sélectionner les 100 prochaines lignes
 
Remplacer une occurence (après avoir sélectionner un block de ligne):
:s/text_que_je_veux_remplacer/nouveau_text/g
 
l'option g permet de faire la substitution de manière global, sans le g, la fonction remplacera que la première occurrence trouvée
 
Pour rechercher du text, en mode commande:
/mon_text_a_rechercher
 
pour se ballader sur toutes les occurrences trouvées:
n => pour aller à l'occurrence suivante
N => pour aller à l'occurence précédente
 
indenter vers la droite une ligne en mode commande:
>>
 
indenter vers la gauche une ligne en mode commande:
<<
 
On peut aussi combiner les commandes:
V 20 bas >>
cette commande indentera les 20 prochaines lignes vers la droite
 
 
Sinon voici un lien qui apprend pas mal à se servir de vi: http://www.linux-france.org/articl [...] index.html


Message édité par onizuka_sensei le 05-08-2005 à 10:32:29
Reply

Marsh Posté le 05-08-2005 à 10:55:26    

youps
je crois que tu confond vi et vim ;)
vim (vi improved) permet de faire de multiples choses que tu ne peux faire sous vi, comme la sélection avec le v (ou la colorisation/indentation/etc.)
 
Il est possible que ta commande vi soit un lien vers vim sur ton OS ...

Reply

Marsh Posté le 05-08-2005 à 11:31:57    

oui je sais mais comme il donne des trucs aussi pour vim, je me suis permis d'en donner d'autres :)

Reply

Marsh Posté le 05-08-2005 à 11:43:11    

Désolé si je vais te sembler désagréable, blastman, mais une fois de plus, ton topic ne me semble pas du tout pertinent :
 
- Il existe déjà des quantités monumentales de tutos sur VI;
- Tu proposes une liste de commandes mais tu n'introduis même pas l'outil;
- Il faudrait d'abord exposer ce qu'est un éditeur modal avant toute chose.
- etc, etc.
 
BREF, un intérêt plus que limité pour un outil documenté, re-documenté et sur-documenté depuis la nuit des temps.
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-08-2005 à 13:03:38    

sircam a écrit :

Désolé si je vais te sembler désagréable, blastman, mais une fois de plus, ton topic ne me semble pas du tout pertinent :
 
- Il existe déjà des quantités monumentales de tutos sur VI;
- Tu proposes une liste de commandes mais tu n'introduis même pas l'outil;
- Il faudrait d'abord exposer ce qu'est un éditeur modal avant toute chose.
- etc, etc.
 
BREF, un intérêt plus que limité pour un outil documenté, re-documenté et sur-documenté depuis la nuit des temps.
 
[:pingouino]


 
ouais je sais, mais bon ca peut toujours servir pour des débutant qui sont sur HFR et qui n'ont pas le courage d'aller rechercher une commande sur le net :D et puis bon j'ai balancé ce topic surtout parcequ'il y a un topic emacs et pas vi :D dés que j'en trouve le temps j'essayerai d'en faire un beau truc plus complet


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 05-08-2005 à 13:10:05    

Tu fais ce que tu veux, c'est vendredi.
 
Les topics inutiles sont aussi les bienvenus.
 
[:klem3i1]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-08-2005 à 13:10:14    

Comme je l'ai dit plus haut avec vim nous pouvons coupler les déplacements du curseur dans les deux fenêtres avec :set scrollbind (la commande doit être émise dans les deux fenêtres)
 
je propose ici un petit script qui va permettre d'automatiser ce couplage de curseurs
 
coupler.scr :

Code :
  1. :vsplit^M:bn^M:set scrollbind^M^W^W:set scrollbind^M^W^W


 
pour activer le script:
vim -s coupler.scr fichiera.txt fichierb.txt


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 05-08-2005 à 13:14:18    

sircam a écrit :

Tu fais ce que tu veux, c'est vendredi.
 
Les topics inutiles sont aussi les bienvenus.
 
[:klem3i1]


 
 :)  je suis sur que ca pourra aider quand même quelques personnes et puis bon si je le lance c'est aussi et surtout pour parler de lui, exposer les problèmes que l'on rencontre avec vi, vim ... je ne veux pas faire un cours complet sur l'éditeur vi juste référencer quelques commandes pratique.
Et puis bon comme tu la dit c'est vendredi  :)


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 05-08-2005 à 13:16:02    

Docteur,
 
Pourquoi utiliser VI alors qu'il existe des éditeurs plus modernes ?
 
 
sircam, utilisateur de VI.
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-08-2005 à 13:16:02   

Reply

Marsh Posté le 05-08-2005 à 13:19:36    

et yzis, vous avez essayé ?

Reply

Marsh Posté le 05-08-2005 à 13:22:11    

lorill a écrit :

et yzis, vous avez essayé ?


 :non: C'est un topic VI ici, Monsieur.
 
 
 
 
 
 
 
 
 
jEdit ? [:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-08-2005 à 13:42:31    

sircam a écrit :

:non: C'est un topic VI ici, Monsieur.


hum :o
 

Citation :

Yzis a brand new editor inspired by vim. Yzis aims to be a powerful, fast editor with all of Vim's features and hopefully, at some point, more.


 
Si vim et nvi ont leur place ici, yzis probablement aussi. Mais comme je ne l'ai jamais testé, je voulais savoir si qqun avait un retour d'experience a partager.

Reply

Marsh Posté le 05-08-2005 à 13:44:10    

[serious mode]
Jamais utilisé. Bloqué sur vi. Installe-le et teste, non ?
[/serious mode]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 06-08-2005 à 21:16:37    

vi c'est cool

Reply

Marsh Posté le 06-08-2005 à 22:00:29    

Il ne faut oublier view qui est un vi en mode lecture seul. view est très pratique quand on veut lire un fichier sans prendre le risque de le modifier par erreur. Ce sont souvent les débutants qui en auraient le plus besoin, mais ce sont eux qui ignorent le plus son existence.
 
Par ailleurs, il y a vi pour les lignes de commande d'un Korn shell, que l'on active avec set -o vi. C'est bien pour se ballader dans l'historique des lignes de commandes quand on ne connait pas emacs qui est souvent mis par défaut.
 
Quand on veut consulter plusieurs fichiers à la suite sans sortir de l'éditeur, on peut tapper sur la ligne de commande view *.c et dans l'éditeur pour passer au fichier suivant, on tape :n
 
Je me souviens que j'utilisais aussi ctrl+G pour avoir des infos sur le fichier en cours.

Reply

Marsh Posté le 06-08-2005 à 22:08:58    

Et puis cher blastman, tu indique la commande p pour paster, et tu oublies les commandes pour remplir le buffer que tu pastes. Il s'agit du fameux dd qui vous delete une ligne entière, et son petit frère dw qui ne coupe qu'un mot. Si je me souviens bien, il n'y avait pas de commande pour copier. On était obligé de taper dd puis P pour remettre ce que l'on venait de supprimer, et plus loin, on copiait le buffer par un nouveau P.
 
Ah nostalgie, quand tu nous tiens !


Message édité par olivthill le 06-08-2005 à 22:10:11
Reply

Marsh Posté le 06-08-2005 à 22:20:17    

tutut
la commande yy permet de mettre une ligne dans le buffer, et c'est tout naturellement que yw va mettre un mot dans le buffer ...
EDIT: il manquait un  :jap:


Message édité par mcjoedassin le 06-08-2005 à 22:34:53
Reply

Marsh Posté le 06-08-2005 à 22:23:49    

Ah oui, désolé, je ne m'en souvenais plus (ou alors (en étant de mauvaise foi) cela ne marchait pas sur ma vieille machine).
Merci mcjoedassin !


Message édité par olivthill le 06-08-2005 à 22:24:20
Reply

Marsh Posté le 06-08-2005 à 22:43:55    

http://www.ibiblio.org/web-gentoo/images/vicheat-final.png
 
[:bien]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-08-2005 à 01:40:40    


 
J'l'avais déja vue passer celle la, mais j'la retrouvais plus  :(  
 
Mon sauveur  :love:  
 
(Je dois faire du linusk embarqué au taff, et le seul éditeur auquel j'ai le droit dans la cible c'est le vi de la busybox... - je tournais avec a, x, les fleches, :w et :q)


Message édité par Mackila le 07-08-2005 à 01:42:32
Reply

Marsh Posté le 30-11-2011 à 09:05:17    

Bonjour à tous/toutes.
Je voudrais faire une manip sur un fichier texte et je pense que vi (ou winvi) est le plus approprié.
Je dispose d'un fichier avec 40 mille noms de personnalités, triées par nom, prénom date de naissance.
Mais devant certains noms, je veux mettre une * pour signaler qu'elle est connue. Seulement, si je trie le fichier après avoir rajouté des noms, le tri alpha foirera.
Je voudrais donc, avant le tri, rejeter la * en fin de ligne, ensuite insérer les noms, trier et remettre l'étoile en début de chaque ligne où elle se trouvait.
Exemple

 

J'ai ceci

 

Adams Phillip 12-07-1939
Adams Rhonda 11-11-1971
Adams Richard 09-05-1920
Adams Ryan 05-11-1974
*Adams Scott 08-06-1957
Adams Timothy 04-08-1967
Adamski (producteur) 04-12-1967
Adamski George 17-04-1891
Adamson Andrew 01-12-1966
*Adamson Chuck 11-06-1936
Adamson Joy 20-01-1910

 


et je veux ceci

 

Adams Phillip 12-07-1939
Adams Rhonda 11-11-1971
Adams Richard 09-05-1920
Adams Ryan 05-11-1974
Adams Scott 08-06-1957*
Adams Timothy 04-08-1967
Adamski (producteur) 04-12-1967
Adamski George 17-04-1891
Adamson Andrew 01-12-1966
Adamson Chuck 11-06-1936*
Adamson Joy 20-01-1910

  

La commande global search and replace devrait le faire mais je ne vois pas comment. Qqn a une idée ? Merci d'avance.


Message édité par pgriffet le 30-11-2011 à 09:09:16
Reply

Marsh Posté le 02-12-2011 à 07:00:27    

Essaie ça:

 

:%s/^\*\(.*\)$/\1*/

 

Explications:

 

Dans la partie recherche

 

^ représente le début de ligne
\* le caractère "*"
\(.*\) tout ce qui vient après ("." = n'importe quel caractère et "*" répété n fois). L'utilisation des parenthèses copie  ce contenu dans la variable $1
$ représente la fin de ligne

 

Dans la partie remplace

 

\1 colle tout le contenu de (.*)
* ajoute le caractère "*"

 

Edit: quand je fais la même chose dans EditPadPro, je fais

 

Search for
^\*(.*)$
Replace by
$1*

 

C'est chiant que mon VIM n'utilise pas les mêmes conventions pour les regexp (je dois antislasher tous les caractères diacritiques, \1 au lieu de $1,...)... ça doit pouvoir se paramétrer?


Message édité par Panem le 02-12-2011 à 07:33:27

---------------
Topic Couture Homme
Reply

Marsh Posté le 02-12-2011 à 07:08:45    

Au passage, un bon site sur les expressions régulières: http://www.regular-expressions.info/


---------------
Topic Couture Homme
Reply

Marsh Posté le 02-12-2011 à 07:40:30    

Merci Panem.
J'ai aussi eu la solution suivante
 
:%s/\*.*$/&\*/     pour rejeter l'étoile en bout de ligne
:%s/\*//     pour supprimer l'étoile du début
 
Trouvé ici : http://www.thegeekstuff.com/2009/0 [...] -examples/

Reply

Marsh Posté le 02-12-2011 à 07:43:37    

:jap:  
 
yes, ça marche aussi


---------------
Topic Couture Homme
Reply

Marsh Posté le 02-12-2011 à 07:45:11    

Note juste que dans  
 
:%s/\*.*$/&\*/
 
si l'étoile n'est pas au début, elle sera aussi mise à la fin, ce que tu ne veux pas forcément. En ajoutant ^ au début tu t'assures qu'elle n'est déplacée que si elle est en première position


---------------
Topic Couture Homme
Reply

Marsh Posté le 02-12-2011 à 07:46:17    

Ok merci. En fait dans mon cas, s'il y en a une, c'est au début mais tu as raison, c'est mieux de préciser.

Reply

Marsh Posté le 03-04-2012 à 05:21:53    

Une config sympa pour Vim: https://github.com/carlhuda/janus
 
Surtout pour les extensions CtrlP, Fugitive, NerdTREE, Supertab et Tagbar

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed