# [vim] les copie en console foire ...(resolu)

## Anthyme

Bonjour! 

J'ai un probleme pas vraiment neuf mais qui commence a me les briser ...

J'aimerai savoir pourquoi, lorsque je colle du texte dans vim via une console (comme gnome-terminal)

le texte copier :

```

<ul>

    <li/>toto

    <li/>tata

</ul>

```

ça me donne des truc dans ce style la une fois copier dans vim : 

```

<ul>

    <li/>toto

        <li/>tata

                    </ul>

```

Là sur 4 ligne c'est pas tres génant mais sur  20 ligne l'effet est démultiplié ... une ligne en prend 5 remplis de tabulations ...

Et ca ne me le fait pas dans emacs !!! c'est ça qui m'enerve le plus !

Si vous avez une solution ...

Merci !

----------

## kopp

deux solutions

soit tu utilises 

```
set paste
```

 puis 

```
set nopaste
```

 quand tu as fini de coller, ça te permet de garde rl'auto indentation pour le reste

Sinon dans ton .vimrc tu mets set pastetoggle=<F12> (ou autre touche) et tu appuies sur F12 pour passer en mode copie ou en sortir.

Dernièrement, tu veux enlever l'autoindententation, ce qui est pas pratique pour le reste avec set noai

----------

## Anthyme

ok merci  :Smile: 

----------

## kopp

Mais de rien.

Au passage la recherche "vim indentation" sur le forum français t'aurais donné la réponse. Enfin je dis ça je dis rien.

----------

## truc

j'connaissais pas l'astuce du set past / nopaste, moi je faisais simplement:

```
:set noautoindent
```

 et son copain 

```
:set autoindent
```

j'suis d'accord, ce commentaire ne sert pas à grand chose, si ce n'est à nous conforter dans le fait qu'il existe toujours plein de manière de faire la même chose...  :Smile: 

----------

## SoukoussMan

 *truc wrote:*   

> j'connaissais pas l'astuce du set past / nopaste, moi je faisais simplement:
> 
> ```
> :set noautoindent
> ```
> ...

 

Encore une :

 *Quote:*   

> :set noai

 

 :Smile: 

----------

## Temet

Même avec ces commandes, il me rajoute un espace au début de chaque ligne ... l'utilise kwrite rien qu'à cause de ça quand je dois c/c dans des fichiers de conf....

----------

## netfab

 *Temet wrote:*   

> l'utilise kwrite rien qu'à cause de ça quand je dois c/c dans des fichiers de conf....
> 
> 

 

copié/coupé/collé :

Toutes les opérations se font en mode commande (mode par défaut de vim lors de l'ouverture d'un fichier, sauf si vous avez spécifié un autre mode par défaut dans votre .vimrc)

 vous positionnez le curseur sur la ligne que vous voulez copier/couper

 raccourcis claviers copié :

 yy --> la ligne actuelle vient d'être copiée

 y2y --> 2 lignes viennent d'être copiées, en partant de la ligne actuelle

 y3y --> 3 lignes viennent d'être copiées, en partant de la ligne actuelle

 ...

 raccourcis claviers coupé :

 dd --> la ligne actuelle vient d'être coupée

 d2d --> 2 lignes viennent d'être coupées, en partant de la ligne actuelle

 d3d --> 3 lignes viennent d'être coupées, en partant de la ligne actuelle

 ...

 collage :

 dans le même fichier : positionnez-vous à l'endroit où vous vous coller, appuyez sur p.

 dans un autre fichier (si vous avez coupé, il faut sauvegarder le fichier d'origine avant d'en ouvrir un autre) :

 :sp /chemin/vers/fichier (ou :sp enew pour nouveau fichier)

 p pour coller

 raccourci Ctrl-ww pour passer d'un fichier à l'autre

----------

## kopp

Mais c'est qu'on apprends des choses intéressantes sur vim ici.

Déjà, j'ai toujours cru que dd d2d etc, c'était pour supprimer définitivement, pas pour couper. Du coup je vais pouvoir l'utiliser avec moins de craintes le d15d  dans les gros trucs où j'ai des blocs à supprimer  :Smile: 

----------

## Anthyme

Moi je pensais au copier en dehors du logiciel (comme dans un firefox par exemple pour rajouter des lignes de conf)

hummm je prefere quand même emacs pour ce genre de manipulation... les racourci clavier c'est plus rapide que de taper des commandes...

ctrl + k => coupe jusqu'a la fin de ligne actuel et la met dans un buffer

alt + d => coupe le mot suivant et la met dans un buffer

ctrl + y => colle tout ce qui a été mis dans le buffer

pour les débutants qui aimerai s'y mettre : voici le minimum vital :

ctrl + x , ctrl + s => Enregistrer

ctrl + w => Enregistrer Sous

ctrl + x , ctrl + c => Quitter

ctrl + r => Rechercher

 :Wink: 

----------

## geekounet

 *Anthyme wrote:*   

> hummm je prefere quand même emacs pour ce genre de manipulation... les racourci clavier c'est plus rapide que de taper des commandes...

 

Les équivalents sous vim :

 *Anthyme wrote:*   

> ctrl + k => coupe jusqu'a la fin de ligne actuel et la met dans un buffer

 

d$

 *Anthyme wrote:*   

> alt + d => coupe le mot suivant et la met dans un buffer

 

daw coupe tout le mot sous le curseur (delete a word), dw coupe depuis le curseur jusqu'à la fin du mot, espace suivant compris, de pareil mais sans l'espace suivant.

 *Anthyme wrote:*   

> ctrl + y => colle tout ce qui a été mis dans le buffer

 

p (déjà dit celui là)

Bon et bien sûr, ya énormement de combinaisons comme ça  :Smile: 

EDIT: et donc c'est lequel le plus simple pour taper des commandes hein ?  :Very Happy: 

----------

## Anthyme

nan mais justement moi je soutien le faite qu'un combinaison de touche c bien plus rapide que de tapper des commandes :

je veux deplacer 4 mots :

Je fais 4 fois alt + d, je me deplace  et je fais ctrl + y et c'est fini

Avec vim je doit deja me mettre en mode console : touche inser, ensuite je me de place sur les mots a copier puis je doit taper un certain nom de fois la comande pour couper le mot en suite je me redeplace, il faut que je retape une comande de copie puis ensuite je réapuie sur inser pour me remetre en mode edition.

Meme si il n'y avais eu q'un mot ça aurai été plus rapide avec emacs !

----------

## kopp

Je pense qu'il y a certainement la possibilité de faire d4w ou quelque chose du genres sous vim, pour couper directement les 4 mots, ce qui se révèle même plus rapide que sous Emacs.

Quoi qu'il en soit, si c'est pour troller sur VI Vs EMACS, on a fait un DOW dessus et déjà beaucoup a été dit :

https://forums.gentoo.org/viewtopic-t-433303.html

----------

## geekounet

 *Anthyme wrote:*   

> nan mais justement moi je soutien le faite qu'un combinaison de touche c bien plus rapide que de tapper des commandes :
> 
> je veux deplacer 4 mots :
> 
> Je fais 4 fois alt + d, je me deplace  et je fais ctrl + y et c'est fini
> ...

 

ESC, je me déplace sur le premier mot, 4daw, je me redéplace et p. Je vois ce qu'il y a de plus lent  :Smile: 

----------

## truc

kiorky m'avait filé ce lien, c'est une vraie mine d'information ce truc (le lien..):

http://truth.sk/vim/vimbook-OPL.pdf

quelque chose d'un peu plus concentré:

http://www.faqs.org/docs/Linux-HOWTO/Vim-HOWTO.html#vim-tutorial

----------

## Anthyme

 *geekounet wrote:*   

> 
> 
> ESC, je me déplace sur le premier mot, 4daw, je me redéplace et p. Je vois ce qu'il y a de plus lent 

 

Ahhh ca fait plaisir de voir un lapsus si révélateur !!  :Wink: 

Escuse moi mais je pense pas que que tapper 4daw au clavier puis entrée ca soit plus rapide que de faire ctrl maintenu puis k,k,k,k sans parler des echap et insert a refaire

Mais bon comme je sent que tu va pas me croire je vais decortiquer avant de me faire bannir par les modos !

VIM : 

- J'apuie sur la touche "echap"

- J'enfonce shift (clavier azerty bien sur)

- J'appuie sur le '4' 

- Je tape 'd' puis 'a' puis 'w'

- Je vais ou je veux

- Je tape p

- Pour continuer l'édition je doit repasser en mode edition donc "inser" ou "i"

EMACS :

- J'enfonce ctrl

- Je fais 4 fois k (et comme c'est la même touche ca va plus vite que de chercher des touches sur le clavier !)

- je vais ou je veux 

- ctrl + y

emacs a une ergonomie plus rapide, c'est assez évidant !

CQFD

----------

## kopp

là on peut pousser les choses plus loin. Sur un azerty, tu as aussi le pavé numérique, donc pas besoin du shift.

Ensuite, taper quatre fois une même touche rapidement, t'es pas sur du nombres (enfin, sauf si on voit les mots disparaitres au fur et à mesure)

Puis, ne plus être en mode edition, ça permet de pas faire de boulette en appuyant sur une mauvaise touche aussi.

Moi je vote, le troll s'arrête ici avant que les modos s'en mêlent :p

----------

## truc

 *Anthyme wrote:*   

> emacs a une ergonomie plus rapide, c'est assez évidant !
> 
> CQFD

 

je suis aussi contre le troll, je ne vois pas non plus l'interet de dire tout ça.. mais bon.. pour avoir utiliser emacs, et maintenant vim, je dirai que tout est question d'habitude.. 

Maintenant, si je dois effacer  les 17 mots, ou mieu, si je dois effacer tous les mots à partir du mot courant jusqu'a qu'a l'ocurrence de 'the' alors, mon choix quand à l'éditeur est très vite fait... 

l'avantage des commandes n'est plus à démontrer, j'préfère rentre un commande que de cliquer sur 4 bouton pour faire la même chose..., mais il en faut pour tout le monde.. donc pourquoi pas! Mais dire que c'est lent montre que tu n'as pas eu besoin de faire des opérations un peu tordues, car pour de tels opérations le gain en temps est indéniable, maintenant, il est vrai que pour effacer 2-3 mots, c'est plus rapide avec un ptit coup de ^K  :Wink: 

EDIT: d'autre part, on ne débat pas comme ça en annonçant une soidisant évidence! c'est de la démagogie! (enfin presque quoi..)

EDIT2: d'autre part  *Quote:*   

> et comme c'est la même touche ca va plus vite que de chercher des touches sur le clavier !

 

et bien non, et c'est probablement d'ailleurs une des raisons pour lesquelles le morse n'est plus vraiment utilisé...

----------

## geekounet

 *truc wrote:*   

> Maintenant, si je dois effacer  les 17 mots, ou mieu, si je dois effacer tous les mots à partir du mot courant jusqu'a qu'a l'ocurrence de 'the' alors, mon choix quand à l'éditeur est très vite fait... 

 

Ha tiens, j'avais pas encore pensé à faire ça, mais j'ai vite trouvé : d/le_mot  :Smile:  c'est formidable comment on peut combiner toutes ces commandes  :Smile:  VI 4EVA !  :Very Happy: 

----------

## truc

c'est encore mieux, tu peux même faire d3/lemot pour effacer jusqu'a la troisième occurence.. donc vala quoi;)

----------

## Anthyme

C'est un peu facile de dire qu'on est contre le troll pour le relancer dans la phrase suivante ...

Moi je peux réenchainner en disant que les commande existe aussi en emacs ... bien que je ne voyent pas l'interet de couper un nombre de mot prédéfini à l'avance, moi je coupe les mots les un apres les autres jusqu'a ce que je n'ai plus envie d'en retirer a cette endroit la (en général on utilise ca au milieu de lignes de codes pour deplacer des morceaux de lignes et on ne s'amuse pas a compter les mots à l'avance)

bon moi je ne suis pas spécialement contre les comparaisons d'éditeurs même si je n'etait pas du tout venu pour ça ... appellez ça troll si vous voullez, mais que ce soit en éditeur en langage ou en top model, y a toujours des difference, des avantage etc ... et je vois pas pourquoi il serait INTERDIT d'en parler ...

Je voullais à la base je voullais juste parler d'une alternative que je trouvais plus rapide pour l'avoir tester (et pourtant j'ai bien plus utiliser vim que emacs, et je trouve deja qu'emacs est bien au dessus) je me suis dis que ça interesserait ceux qui galeraient avec vim... (notement temet)

Apres si même ma demonstration n'arrive pas a vous convaincre, tester le vous même et vons comprendrez vite ...

Bon pour ceux que ca interresse voici un comparatif dedié a l'emacs VS vim :

[url]http://fr.wikipedia.org/wiki/Guerre_d'éditeurs[/url]

moi j'ajouterais plus rien ici car j'ai d'autres trucs a faire ...

@++

----------

## truc

on s'est mal compris *Quote:*   

> je ne vois pas non plus l'interet de dire tout ça.

  ça voulait dire que je savais que ça trollait ici, mais que j'allais quand même  modre à l'hameçon

et *Quote:*   

> maintenant, il est vrai que pour effacer 2-3 mots, c'est plus rapide avec un ptit coup de ^K

  monter bien que j'étais d'accord avec toi sur ce point. C'est jusque que je n'ai pas balancé quelque chose comme;

 *Quote:*   

> emacs a une ergonomie plus rapide

  A la limite sans le plus j'pourrai me dire que c'est ton opinion , mais là.. c'est énorme et bien poilu..  :Laughing: 

voili-voilou..

Sinon, voici quelque chose que je viens d'avoir à faire, à l'instant même du moement précis! c'est pour des trucs comme ça que les guerre d'éditeur sont aussi passionnées!

voila ce que j'ai

```
static const char *BOLD = MAKE_COLOR("00", "01");

static const char *NORM = MAKE_COLOR("00", "00");

static const char *BLUE = MAKE_COLOR("36", "01");

static const char *DKBLUE = MAKE_COLOR("34", "01");

static const char *CYAN = MAKE_COLOR("00", "36");

static const char *GREEN = MAKE_COLOR("32", "01");

static const char *DKGREEN = MAKE_COLOR("00", "32");

static const char *MAGENTA = MAKE_COLOR("00", "35");

static const char *RED = MAKE_COLOR("00", "31");

static const char *BRED = MAKE_COLOR("31", "01");

static const char *YELLOW = MAKE_COLOR("00", "33");

static const char *BYELLOW = MAKE_COLOR("01", "33");

static const char *WHITE = MAKE_COLOR("01", "37");
```

et voici ce que je veux

```
BOLD, NORM, BLUE, DKBLUE, CYAN, GREEN, DKGREEN, MAGENTA, RED, BRED, YELLOW, BYELLOW, WHITE
```

donc voila, j'me mets sur la première ligne première colonne, et bam:

q a (commence d'enregistrer une macro de nom 'a' )

d f *

f ' ' (le caractère espace)

c $ 

, ' '

ESC (retour au mode commande)

J (pour joindre la ligne suivante à la ligne courante)

q (pour arreter d'enregistrer la macro)

à ce stade, j'ai

 *Quote:*   

> BOLD, static const char *NORM = MAKE_COLOR("00", "00");
> 
> static const char *BLUE = MAKE_COLOR("36", "01");
> 
> static const char *DKBLUE = MAKE_COLOR("34", "01");
> ...

 

avec le curseur sur le 's'

donc si je fais @a ça me refait la même operation, mais bon, autant profiter du fait qu'on peut lancer plusieurs fois la commande, donc, donc je fais au hasard 15@a (y'en a surement trop mais bon..) et voila ce que j'ai

```
BOLD, NORM, BLUE, DKBLUE, CYAN, GREEN, DKGREEN, MAGENTA, RED, BRED, YELLOW, BYELLOW, WHITE,
```

 ne me reste plus qu'à effacer la dernière virgule en trop.. 

Bon certes sur ce coup, en vous expliquant tout ça, j'ai reperdu le temps gagné mais bon..  :Smile: 

----------

## geekounet

truc je t'adore \o/  :Very Happy: 

J'aurai encore appris plein de choses aujourd'hui  :Smile: 

----------

## netfab

@truc : sympa, merci  :Very Happy: 

Je suis loin de connaître tout çà, je vais vous expliquer pourquoi, je crois que vous allez rire.

La première chose que j'ai faite en commençant vim, c'est bien sûr : :help

Dès le début de l'aide, il est noté :

 *Quote:*   

> 
> 
> Jump to a subject:  Position the cursor on a tag (e.g. |bars|) and hit CTRL-].
> 
> 

 

Et bien, je ne sais pas pour vous, mais ici, CTRL-] çà ne fait rien du tout.

Alors après, pas évident de naviguer dans l'aide  :Laughing: 

----------

## kopp

Ok truc, c'est rapide. Mais faut reconnaitre que ça semble pas du tout évident. Moi je n'utilise que vim, mais je m'en sers aussi que pour modifier mes fichiers de conf (oui j'ai du mal avec nano, qui ferait pourtant très bien l'affaire pour l'utilisation que j'en fais) et ça me semble plus compliqué que le suédois... et pourtant  :Wink: 

Enfin bref, y a plus facile.

Sur ce, j'ai appris des trucs, c'est cool. ça me rappelle qu'il faut que j'arrete gedit  :Smile: 

----------

## geekounet

 *NetFab wrote:*   

> @truc : sympa, merci 
> 
> Je suis loin de connaître tout çà, je vais vous expliquer pourquoi, je crois que vous allez rire.
> 
> La première chose que j'ai faite en commençant vim, c'est bien sûr : :help
> ...

 

T'oublie pas le AltGR ?

----------

## netfab

mdr, c'est çà. çà parait tellement évident.

Le truc c'est que, inconsciemment je pense, je devais me dire que 3 touches pour sauter dans une rubrique d'aide çà faisait beaucoup.

Je ne trouve pas çà pratique  :Crying or Very sad: 

Vous savez s'il y a moyen de définir un raccourci clavier pour cette fonction ?

----------

## blasserre

 *NetFab wrote:*   

> mdr, c'est çà. çà parait tellement évident.
> 
> Le truc c'est que, inconsciemment je pense, je devais me dire que 3 touches pour sauter dans une rubrique d'aide çà faisait beaucoup.
> 
> Je ne trouve pas çà pratique 
> ...

 

quelle mauvaise foi ! (j'ai failli poster la même réponse  :Laughing:  )

ta réponse est dans :help  :Mr. Green: 

----------

