Por que você também iria gostar de utilizar Vim

IDEs e editores de textos estão entre os grandes motivadores de Guerras Santas entre desenvolvedores. Não vou falar que você deve user um ou o outro. Produtividade é muito subjetivo e pessoal, não existem regras que torna algo produtivo ou não, tem quem goste de trabalhar ouvindo música, tem quem goste de usar bermuda, e por ai vai.

Vou apenas dizer o por que eu gosto de utilizar o Vim, e me sinto mais produtivo, e o que você ganharia se utilizasse também.

Como os outros editores funcionam

Sublime, TextMate e Atom, todos possuem uma filosofia que é baseada no Emacs: extensibilidade. Existem comandos para copiar, colar, selecionar texto e por ai vai. A grande vantagem é que os comandos que são utilizados nestes editores são os que você já está acostumado a usar no sistema operacional, ctrl+c, ctrl+v, etc. Mas se isso fosse suficiente nenhuma IDE seria necessária.

A grande sensação dos editores avançados e das IDES é que você pode criar os seus próprios comandos, e distribuí-los também! No Sublime eu posso utilizar um plugin para indentar um código, comentar linhas ou blocos de código, etc.

Como o Vim funciona

Já no Vim, a grande desvantagem é que os comandos básicos do SO não funcionam, então nada que pra você faz sentido vai ser útil. Qual o sentido de digitar :w pra salvar um arquivo? Bem, qual o sentido de ctrl+s pra salvar um arquivo? Nenhum, mas estamos acostumados a utilizar a última opção, então ela faz mais sentido.

Mas, de novo, o básico não é suficiente. Precisamos criar comandos próprios pra agilizar tarefas, e é ai que eu vejo a ideia de composição do Vim brilhar. Os comandos do vim funcionam como pequenos comandos gerais que podem ser combinados para criar novas tarefas, bem semelhante ao conceito Unix.

Composição vs Extensão

Vamos supor que queremos criar maneiras mais interessantes de apagar caracteres, por exemplo, apagar uma linha toda, uma palavra toda ou até um determinado caractere. Poderíamos criar uma extensão do Sublime que faria ctrl+shift+d para apagar a linha, ctrl+shift+w pra apagar a palavra, etc. Perceba que não existe nenhuma conexão entre apagar uma linha e mover o cursor até o final da linha, ou mesmo entre apagar uma linha e uma palavra.

O Vim possui comandos que movem o cursor para o final da palavra, da linha e até mesmo até um caractere qualquer. Por exemplo, se você digitar w, o curso vai mover até o final da palavra, $ vai té o final da linhas, G até o final do arquivo. Outro comando do vim apaga o texto, basta digitar d e o que você quer apagar. Se quiser apagar até o final de uma palavra, faço dw, se quiser apagar até o final da linha, d$.

E se agora eu quiser selecionar o texto? No Vim também existe um comando para selecionar, basta digitar v. Então vw vai selecionar até o final da palavra. Se for até o final da linha? v$.

Sabendo que t move o cursor até um determinado caractere, por exemplo t+ vai mover o cursor até o caractere +, como posso apagar o código até o próximo caractere +? dt+. Utilizando y podemos copiar para o buffer do Vim, então o que yw faz? Exatamente o que você está pensando, copia até o final da palavra. E yt+ ? y$ ?

Bom, já deu pra entender o que eu quero dizer por composição. O funcionamento do editor utiliza o que você já sabe como base, e cada comando ou plugin tira vantagem disso.

Composição + Extensão

Quando saímos do básico é que as coisas ficam mais interessantes. No Vim existe um plugin que permite transformar uma palavra, por exemplo string, em “string” em ‘string’, ou até mesmo em (string). Claro que em outros editores também existem essa possibilidade, mas se quisermos adicionar strings numa linha toda?

Enquanto que seria necessário outra função para fazer isso no Emacs, no Vim basta utilizar o conceito de objetos, que são linhas, palavras, ou qualquer outra coisa que você quiser selecionar, e utilizar o mesmo comando mas com um objeto diferente, como exemplificado acima.

Vim Rocks, Sublime Sucks

Não. Como falei antes, nenhum dos atalhos do SO vai funcionar com Vim. Além disso, não dá pra simplesmente abrir o vim e começar a digitar, precisa entrar no modo de inserção, mas ai os atalhos não funciona, você precisa voltar pro modo normal e… tá, desisto, não é pra mim.

Existe uma grande barreira inicial para abordar o Vim. Mas, uma vez que você se acostuma aos modos e aprende os comandos básicos, é bem intuitivo utilizar o editor.

Tá, quero aprender, por onde começo?

Sugiro começar com o básico do vim, esse jogo http://vim-adventures.com vai te mostrar como navegar.

Depois que tiver mais acostumado com as teclas básicas, é hora de aprender sobre os plugins do Vim. A maneira mais simples que achei, quando estava começando, foi utilizar o Vim de alguém. O que eu usei por mais tempo foi o Janus https://github.com/carlhuda/janus. Ele já vem com vários plugins instalados e o README mostra como utilizá-los.

Outra opção é criar sua própria configuração, pra isso recomendo o Pathogen https://github.com/tpope/vim-pathogen que é um gerenciar de plugins.

O site vimawesome.com lista os plugins mais utilizados e como instalá-los.

Referências

https://medium.com/@mkozlows/why-atom-cant-replace-vim-433852f4b4d1

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s