Quelle est la commande (ou raccourci) pour déplacer une ligne vers le haut ou le bas dans vim? Mon flux de travail actuel consiste à tirer (copier) la ligne et à supprimer cette ligne et à mettre (coller) cette ligne.
Quelle est la commande (ou raccourci) pour déplacer une ligne vers le haut ou le bas dans vim? Mon flux de travail actuel consiste à tirer (copier) la ligne et à supprimer cette ligne et à mettre (coller) cette ligne.
Réponses:
Tout d'abord, vous n'avez pas besoin de tirer et de supprimer; ce dernier mettra également le contenu supprimé dans le registre (par défaut ou spécifié). Par conséquent, ddp
/ ddkP
sont des commandes courantes pour déplacer une ligne d’une ligne vers le bas / haut.
Alternativement, vous pouvez utiliser la :move
commande, ie :move +1
/ :move -2
; cela n'empiète pas sur le registre et vous pouvez également déplacer des plages entières. Vous pouvez facilement définir des mappages de touches pour raccourcir cela.
Si vous (vient et souvent confort supplémentaire avec eux) pas l' esprit plugins, tant Tim Pope plug - in intact et mon LineJuggler plug - in fournissent ]e
/ [e
correspondances pour déplacer les lignes (et plusieurs autres, Tim pour une variété d'utilisations, la mine concentre sur le traitement lignes)).
Le plus simple est: :m+
ou :m-2
qui est l’abréviation de :move
Ingo suggérée.
Ou utilisez le mode visuel ( V) en coupant la ligne ( d/ x) puis collez-la ( p- sous le curseur, Pau - dessus du curseur) après avoir déplacé votre curseur à la bonne place avant de le coller (donc en résumé, il s'agit de Vxp/ Vdp).
Lorsque vous déplacez plusieurs lignes en mode visuel, vous devez utiliser :m '>+1
(déplacer d’une ligne vers le bas) ou :m '<-2
(déplacer d’une ligne vers le haut).
Voici un exemple de mappage utile ( Shift+ ↑/ Shift+↓):
nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>
qui est similaire à Sublime Text ( Win / OSX ).
Voici quelques suggestions sur vim wikia :
nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv
En mode normal ou en mode insertion, appuyez sur Alt-j pour déplacer la ligne actuelle vers le bas ou appuyez sur Alt-k pour déplacer la ligne actuelle.
Après avoir sélectionné visuellement un bloc de lignes (par exemple, en appuyant sur V puis en déplaçant le curseur vers le bas), appuyez sur Alt-j pour déplacer tout le bloc vers le bas ou appuyez sur Alt-k pour le déplacer.
Voir également:
Si je veux échanger une ligne avec la ligne ci-dessus, je fais habituellement ce qui suit
ddkP
Explication
ddp
FWIW, voici ce que j'ai utilisé pendant des années. Il déplace la ligne actuelle de haut en bas en mode normal ou la sélection en mode visuel, tout en ajustant l'indentation automatiquement.
nnoremap ,<Up> :<C-u>silent! move-2<CR>==
nnoremap ,<Down> :<C-u>silent! move+<CR>==
xnoremap ,<Up> :<C-u>silent! '<,'>move-2<CR>gv=gv
xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv
ddkP
déplacer vers le bas est plus facile:ddp
.