No internet connection
  1. Home
  2. Dúvidas Gerais

Key bindings: alterando o "cw TAB TAB" no vs code

Por Thiago Nebuloni @thiagonebuloni
    2022-12-21 12:57:35.593Z

    Bom dia pessoal!

    Desde o início do curso quando o professor Hugo nos mostrou o atalho "cw TAB TAB" para usar o Console.WriteLine eu fiquei encanado com uma coisa:

    Estou usando o vs code no Linux, e talvez por isso alguns atalhos e features são diferentes do Visual Studio. Toda vez que eu usava o "cw TAB TAB" ele autocompletava para

    System.Console.WriteLine("");
    

    E mesmo que isso não atrapalhe em nada no funcionamento do código, me incomodava esse "System." sempre aparecendo. Fora que deixava o código mais extenso.

    Hoje descobri uma forma de alterar isso e também de criar novos key bindings para facilitar o dia a dia. Não é nada essencial e podemos viver sem isso, mas também pode ajudar bastante.

    Segue o passo a passo:

    Com o vs code aberto aperte:

    Ctrl + Shift + P
    

    Isso abrirá uma barra de pesquisa no topo da IDE.

    Então digite snippets e selecione Configure User Snippets

    Digite csharp e aperte Enter

    Isso vai abrir o csharpe.json que é o documento que vamos alterar para configurar as key bindings.

    O próprio documento já vem com a explicação e um exemplo comentado. Basta seguir a mesma estrutura e criar as suas key bindings:

    A estrutura é a seguinte:

    "Print to Console": {    // nome do atalho
        "prefix": "cw",     // Aqui você coloca o atalho, nesse caso o cw
        "body": [
            "Console.WriteLine(\"\");",    // Coloque  código que quer que seja preenchido *.   
            "$1"    // aqui o número após o $ dita quantas vezes você precisa apertar o TAB.
        ],
        "description": "Descrição mais detalhada"
      }
    }
    
    • *Nesse caso precisei usar \ (contrabarra) para a IDE entender que as aspas dentro do código não podem ser interpretadas, e sim simplesmente apresentar elas no final. Isso porque como a estrutura do json já usa aspas para separar os valores, ele entenderia que as próximas aspas seriam para terminar o valor a ser inserido. Assim como quando queremos inserir aspas em uma mensagem final usamos
    Console.WriteLine("Assim colocamos \"aspas duplas\" dentro de uma string");
    

    Resultado:

    Assim colocamos "aspas duplas" dentro de uma string
    

    E é isso. Espero que ajude a facilitar o dia a dia de alguém mais.


    Abaixo um exemplo para criar um for genérico:

    • 13 respostas
    1. André Filipe @andresantos
        2022-12-21 13:15:18.794Z

        Costumo escrever códigos sem autocomplemento ou combinações de teclas. É uma boa prática quando ainda não conhecemos todas as palavras reservadas, métodos, enfim... a sintaxe da linguagem. Assim, dá pra escrever o código até em um bloco de notas! Porém, passada essa fase, as key bindings são bem-vindas para ganharmos tempo. Muito boa publicação.

        1. TThiago Nebuloni @thiagonebuloni
            2022-12-21 14:34:55.567Z

            Concordo totalmente! Obrigado!

          • Em resposta athiagonebuloni:
            Marco Sousa @marcosousa
              2022-12-21 13:47:52.171Z

              Extrair da IDE o máximo é muito bom para aumentar a produtividade do código. Mas eu recomendo, pelo menos no início, escrever todas as linhas sem qualquer complementação. Vai te ajudar a saber tudo sem precisar de "ajuda".

              1. TThiago Nebuloni @thiagonebuloni
                  2022-12-21 14:35:11.052Z

                  Tá certinho!

                • Em resposta athiagonebuloni:
                  Larissa Leal @LariLeal
                    2022-12-21 14:08:53.705Z

                    Esse foi um dos motivos que me fez decidir colocar windows para fazer esse programa... nunca entendi bem essa questão do Visual Studio não ser o melhor para Linux e precisar configurar 1001 coisas. Vc já tinha usado o VS no Linux antes? Agora que já estamos desenvolvendo varias tarefas, vc acha que é tranquilo? Ainda tenho vontade de voltar com o Linux

                    1. TThiago Nebuloni @thiagonebuloni
                        2022-12-21 14:42:09.599Z

                        Eu mantive o Windows no pc pensando justamente isso, mas não precisei dele em nenhum momento até agora.

                        Pra fazer a instalação do dotnet no Linux foi um pouquinho complexo por causa das versões e dos pacotes corretos, mas depois que consegui instalar tudo não precisei mais mexer. Inclusive ele atualizou tranquilamente através do apt.

                        No geral não tive nenhum problema complexo por causa de Linux. Já faz algum tempo que as distribuições de Linux estão bem completas e com bastante suporte para todo tipo de tecnologia e hardware. Quando usei as primeiras vezes era difícil porque dificilmente reconhecia o hardware, modem, etc. E sem internet e celular tinha que ficar tentando resolver aos poucos, e indo em fontes físicas kkkkk.

                        Agora só vou poder falar com certeza quando chegarmos no final do programa. Segundo o Professor Hugo, quando formos integrar tudo, front e back, o Visual Studio seria essencial. Mas sempre tem como dar a volta nos problemas que aparecerem.

                        Cenas dos próximos capítulos kkkk

                        *[edit] O único problema que tive foi pra rodar o programa do Banco de um colega, porque ele fechou o arquivo em .exe, e não rodou no Wine dizendo que faltavam as bibliotecas do dotnet. Mas ainda não fui pesquisar sobre isso.

                        1. Larissa Leal @LariLeal
                            2022-12-21 16:07:43.182Z

                            Entendi, imagino que nos próximos anos não vamos mais ter problemas com isso, eu espero hehe
                            Essa questão de faltar bibliotecas é o que me parece mais complicado, o que seria esse Wine que vc citou?

                            1. TThiago Nebuloni @thiagonebuloni
                                2022-12-21 17:12:08.466Z

                                Pelo avanço que as distros estão tendo parece que não vamos ter problemas, não.

                                O Wine é um aplicativo que torna possível rodar programas feitos para Windows no Linux. Roda por exemplo os programas da Adobe. Mas não é infalível.
                                É bem interessante, e uma ótima solução para quem usa Linux mas precisa de programas específicos que ainda não existem similares no Linux.

                                Parece que estão em processo de fazer o mesmo com o MacOs também.

                                Aqui a descrição dele:

                                https://pt.wikipedia.org/wiki/Wine

                          • Em resposta athiagonebuloni:
                            Lucas Ferreira @lksferreira
                              2022-12-21 16:40:10.429Z

                              Top de mais maninho...

                              No caso do meu realizei umas configurações a mais:

                              "Print to console": {
                                     "prefix": "cw", //O snippet que vou utilizar
                              		"body": [
                                                     // O primeiro $ é porque utilizo muito a interpolação.
                                                     // O $1 é para o cursor do mouse ficar preparado nessa posição para digitação
                              
                              			"Console.WriteLine($\"$1\");", 
                              
                                                       //Removi o $1 para não ficar opção da digitação no tab.
                              	],
                              	"description": "Console.WriteLine - Imprime o argumento no Console e pula para próxima linha"
                              	}
                              

                              O System nunca me incomodou, mas agora meu irmão... produtividade aumentou 20%

                              Inté a proxima.

                              1. TThiago Nebuloni @thiagonebuloni
                                  2022-12-21 21:09:42.352Z

                                  Fui testar a mesma coisa que você fez, mas sem tirar o $1 do final e achei um bug no vd]s code kkkkk

                                  Ele duplicou o cursor!!!! 🤣

                                  Não dá pra ver no print mas ele fica com dois cursores, um dentro do for e outro fora.

                                  Vou mandar pra Microsoft 😅

                                  1. Em resposta alksferreira:
                                    TThiago Nebuloni @thiagonebuloni
                                      2022-12-21 17:01:27.955Z

                                      kkkk sempre levando pro próximo nível. Muito bom!

                                    • Em resposta athiagonebuloni:
                                      Mauricio Santana @mauriciosm
                                        2022-12-22 06:34:51.424Z

                                        Boa, Thiago! vc descobrindo algo novo!
                                        Acabei de fazer duas alterações aqui para ir algo mais rápido e deu certo!

                                        1. TThiago Nebuloni @thiagonebuloni
                                            2022-12-22 10:12:44.780Z

                                            Que bom que ajudou Maurício!