Quel est l'équivalent emacs de vi dd? Je veux supprimer la ligne actuelle. Essayé CTRL + k mais il supprime seulement de position actuelle.Comment puis-je supprimer la ligne actuelle dans Emacs?
Répondre
C-a # Go to beginning of line
C-k # Kill line from current point
Il y a aussi
C-S-backspace # Ctrl-Shift-Backspace
qui invoque M-x kill-whole-line
.
Si vous souhaitez définir une clé globale différente de liaison, vous mettriez cela dans ~/.emacs:
(global-set-key "\C-cd" 'kill-whole-line) # Sets `C-c d` to `M-x kill-whole-line`
Si vous souhaitez supprimer un certain nombre de lignes entières, vous peut préfixer la commande avec un numéro:
C-u 5 C-S-backspace # deletes 5 whole lines
M-5 C-S-backspace # deletes 5 whole lines
C-u C-S-backspace # delete 4 whole lines. C-u without a number defaults to 4
C-u -5 C-S-backspace # deletes previous 5 whole lines
M--5 C-S-backspace # deletes previous 5 whole lines
Parfois, je trouve aussi C-x z
utile:
C-S-backspace # delete 1 whole line
C-x z # repeat last command
z # repeat last command again.
# Press z as many times as you wish.
# Any other key acts normally, and ends the repeat command.
Si vous ne voulez pas tuer la ligne (ce qui le mettrait dans le presse-papiers du système d'exploitation et de tuer anneau) mais simplement le supprimer:
(defun delete-current-line()
"Delete (not kill) the current line."
(interactive)
(save-excursion
(delete-region
(progn (forward-visible-line 0) (point))
(progn (forward-visible-line 1) (point)))))
Le moyen le plus rapide/plus simple pour supprimer (kill) un ligne complète, de tout point sur la ligne, sans rien sélectionner, est:
C-w ; kill-region
Il est polyvalent à supprimer tout ce qui est sélectionné, ou une ligne par défaut si rien est sélectionné.
Compte tenu de la question, vous êtes probablement aussi intéressé à reproduire "Yank" Vim, yy
(bien que dans le langage Emacs un "coup sec" est de prêter à confusion Vim "put", p
). C'est:
M-w ; kill-ring-save
Belle et congruent, et assez facile à retenir. Même légèrement similaire à i_CTRL-W
de Vim.
Une fois que vous avez mis quelque chose dans le ring de tuer avec soit de ce qui précède, vous aurez envie probablement « Yank » (pâte) il:
M-y ; yank-pop
(Notez que CS-backspace peut ne fonctionne pas dans le terminal Emacs.)
Cela fonctionne. Y at-il un moyen de le faire en utilisant une commande? Devrai-je créer une liaison de clé personnalisée pour cela? –
Je ne connaissais pas 'C-x z', c'est vraiment cool. Et réponse belle et précise btw. – slu
Il y a aussi 'C-k C-k' qui fonctionne un peu comme un' d $ S-j' dans vim, mais cela peut supprimer des lignes assez bien. –