J'ai ceci:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
Et je veux obtenir ceci:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Existe-t-il un moyen de le faire rapidement en utilisant des raccourcis clavier?
git config --global core.editor <whatever>
ou l' autre , ou pour beaucoup de choses à la fois (y compris git) en incluantexport EDITOR=<whatever>
dans votre fichier.bashrc
.Réponses:
Pour permuter la ligne actuelle avec la suivante, tapez
ddp
en mode commande.la source
ddp
. Si vous n'êtes pas encore en mode commande, appuyez surEsc
pour passer en mode commande.dd
supprime la ligne courante après l'avoir copiée dans un "registre".p
copie ("met") le contenu du registre dans votre tampon après la ligne courante. De même, vous pouvez échanger deux caractères avecxp
ou deux mots avecdwwP
.dwwP
cela ne fonctionne pas de la même manière si les deux mots sont à la fin d'une ligne? (Et échanger le dernier mot sur une ligne avec le premier mot sur la ligne suivante est encore plus délicat.)dd
supprime la ligne actuelle, vous pouvez ensuite coller la ligne supprimée à l'aide dep
. Il existe une autre façon d'utiliserm
. Avecm
vous pouvez déplacer les lignes autour de ie:m 1
déplacera la ligne courante après la ligne 1:m 0
déplacera la ligne actuelle vers le haut:m $
déplacera la ligne actuelle vers le basDans votre exemple, placez le curseur sur la première ligne et tapez
:m $
Plus d'informations: http://vim.wikia.com/wiki/Moving_lines_up_or_down
la source
Malgré le fait que cette question soit assez ancienne et marquée comme une réponse, j'aimerais étendre la réponse en disant que vous pouvez utiliser des commandes en mode normal, qui ont été fournies par Sven Marnach avec
nnoremap
comme suit:Cela vous permettra de déplacer des lignes avec Ctrl + Upet Ctrl+ Downdans votre fichier. Cependant, cela écrasera le
@"
registre, qui stocke votre dernière chaîne / mot / lettre / etc copié. Donc, en ajoutant "(reg) avantdd
et lesp
commandes, nous pouvons résoudre ce problème:Ici, nous ajoutons
"a
avant de supprimer et coller des commandes pour stocker notre ligne dans le@a
registre, de sorte que votre registre de copie par défaut ne sera pas écrasé. Cependant, il peut écraser le contenu du@a
registre (qui sait, mais vous pouvez l'utiliser pour quelque chose d'important dans votre cas d'utilisation, mais cette étape un peu paranoïaque, vous pouvez l'ignorer si vous le souhaitez), corrigeons cela aussi:(
<silent>
nécessaire pour éviter de faire écho à nos commandes dans la ligne de message en bas.)Nous avons maintenant deux mappages qui nous permettent de déplacer des lignes dans le fichier avec des raccourcis clavier. Vous pouvez redéfinir les boutons, j'utilise Alt+ j/ k, ce qui serait
<A-j>
et<A-k>
pour ces commandes. Cependant, tous les émulateurs de terminal ne prennent pas en charge les mappages de touches Alt AFAIK.la source
Exemple:
avec
:m-2
, interrupteur (ligne actuelle - 2)avec
:m+1
interrupteur (ligne actuelle + 1)Vous pouvez cartographier cela si vous le souhaitez.
la source
Les mappings proposés dans le wikia Vim page sont en fait le meilleur moyen de mapper des combinaisons de touches qui émulent la façon dont Sublime et d'autres éditeurs implémentent cette fonctionnalité.
Cela inclut une action d'indentation après le déplacement, ce qui est également génial (c'est le double égal
==
signe , au cas où vous ne le voudriez pas).Il prend également en charge les modes visuel et d' insertion , de sorte que vous pouvez déplacer des lignes lors de l'édition ou avec des fulblocks.
Je les ai personnellement mappés sur
<D-J>
et<D-K>
sur mon Mac, au lieu de ceux<A-
qui correspondent à la Altclé. De cette façon, j'utilise Cmd+ Shift+ j/ k, ce qui me semble plus naturel du bout des doigts.la source