2009-06-12 9 views
25

Cuando intento pegar un código del navegador a Emacs, se sangra el código automáticamente, ¿hay alguna forma de evitar que Emacs sangre temporalmente como : establecer pegar en vim?¿Algún comando de Emacs como paste-mode en vim?

+5

¿Está pegando en una terminal? Esto no debería suceder si está pegando en la GUI Emacs que obtiene la pasta "directamente"; Cuando estás pegando en la terminal es efectivamente como escribir todos esos caracteres uno por uno. – ShreevatsaR

+1

¿Esto sucede en todos los modos/almacenamientos intermedios? ¿O solo algunos? ¿Has intentado pegar en Emacs cuando comienzas emacs sin tus personalizaciones (ala 'emacs -q')? –

+0

No sabía nada de 'pegar', ¡gracias! – andrewdotn

Respuesta

23

La forma más fácil con emacs24 es:

M-x electric-indent-mode RET 

que desactiva sangría automática.

Pega lo tuyo.

renable

M-x electric-indent-mode RET 

O simplemente M-x UP-Arrow ;-)

+0

Me encantaría poder agregar un gancho para que cuando pegue, esto se deshabilite automáticamente y luego vuelva a activar. ¿Alguien tiene ideas? – ohruunuruus

+0

Creo que podría tener su propia clave vinculando a Cc y llamando a una función que hace esto, llama al pegado desde CUA u otro https://www.emacswiki.org/emacs/CuaMode – Maresh

-1

Usted podría intentar

c-toggle-syntactic-indentation 
+0

c-toggle-syNtactic-indentation – PanCrit

+0

Gracias por leer el tipeo. Fijo. – mamboking

13

interruptor en el búfer *scratch* (o sólo para algunos búfer inexistente, sino que será en el modo fundamental, que no debe hacer ningún autoindentation menos que haya configurado de alguna manera que lo haga), escriba C-SPC para iniciar la región, pegue su texto, escriba C-w para cortarlo dentro de Emacs, vuelva al buffer original, escriba C-y para pegar.

+0

Esta es una buena solución, aunque no * bastante * lo mismo. Por ejemplo, observo que esto todavía da una advertencia para el paréntesis no coincidente, al pegar en el texto (en una instancia de Emacs basada en la terminal) que tiene un emoticón. (':)') Sería bueno tener algún tipo de "modo" (usando ese término muy libremente) que apaga todas esas cosas (porque pueden hacer que el pegado tarde mucho tiempo, si es una gran parte de texto). Aún así, esto se soluciona en algunos aspectos, al menos, y resuelve claramente el problema principal del asker original. – lindes

+0

Esto no funciona para muchas entradas. La razón es que al pegar texto codificado Windows/dos, \ r \ n fuerza la aparición de una pestaña. Cambie el archivo en Windows a terminaciones de línea de Unix si puede, y se detiene – easytiger

+0

Pegar en el búfer de eliminación borra toda la sangría para mí. Me gustaría conservar la sangría que originalmente estaba allí en el texto copiado. La solución que desactiva el modo de sangría eléctrica funciona. – ishmael

3

Una solución rápida para Python es para pegar en un bloque """ ... """.

2

comando tirón prefijado C-uC-y sería un tirón sin sangría. Funciona con Emacs 25.

+0

@Bae contento de que mi comentario haya ayudado, por lo que Hice una respuesta de eso. – 4e6

Cuestiones relacionadas