Je fais C-a
C-k
C-k
pour tuer toute la ligne point est allumé.
Si je veux copier la ligne au lieu de la tuer, je peux appuyer C-/
C-/
juste après avoir tapé la séquence ci-dessus.
Alternativement, je peux faire C-a
C-SPC
C-n
M-w
.
Existe-t-il un moyen plus rapide de supprimer ou de copier le point de ligne entier?
copy-paste
editing
itsjeyd
la source
la source
kill-whole-line
. :)evil-mode
. Apprenez les commandes de Vim, vous ne le regretterez pas!Réponses:
Vous pouvez utiliser
kill-whole-line
pour tuer toute la ligne point est allumé. La position du point n'a pas d'importance. Cette commande est liée à C-S-DELpar défaut.Vous pouvez également demander
kill-line
(lié à C-k) de tuer la ligne entière en définissant la variablekill-whole-line
sur unenil
valeur autre que:Notez que le point doit être au début de la ligne pour que cela fonctionne.
Ensuite, il y a ces deux joyaux (via emacs-fu ):
Avec ceux-ci en place, vous pouvez supprimer ou copier le point de la ligne en appuyant sur une seule touche :
Notez que s'il y a une région active
kill-region
etkill-ring-save
continuera à faire ce qu'elle fait normalement: la tuer ou la copier.Portage
slick-cut
etslick-copy
nouveau système de conseilEmacs 24.4 introduit un nouveau système de conseil . Bien que cela
defadvice
fonctionne toujours , il est possible qu’il devienne obsolète en faveur du nouveau système dans les futures versions d’Emacs. Pour vous y préparer, vous pouvez utiliser les versions mises à jour deslick-cut
etslick-copy
:la source
kill-region
etkill-ring-save
fonctionnent toujours même lorsque la région n’est pas "active". Cela annulera ce comportement. J'utilise ce comportement de temps en temps, mais si vous n'êtes pas habitué à les utiliser de cette façon, vous ne remarquerez probablement pas la différence.kill-region
etc est utilisable / utile quandmark-active
estnil
.C-SPC
deux fois pour activer puis désactiver la marque. Déplacez le curseur ailleurs dans le fichier et exécutezkill-region
-le. La région entre le point et la marque sera supprimée, même si la marque n'est pas active. Quelques exemples de commandes qui définissent (mais n'activent pas) la marque sontyank
etisearch
. Après avoir exécuté ces commandes de tri, je sais où se trouve la marque, même si elle n’est pas active, et de nombreuses commandes (y compriskill-region
) me permettent d’utiliser la marque sans l’activer explicitement.La solution que j'ai trouvée est d'utiliser des arguments de préfixe.
Supprimer une demi-ligne est pour moi une fonctionnalité utile, mais je souhaite également un moyen plus simple de supprimer des lignes entières. J'ai donc fait en sorte que
kill-line
tout assassine en vue quand on lui donne un argument préfixe.Avec cette petite macro,
C-k
tue toujours du point, maisC-3 C-k
avale trois lignes entières. En prime, nous obtenons lekill-whole-line
comportement en agissantC-1 C-k
.la source
kill-ring-save
n'accepte pas les arguments de préfixe ...kill-visual-line
est lié àC-k
. Je le réparerai. Merci encore.Il y a un paquetage appelé
whole-line-or-region
qui conseille diverses commandes intégrées pour qu'elles agissent sur la ligne en cours si aucune région n'est active. AinsiM-w
, la ligne en coursC-w
sera copiée et supprimée, par exemple. Je l'utilise depuis des années et je le trouve indispensable.De plus, ce paquetage fait en sorte qu'un préfixe numérique indique le nombre de lignes sur lesquelles agir, ainsi
M-2 M-w
copie deux lignes. Les autres réponses ici ne fournissent pas cette fonctionnalité pratique.J'ai pris en charge la maintenance du paquet sur mon compte github lorsque l'auteur a cessé de le maintenir et est devenu insensible.
whole-line-or-region
fournit également des fonctionnalités pour ajouter ce comportement à d'autres commandes, si vous en avez besoin.la source
Ce n'est pas une réponse pour les Emacs orthodoxes. Si, toutefois, vous êtes prêt à blasphémer avec
evil
l'édition modale, vous pouvez:dd
pour tuer lignecc
pour la ligne de copieLes deux peuvent être préfixés par le nombre de lignes à supprimer / copier (par exemple,
4cc
copiera les 4 lignes suivantes).la source
Outre @itsjeyd answer, puis-je suggérer ces deux fonctions?
Ensuite, les définitions clés (vous voudrez probablement les adapter):
(global-set-key (kbd "<f2>") 'xah-cut-line-or-region) ; cut
(global-set-key (kbd "<f3>") 'xah-copy-line-or-region) ; copy
(global-set-key (kbd "<f4>") 'yank) ; paste
Gracieuseté de ErgoEmacs
la source
En guise de prolongement de la réponse de @ itsjeyd ci-dessus, j'ai les éléments suivants. (La logique pourrait probablement être nettoyé un peu et je vais quand je port au nouveau système de conseils, je vais probablement l' étendre à d' étendre à
sexp
/paragraph
si elle est répétée à nouveau).Une initiale
C-w
/M-w
ne saisira que le mot au point, tandis que l'appelant une seconde fois saisira toute la ligne.la source
Puisque vous voulez le faire avec un minimum de touches, vous pouvez utiliser l'excellent paquet accords-clés de David Andersson . Un "accord de touche" est deux touches enfoncées simultanément, ou une seule touche enfoncée deux fois.
Vous pouvez lier n'importe quel accord clé à ces fonctions.
la source
Une méthode moins ad hoc consiste à définir le type de
mark-whole-line
commande par défaut pour Emacs.Ensuite,
C-2 C-w
fera le travail.Cela facilite également les choses, comme commenter toute la ligne actuelle.
la source
Ceci est une modification de la réponse par itsjeyd - actuellement la réponse la plus votée et celle que j'ai utilisée pendant des années. Cependant, il y a des problèmes: la version conseillée de échouait
kill-ring-save
parfois parce que la marque n'était pas définie (généralement dans un nouveau tampon), et même si cela fonctionnait, le curseur faisait une danse étrange après l'utilisation de la fonction pour copier une seule ligne . Après quelques recherches, je me suis rendu compte que cela se produisait parce que leskill-ring-save
appelsindicate-copied-region
après que celui-ci ait fait son travail, mais comme les points et marques ne correspondent pas à la région copiée,indicate-copied-region
marquent la mauvaise région.Assez dit. Voici une solution qui remédie à cela:
Il n'y a rien de mal avec les conseils de itsjeyd
kill-region
. En voici une variante, stylistiquement plus cohérente avec ce qui précède:Notez que si
transient-mark-mode
n’est pas activé, ces conseils ne font rien.la source
whole-line-or-region
plutôt d' utiliser le package . voir la réponse de @sanityinc.J'utilise un package appelé composable.el . La chose intéressante à propos du paquet est qu'il modifie Mw et Cw (commandes de copie et de suppression) pour qu'il soit plus semblable à Vim, mais accepte plutôt les commandes traditionnelles emacs. Donc
C-w l
tue toute une ligne. Mais vous pouvez aussi faire des choses commeC-w M->
tuer la fin du fichier. Les deux commandes agissent normalement lors du marquage d'une région.la source