2010-09-30 15 views
19

¿Visual Studio 2010 no tiene un atajo de teclado "unir líneas"?¿Visual Studio 2010 no tiene un atajo de teclado para "unir líneas"?

EDITAR - Eso es cuando la línea X en cualquier lugar, me golpeó una tecla de acceso una vez, y luego la línea X + 1 se une a la línea X (eliminando CR entre ellos por así decirlo)

+0

No voy a hacer el trabajo de campo por ti, pero podrías ver cómo VsVim implementa el operador 'J' para unir líneas. –

+0

¿Qué quieres decir? Eliminar al principio/final de las líneas unirá dos líneas. ¿Qué estás pensando en hacer? –

+0

Eso es cuando en la línea X en cualquier lugar, presiono una tecla rápida una vez, y luego la línea X + 1 se une a la línea X (eliminando CR entre ellos por así decirlo) – Greg

Respuesta

4

Mientras que yo sepa no es asi.

Sin embargo, puede crear y guardar un nuevo VS macro utilizando el siguiente código:

Sub JoinLines() 
    DTE.ActiveDocument.Selection.EndOfLine() 
    DTE.ExecuteCommand("Edit.Delete") 
    DTE.ActiveDocument.Selection.EndOfLine() 
End Sub 

y assign a keyboard shortcut to it (como CTRL + j)

Este código se unirán a la línea actual con el que está justo debajo.

+0

Creo que quiere unirse a la línea debajo, lo que significa que probablemente puedas eliminar las primeras 2 líneas de la macro. – Gabe

+0

Tienes razón. Gracias. Ahora arreglado. –

+0

Suponiendo que pregunta porque es un usuario de vim, en realidad querrías: EndOfLine, eliminar, insertar un espacio (creo), mover un caracter a la izquierda. –

2

Si desea que la función de actuar como Vim unirse (presionando Shift + J) y luego utilizar esta macro que se une, inserta espacio y lugares cursor después del espacio:

Sub JoinLines() 
    Dim textSelection As TextSelection = DTE.ActiveDocument.Selection 
    With textSelection 
     .EndOfLine() 
     .Insert(" ") 
     .Delete(1) 
    End With 
End Sub 

Sólo asignarlo a algo como Alt + J (como Ctrl + J y Ctrl + Shift + J se toman).

13

utilizo la extensión CodeMaid para ello, se proporciona una Ctrl + MCtrl + J acceso directo para unir las líneas (y algunas otras cosas útiles también)

+0

Lamentablemente no puede usarlo con Visual Studio Express ... – AnAurelian

+0

¡Excelente! Exactamente lo que estaba buscando, gracias. –

0

Prueba el Fin y luego la secuencia de teclas Delete.

Fin se mueve al final de la línea y la tecla Delete elimina la EOL después del cursor.

+0

Esta respuesta ignora el hecho importante de que desea eliminar cualquier espacio en blanco que encabece la segunda línea que se une. Eso es realmente lo que se quiere de un equivalente de Visual Studio de la clave j de Vim. – tpartee

+0

Esto copia los espacios (sangría de la siguiente línea a la línea que estamos uniendo. Por lo tanto, espacios adicionales. –

18

Esto no es exactamente lo que quiere, pero me parece útil, no obstante.

Si está al final de la primera línea, pulse Ctrl +Del para unirse a la siguiente línea y eliminar cualquier espacio en blanco entre ellos.

Aún debe estar al final de la línea, pero esto funcionará en prácticamente todos los editores, sin modificaciones.

0

He estado usando CodeMaid para esto, pero es muy lento con archivos de gran tamaño.Para replicar el comportamiento de CodeMaid con una macro, He combinado soluciones de Ray Vega y javs' en lo siguiente:

Sub JoinLines() 
     DTE.ActiveDocument.Selection.EndOfLine() 
     DTE.ExecuteCommand("Edit.WordDeleteToEnd") 
     DTE.ActiveDocument.Selection.Insert(" ") 
    End Sub 

Nota: Como las macros se han caído en VS2013, estoy usando la extensión de Visual comandante, por lo que la macro realmente se parece más a:

Imports EnvDTE 
Imports EnvDTE80 
Imports Microsoft.VisualBasic 

Public Class C 
    Implements VisualCommanderExt.ICommand 

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run 
    DTE.ActiveDocument.Selection.EndOfLine() 
    DTE.ExecuteCommand("Edit.WordDeleteToEnd") 
    DTE.ActiveDocument.Selection.Insert(" ") 
    End Sub 
End Class 
Cuestiones relacionadas