2011-01-11 15 views
6

¿Hay alguna manera de copiar/arrastrar toda una forma en Slime/Emacs?Copiar/Yank toda la forma Lisp en Slime

Por ejemplo, si tengo la siguiente función:

(myfunc (lst) 
    (myotherfunc lst)) 

me gustaría dar un tirón/copia:

(myotherfunc lst) 

mediante la emisión de un atajo de teclado cuando mi cursor se encuentra en la apertura o paréntesis de cierre para esa forma (en el punto donde Slime/Emacs hace la coincidencia de paréntesis).

Respuesta

9

En mi Emacs, la función kill-sexp está limitada a C-M-k. Es decir, suponiendo que el punto está justo antes del delimitador de apertura de una expresión balanceada , presione Control, Meta yk al mismo tiempo.

Este mismo comando funciona en varios modos distintos de Lisp, como eliminar bloqueos delimitados por corsé en un modo de estilo C, aunque el comando kill-sexp no puede vincularse a las mismas teclas.

11
  • CM-SPC (mark-sexp) para poner la marca al final de la sexp, a continuación, copiar/tirón

  • CMf (forward-sexp) y CMb (backward-sexp) son útiles para mover hacia adelante y hacia atrás sobre una expresión balanceada

http://www.emacswiki.org/emacs/ParenthesisMatching#toc2

+0

+1 Sí, esos son los enlaces de utilidad, gracias. – Joel

3

El modo emacs minor ParEdit hace esto en el modo normal mata 'C-k' de forma predeterminada. Sin duda lo recomendaría a cualquier usuario de emacs + slime.

+0

También vale la pena mencionar aquí como un recordatorio para cualquier persona que no conozca C-y volverá a insertar la línea en el búfer en la ubicación actual del cursor. –

0

Puede utilizar lispy y luego puede presionar n que corre lispy-new-copy para copiar

(myotherfunc lst) 
Cuestiones relacionadas