Lo hago C-a
C-k
C-k
para matar todo el punto de línea está encendido.
Si quiero copiar la línea en lugar de matarla, puedo presionar C-/
C-/
justo después de escribir la secuencia anterior.
Alternativamente, puedo hacer C-a
C-SPC
C-n
M-w
.
¿Hay una forma más rápida de matar o copiar todo el punto de línea?
copy-paste
editing
itsjeyd
fuente
fuente
kill-whole-line
. :)evil-mode
. Aprende los comandos de Vim, ¡no te arrepentirás!Respuestas:
Puede usar
kill-whole-line
para matar todo el punto de línea está activado. La posición del punto no importa. Este comando está vinculado C-S-DELde forma predeterminada.También puede indicar
kill-line
(vinculado a C-k) que elimine toda la línea estableciendo la variablekill-whole-line
en unnil
valor no :Tenga en cuenta que el punto tiene que estar al principio de la línea para que esto funcione.
Luego están estas dos gemas (a través de emacs-fu ):
Con estos en su lugar, puede matar o copiar el punto de línea con solo presionar una tecla :
Tenga en cuenta que si hay una región activa
kill-region
ykill-ring-save
continuará haciendo lo que normalmente hacen: matarla o copiarla.Portabilidad
slick-cut
yslick-copy
nuevo sistema de asesoramientoEmacs 24.4 presenta un nuevo sistema de asesoramiento . Si bien
defadvice
aún funciona , existe la posibilidad de que quede obsoleto a favor del nuevo sistema en futuras versiones de Emacs. Para prepararse para eso, es posible que desee utilizar versiones actualizadas deslick-cut
yslick-copy
:fuente
kill-region
ykill-ring-save
todavía trabajo, incluso cuando la región no es "activo". Esto anulará ese comportamiento. Uso ese comportamiento de vez en cuando, pero si no estás acostumbrado a usarlos de esta manera, entonces probablemente no notarás la diferencia.kill-region
etc., es útil / útil cuando lomark-active
esnil
.C-SPC
dos veces para activar y luego desactivar la marca. Mueva el cursor a otra parte del archivo y ejecútelo,kill-region
y matará la región entre el punto y la marca, aunque la marca no esté activa. Algunos ejemplos de comandos que establecen (pero no activan) la marca sonyank
yisearch
. Después de realizar estos comandos de clasificación, sé dónde está la marca, incluso si no está activa, y muchos comandos (incluidoskill-region
) me permitirán usar la marca sin activarla explícitamente.La solución que he encontrado para mí es usar argumentos de prefijo.
Para mí, matar media línea es una característica útil, pero también quiero una forma más fácil de matar líneas enteras. Así que lo hice para que
kill-line
simplemente asesine todo a la vista cuando se le da un argumento de prefijo.Con esta pequeña macro,
C-k
todavía mata desde el punto, pero seC-3 C-k
traga tres líneas enteras. Como beneficio adicional, obtenemos elkill-whole-line
comportamiento haciendoC-1 C-k
.fuente
kill-ring-save
no acepta argumentos de prefijo ...kill-visual-line
está obligado aC-k
. Lo arreglaré. Gracias de nuevo.Hay un paquete llamado
whole-line-or-region
que aconseja varios comandos integrados para que actúen en la línea actual si no hay una región activa, porM-w
lo que copiará la línea actual y laC-w
matará, por ejemplo. He estado usando el paquete durante años, y lo encuentro indispensable.Además, este paquete hace que un prefijo numérico indique el número de líneas sobre las que actuar, por
M-2 M-w
lo que copiará dos líneas. Las otras respuestas aquí no proporcionan esa práctica funcionalidad.Me hice cargo del mantenimiento del paquete en mi cuenta de github cuando el autor dejó de mantenerlo y dejó de responder.
whole-line-or-region
también proporciona facilidades para agregar este comportamiento a otros comandos, en caso de que lo necesite.fuente
Esta no es una respuesta para los emacs ortodoxos. Sin embargo, si está dispuesto a blasfemar con
evil
la edición modal, puede:dd
para línea de matarcc
para línea de copiaAmbos pueden tener el prefijo por el número de líneas para matar / copiar (por ejemplo,
4cc
copiará las siguientes 4 líneas).fuente
Además de la respuesta de @itsjeyd, ¿puedo sugerir esas dos funciones?
Luego, las definiciones clave (probablemente querrás adaptarlas):
(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
Cortesía de ErgoEmacs.
fuente
Como una extensión de la respuesta de @ itsjeyd anterior, tengo lo siguiente. (La lógica probablemente podría limpiarse un poco y lo haré cuando transfiera al nuevo sistema de consejos, probablemente también lo extienda para extender
sexp
/paragraph
si se repite nuevamente).Un
C-w
/ inicialM-w
tomará solo la palabra en el punto, mientras que llamarla por segunda vez tomará toda la línea.fuente
Como desea hacerlo con un mínimo de pulsaciones de teclas, puede utilizar el excelente paquete de acordes de teclas de David Andersson . Un "acorde de teclas" es dos teclas presionadas simultáneamente, o una sola tecla presionada dos veces.
Puede vincular cualquier acorde clave a esas funciones.
fuente
Una forma menos ad-hoc es definir
mark-whole-line
, para qué Emacs realmente debería tener un comando predeterminado.Entonces
C-2 C-w
hará el trabajo.También facilita las cosas como comentar toda la línea actual.
fuente
Esta es una modificación de la respuesta de itsjeyd, actualmente la respuesta más votada, y la que he usado durante años. Sin embargo, tiene problemas: la versión recomendada de
kill-ring-save
alguna vez fallará porque la marca no está establecida (generalmente en un nuevo búfer), e incluso cuando funcionó, el cursor hizo un baile extraño después del uso de la función para copiar una sola línea . Después de investigar un poco, me di cuenta de que esto sucede porque laskill-ring-save
llamadasindicate-copied-region
después de haber realizado su trabajo, pero como el punto y la marca no coinciden con la región copiada,indicate-copied-region
marcó la región incorrecta.Basta de charla. Aquí hay una solución que soluciona esto:
No hay nada malo con el consejo de itsjeyd sobre
kill-region
. Aquí hay una variante de la misma, estilísticamente más consistente con lo anterior:Tenga en cuenta que si
transient-mark-mode
no está activado, estos consejos no hacen nada.fuente
whole-line-or-region
lugar; mira la respuesta de @sanityinc.Yo uso un paquete llamado composable.el . Lo bueno del paquete es que modifica Mw y Cw (comandos de copiar y matar) para que se parezca más a Vim con el giro que acepta en su lugar los comandos tradicionales de emacs. Entonces
C-w l
mata una línea entera. Pero también puede hacer cosas comoC-w M->
matar el final del archivo. Ambos comandos actúan de manera normal al marcar una región.fuente