Archivo de la etiqueta: Visual Studio

¡Las manos sobre el teclado! Algunas teclas rápidas para desengancharos del ratón en VS Studio

¡Hola!

El sábado pasado, tuve el honor de participar en la Dotnet Málaga 2017. Fue un eventazo (no porque yo fuera uno de los ponentes, que conste 😉 ). Fue el evento más grande al sur de España sobre tecnologías Microsoft. Participaron veintiún ponentes, y se ofrecieron quince charlas y dos talleres la mar de interesantes. ¡Y qué narices, que era en mi Málaga! 🙂

En este evento, di una charla sobre teclas rápidas en Visual Studio. Una manera de aumentar nuestra agilidad al programar, sin tener que estar levantando las manos del teclado cada dos por tres.

Este sábado, (aprovechando que tenía la charla aún fresca en la memoria), me colé en la agenda de las 4Sessions de la Fundación Techdencias de la que formo parte, y repetí la charla con algunas mejoras para hacerla algo menos tediosa 🙂 (¡Gracias Carmen y Nacho por las sugerencias!).

El único problema fue que, para intentar aligerar el ambiente y evitar que la gente desconectara demasiado, me dio por intentar hacer un par de trucos de magia, para demostrar que las manos son más rápidas que la vista. Y mirad, sí. Lo que demostré es que mejor voy a seguir dedicándome a programar, porque lo que es hacer magia, no se me da demasiado bien 😉

A parte del estrepitoso fracaso de hacer de trilero y enseñar trucos de cartas, lo cierto es que me lo pasé bien, y espero haber podido demostrar que, con un poco de memoria y práctica, podemos sacar un montón de partido a las potentes características de teclado de Visual Studio.

En realidad, al ser ciego, para mí el ratón es un elemento decorativo, de modo que las teclas rápidas son mi única manera de programar :). No obstante, y para mi fortuna, en este caso, no usar el ratón me supone una mejora, no lo contrario. Os aseguro que si os aprendéis los atajos más comunes, veréis cómo manejáis la herramienta mucho más rápido que si tenéis que estar quitando una mano, buscando los iconos con el ratón y volviendo a vuestro teclado.

En fin, que me voy por las ramas. Para que no me pase como siempre, me líe con otras cosas y al final no publique nada, aprovecho esta noche de domingo cuando nuestro peque duerme para hacer esta entrada en el blog, y poneros las teclas rápidas que expliqué en los dos eventos y que más utilizo en mi día a día con esta fenomenal herramienta que es Visual Studio.

¡Importante! Estos atajos vienen en el esquema “c#2005”. Si utilizáis otro esquema de teclado, todos estos atajos cambiarán. Podéis ver qué esquema está activo desde Tools > Options, pestaña “Keyboard”.

Los atajos están divididos en categorías para que os sea más fácil navegar por ellos.

En la columna de “Acción en VS”, he puesto el comando que ejecuta la acción indicada. Esto os servirá para encontrar dicho comando en las opciones de teclado de Visual Studio, y reasignar o añadir más teclas rápidas a los mismos si queréis.

Los atajos que contienen un asterisco (*), son aquellos que yo me he creado de manera personalizada. Para hacerlo vosotros, haced lo siguiente:

  1. id a las opciones de teclado de VS Studio (Tools / Options.
  2. Marcad la pestaña Keyboard.
  3. buscad el comando para el que queráis añadir la tecla (tenéis el nombre exacto en la columna Acción en VS). Podéis usar el cuadro de búsqueda para ello.
  4. Elegid en qué ventana queréis que ese comando funcione (marcad global si queréis que el atajo tenga efecto en todas las ventanas).
  5. Pulsad la combinación en el cuadro de asignación de atajo de teclado (podéis crear hasta dos combinaciones de teclas que tendréis que pulsar consecutivamente).
  6. Haced click en “Assign” y luego en “OK”.

A partir de ese momento, ya podréis hacer uso de ese atajo para ejecutar el comando.

Y ahora sí, vamos a por las teclas 🙂

¡Este código es un desastre!

¡Yo no he sido, esto ya estaba así cuando llegué!

Acción Atajo Acción en VS Descripción
Ordenar y eliminar usings ctrl+r, ctrl+g ProjectandSolutionContextMenus.Project.PowerCommands.RemoveandSortUsings Ordena los usings alfabéticamente y elimina los no necesarios
Acciones rápidas ctrl+. (punto) View.QuickActions Muestra el menú de opciones rápidas para el elemento actual
Comentar selección Ctrl+k, ctrl+c Edit.CommentSelection Comenta las líneas de código seleccionadas
Descomentar selección ctrl+k, ctrl+u Edit.UncommentSelection Descomenta las líneas seleccionadas
Formatear documento ctrl+e, d Edit.FormatDocument Formatea el documento abierto
Renombrar elemento f2 EditorContextMenus.CodeWindow.Refactor.RefactorRename Renombra un elemento, buscando sus referencias y renombrándolas también
Mover selección línea arriba alt+flecha arriba Edit.MoveSelectedLinesUp Mueve las líneas seleccionadas una línea hacia arriba
Mover selección línea abajo alt+flecha abajo Edit.MoveSelectedLinesDown Mueve las líneas seleccionadas una línea hacia abajo
Borrar línea ctrl+l (*) Edit.LineDelete Elimina la línea actual

¿dónde estoy? ¿dónde estaba? ¡Estoy perdido!

Cuando mi lector de pantallas me lee código, lo hace línea a línea, carácter a carácter o palabra a palabra. Yo no tengo una visión global de una ventana de código. Es por ello que, al menos para mí, es súper importante ser capaz de hacerme una idea global de dónde estoy, y sobre todo, ser capaz de moverme por los distintos elementos del código de forma rápida y no perderme nunca.

Acción Atajo Acción en VS Descripción
Ir a inicio o fin de bloque ctrl+ + (más) (*) Edit.GotoBrace Va al principio o fin del bloque actual
Método anterior ctrl+e,flecha arriba Edit.PreviousMethod Va al método anterior
Método siguiente ctrl+e,flecha abajo Edit.NextMethod Va al siguiente método
Crear marca ctrl+b, t Edit.ToggleBookmark Crea o elimina una marca en el punto seleccionado
Siguiente marca ctrl+b,n Edit.NextBookmark Va a la siguiente marca
Marca anterior ctrl+b,p Edit.PreviousBookmark Va a la marca anterior
Borrar todas las marcas ctrl+b,ctrl+c Edit.ClearBookmarks Elimina todas las marcas
Colapsar / expandir bloques ctrl+m, m Edit.ToggleOutliningExpansion Colapsa o expande el bloque actual
Volver el cursor atrás ctrl+- (guión) View.NavigateBackward Mueve el cursor a la posición anterior

Depurando ando

La depuración en Visual Studio es una de las cosas que más me gustan de esta herramienta. Y cómo no, tiene sus atajos para hacerlo aún más rápido.

Acción Atajo Acción en VS Descripción
Añadir breakpoint f9 Debug.ToggleBreakpoint Coloca o elimina un breakpoint bajo el cursor
Quitar todos los breakpoints ctrl+shift+f9 Debug.DeleteAllBreakpoints Quita todos los breakpoints de la solución.
Lista de breakpoints ctrl+d,b Debug.Breakpoints Muestra la ventana con la lista de los breakpoints de la solución
Breakpoint condicional alt+f9,c EditorContextMenus.CodeWindow.Breakpoint.BreakpointConditions Muestra la ventana para añadir condiciones a un breakpoint
Siguiente paso f10 Debug.StepOver Depura la siguiente instrucción de código
Depurar método f11 Debug.StepInto Depura el método seleccionado, entrando en él.
Salir del método shift+f11 Debug.StepOut Sale del método actual y continúa en el método padre
Detener depuración shift+f5 Debug.StopDebugging Detiene la sesión de depuración
Ejecutar sin depurar ctrl+f5 Debug.StartWithoutDebugging Ejecuta el proyecto de inicio sin depurar
Ventana de locales ctrl+d,l Debug.Locals
Quick watch ctrl+d,q Debug.QuickWatch Añade un "quick watch" de la instrucción seleccionada”
Ejecutar hasta el cursor ctrl+f10 Debug.RunToCursor Ejecuta la aplicación hasta el punto en el que tengamos situado el cursor

Dónde está mi código, matarile rile rile…

En proyectos grandes, es muy difícil recordar dónde están todas las cosas

Acción Atajo Acción en VS Descripción
Encontrar de todo en toda la solución ctrl+t Edit.GoToAll Busca en toda la solución: miembros, tipos, ficheros…
Ir a la línea ctrl+g Edit.GoTo Va a la línea que deseemos dentro del archivo actual
Buscar ctrl+f Edit.Find Busca cualquier texto en el bloque actual, documento actual, documentos abiertos, proyecto o solución
Reemplazar ctrl+h Edit.Replace Reemplaza un texto por otro en el bloque actual, documento actual, documentos abiertos, proyecto o solución,.
Buscar en archivos ctrl+shift+f Edit.FindinFiles Busca en el bloque actual, documento actual, documentos abiertos, proyecto o solución. También permite buscar en un conjunto de carpetas que no tiene porqué estar dentro de nuestros proyectos.
Reemplazar en archivos ctrl+shift+h Edit.ReplaceinFiles Busca en el bloque actual, documento actual, documentos abiertos, proyecto o solución. También permite buscar en un conjunto de carpetas que no tiene porqué estar dentro de nuestros proyectos.
Ir a la definición f12 Edit.GoToDefinition Va a la definición de un miembro
Ir a la declaración ctrl+f12 Edit.GoToDeclaration Navega a la declaración del miembro seleccionado. Si se trata de una interfaz, mostrará una ventana con su/s implementación/es.
Buscar todas las referencias ctrl+k, r Edit.FindAllReferences Encuentra todas las referencias de un miembro

Movernos entre ventanas y pestañas

En nuestro día a día, podemos llegar a acumular gran cantidad de ventanas abiertas en VS Stdio casi sin darnos cuenta. ¿Cómo movernos entre ellas sin tener que levantar las manos del teclado?

Acción Atajo Acción en VS Descripción
Movernos al siguiente documento ctrl+tab Window.NextDocumentWindowNav Navegamos al siguiente documento abierto
Movernos al documento anterior ctrl+shift+tab Window.PreviousDocumentWindowNav Navegamos al anterior documento abierto
Movernos a la siguiente pestaña ctrl+avpag Window.NextTab Movernos entre las pestañas de una ventana de propiedades, por ejemplo, propiedades de un proyecto.
Ir a la ventana de output ctrl+w, o View.Output Nos movemos a la ventana de output.
Navegar a la lista de errores ctrl+w, e View.ErrorList Nos movemos a la lista de errores
Navegar al explorador de solución ctrl+w, s View.SolutionExplorer Nos movemos al explorador de solución.
Navegar a la lista de tareas ctrl+w, ctrl+w View.TaskList Nos movemos a la lista de tareas
Navegar al Team explorer ctrl+º (ord masc) View.TfsTeamExplorer Nos movemos al “team explorer”.
Propiedades del ítem seleccionado alt +enter (no encontrada) Nos movemos a la ventana de propiedades del ítem seleccionado

Los tests, los últimos de la cola

Si tenemos tiempo, si sobran horas, si los astros se alinean… ¡haremos algo de testing! 😛

Acción Atajo Acción en VS Descripción
Ejecutar todos los tests ctrl+r, a TestExplorer.RunAllTests Ejecuta todos los tests descubiertos por el motor de testing
Depurar todos los tests ctrl+r,ctrl+a TestExplorer.DebugAllTests Depura todos los tests descubiertos por el motor de testing
Ejecutar los tests seleccionados ctrl+r, t TestExplorer.RunAllTestsInContext Ejecuta los tests seleccionados
Depurar los tests seleccionados ctrl+r, ctrl + t TestExplorer.DebugAllTestsInContext Depura todos los tests seleccionados.

Otros comandos útiles

Acción Atajo Acción en VS Descripción
Compilar la solución f6 Build.BuildSolution Compila la solución completa.
Compilar proyecto seleccionado shift+f6 Build.BuildSelection Compila el proyecto seleccionado
Guardar documento actual ctrl+s File.SaveSelectedItems Guarda el documento abierto
Guardar todos los documentos abiertos ctrl+shift+s File.SaveAll Guarda todos los documentos abiertos.
Cerrar el documento actual ctrl+f4 Window.CloseDocumentWindow Cierra el documento actualmente abierto

Y vosotros, ¿qué otros atajos utilizáis en vuestro día a día? ¡Dejadlos en los comentarios y los añado aquí, que seguro que se me han pasado unos pocos!

¡Espero que estos atajos os sean útiles… Y recordad, VS Studio 2017 tiene actualmente 3889 comandos asignables a teclado. ¡Aprovechadlo! 🙂

¡Hasta la próxima!

Entrada visitada 273 veces

Diseñar una interfaz contando píxeles con los dedos

Cuando no puedes ver lo que estás diseñando, y además utilizas una tecnología antigua como Windows Forms que no es como WPF, en la que puedes implementar todo con medidas relativas y que no se solapen los controles, tienes que andar contando los píxeles a mano para que esto no ocurra.

Estaba hoy actualizando una aplicación que tiene algunos años, y he acabado hasta las narices de contar con los dedos para ver si había controles que solapaban a otros controles… Así que he acabado haciéndome una extensión para System.Windows.Forms.Control, que me devuelve una cadena indicándome qué solapamientos existen entre los controles hijos de ese control.

Ya sé que para quien me lea, posiblemente tendrá utilidad cero, pero me apetecía compartir las chapuzas que tengo que montar a veces para no acabar con dolor de cabeza 🙂

La extensión es la siguiente:

public static string GetOverlapping(this Control control)
		{
			StringBuilder strbOverlap = new StringBuilder();

			foreach (Control ctl in control.Controls.Cast<Control>().OrderBy(ct => ct.TabIndex))
			{
				int xFrom = ctl.Location.X, xTo = xFrom + ctl.Size.Width;
				int yFrom = ctl.Location.Y, yTo = yFrom + ctl.Size.Height;
				List<Control> controlsOverlapping = control.Controls.Cast<Control>().Where(ct =>
				ct!= ctl &&
				xFrom  < ct.Location.X + ct.Size.Width && ct.Location.X< xTo
				&& yFrom < ct.Location.Y + ct.Size.Height&& ct.Location.Y < yTo)
				.ToList();
				if (controlsOverlapping.Any())
				{
					strbOverlap.AppendLine($"{ctl.Name}  Es solapado por: " +
						$"{String.Join(", ", controlsOverlapping.Select(ct => ct.Name).ToArray())}.");
				}
				if (ctl.Controls.Count > 0)
				{
					strbOverlap.Append(ctl.GetOverlapping());
				}
			}
			return strbOverlap.ToString();
		}
	}

Para los que véis esto os parecerá una chorrada, pero oye, a mí me ha sacado los colores la muy hija de ….
Estaría bien aumentar la funcionalidad para que detecte desbordamientos, y sea capaz de decir en qué esquina se solapan los controles entre sí… Pero por lo pronto, así me vale 😉

¡Espero que os haya hecho gracia la curiosidad!

¡Un saludo!

Entrada visitada 59 veces