L'éditeur de texte Vi - Divers - Programmation
Marsh Posté le 05-08-2005 à 10:20:02
Salut, bonne initiative
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
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 ...
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
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.
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 : |
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 et puis bon j'ai balancé ce topic surtout parcequ'il y a un topic emacs et pas vi dés que j'en trouve le temps j'essayerai d'en faire un beau truc plus complet
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.
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 :
|
pour activer le script:
vim -s coupler.scr fichiera.txt fichierb.txt
Marsh Posté le 05-08-2005 à 13:14:18
sircam a écrit : Tu fais ce que tu veux, c'est vendredi. |
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
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.
Marsh Posté le 05-08-2005 à 13:22:11
lorill a écrit : et yzis, vous avez essayé ? |
C'est un topic VI ici, Monsieur.
jEdit ?
Marsh Posté le 05-08-2005 à 13:42:31
sircam a écrit : C'est un topic VI ici, Monsieur. |
hum
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.
Marsh Posté le 05-08-2005 à 13:44:10
[serious mode]
Jamais utilisé. Bloqué sur vi. Installe-le et teste, non ?
[/serious mode]
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.
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 !
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
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 !
Marsh Posté le 06-08-2005 à 22:43:55
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
(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)
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.
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?
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/
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/
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
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.
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
Marsh Posté le 04-08-2005 à 20:47:45
Bonjour tout le monde
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