diff --git a/content/books/uma-licao-de-vim/04-registradores/index.md b/content/books/uma-licao-de-vim/04-registradores/index.md index 100b7bb..15642f9 100644 --- a/content/books/uma-licao-de-vim/04-registradores/index.md +++ b/content/books/uma-licao-de-vim/04-registradores/index.md @@ -1,5 +1,5 @@ +++ -title = "Recortar, Copiar e Colar" +title = "Registradores" date = 2015-12-22 +++ diff --git a/content/books/uma-licao-de-vim/11.01-vimrc/index.md b/content/books/uma-licao-de-vim/11.01-vimrc/index.md index 1c17466..e3227ea 100644 --- a/content/books/uma-licao-de-vim/11.01-vimrc/index.md +++ b/content/books/uma-licao-de-vim/11.01-vimrc/index.md @@ -465,4 +465,4 @@ computador do trabalho). [^9] E porque eu usei `:tabn {número}` ao invés de `{número}gt`? Porque quando eu pesquisei como pular de abas, este foi o primeiro resultado que eu encontrei. -{{ chapters(prev_chapter_link="./11-config", prev_chapter_title="Arquivos de Configuração", next_chapter_link="./11-config", next_chapter_title="Arquivos de Configuração") }} +{{ chapters(prev_chapter_link="./11-config", prev_chapter_title="Arquivos de Configuração", next_chapter_link="./11-02-gvimrc", next_chapter_title="Meu .gvimrc") }} diff --git a/content/books/uma-licao-de-vim/11.02-gvimrc/index.md b/content/books/uma-licao-de-vim/11.02-gvimrc/index.md new file mode 100644 index 0000000..6e24177 --- /dev/null +++ b/content/books/uma-licao-de-vim/11.02-gvimrc/index.md @@ -0,0 +1,108 @@ ++++ +title = "Meu .gvimrc" +date = 2015-12-22 ++++ + +Essa é a parte em que veremos mais do mesmo. + + + +Na parte de configurações, eu falei de dois arquivos, "vimrc" e "gvimrc". Vocês já +viram o que eu fiz com meu vimrc, então acho justo que vejam também o que eu +fiz com o meu gvimrc. + +Para que fique claro, vimrc sempre é lido, não importa qual executável do VIM +você está usando. gvimrc é lido depois do vimrc somente quando você iniciar um +VIM gráfico. + +Como o arquivo é bem menor (já que o grosso da configuração fica no vimrc), +este é o arquivo inteiro que eu estou usando: + +```viml +set guioptions=aegit " basically, all options, except the scrollbar, menu and toolbar +set columns=116 " number of columns (uses most of my screen, in this case) +set cursorline " highlight the line with the cursor +set colorcolumn=+2 " put a marker at textwidth + 2 +set linespace=1 " spread the lines a bit, adding a 1px line above all + +if has('mac') + set gfn=monofur:h15 " My screen size sucks, mkay? + set lines=63 " number of lines, based on my screen size and font +else + set gfn=monofur\ for\ Powerline\ 12 + set lines=54 +endif +``` + +E explicando: + +* `set guioptions=aegit`: Define a aparência do editor em modo gráfico. Eu + prefiro um editor limpo, sem menus, toolbars ou (e isso talvez soe estranho + para alguns), sem barra de rolagem. Em ordem, as opções ativas são: + + `a`: Quando estiver fazendo a seleção com o modo visual, já copia o selecionado + para a área de transferência. No caso de sistemas Unix, isso significa que + selecionar algo com o modo visual é o mesmo que selecionar com o botão da + esquerda (e que pode ser colado diretamente usando o botão do meio). + + `e`: Mostra abas (se estiver configurado para mostrar abas com “showtabline” -- + que eu configurei para mostrar sempre no meu vimrc). + + `g`: Mostra opções do menu desabilitadas. O normal é que opções desabilitadas + sequer apareçam. Esta opção só faz sentido se o menu estiver presente (com a + opção m no "guioptions") que, como você pode perceber, eu não estou usando. + Em alguns sistemas (por exemplo, OS X) o controle do menu não faz sentido + porque o sistema operacional sempre tem um menu ativo. Assim, quando não há + necessidade de menu, esta opção é desnecessária; quando não há escapatória do + menu, pelo menos todas as opções serão visíveis. + + `i`: VIM tem um ícone (sim você pode configurar para o que o VIM não mostre um + ícone em lugar algum). De novo, dependendo do sistema operacional, esta opção + não tem efeito algum porque o próprio sistema adiciona o ícone do launcher. + + `t`: Menus podem ser arrancados (quando possível). Esta é uma funcionalidade + que o GTK+ até a versão 2 tinha, que permitia que os menus fosse + "desconectados" da área de menu, o que facilita bastante na hora de + selecionar colorschemes (e como você pode adicionar um menu a qualquer hora + com `:set guioptions+=m`, o que eu normalmente faço -- ou melhor, fazia -- era + adicionar um grupo de novos colorschemes, ativar o menu, "arrancar" o menu de + colorschemes e sair selecionando opções até achar um colorscheme + interessante). + +* `set columns=116`: Número de colunas da janela do editor. Se a sua tela não + tiver como apresentar 116 colunas (pelo tamanho da fonte e da tela, ou por + alguma restrição do gerenciador de janelas), o VIM irá reduzir a quantidade + de colunas até que a janela caiba completamente. + +* `set cursorline`: A linha onde o cursor se encontra tem highlight. E, caso + você esteja se perguntando, existe um `set cursorcolumn` que mostra a coluna do + cursor. Tanto "cursorline" quanto "cursorcolumn" funcionam em console, mas a + forma como a linha é apresentada no meu colorscheme é... estranha.[^1] + +* `set colorcolumn=+2`: Define uma coluna para ser marcada com uma cor + diferente. Se for usado uma opção relacional (não um valor absoluto, mas algo + começando com "+" ou "-"), então cursorline vai usar o "textwidth" atual. + +* `set linespace=1`: Define um espaçamento entre linhas, em pixeis. No caso, + "1" significa que as linhas terão a altura requisitada pela fonte mais um + pixel. + +* `set lines=???:` Define a quantidade de linhas do editor. Segue todas as + considerações feitas em “columns”. Ainda, aqui eu estou usando de novo a + checagem de funcionalidade (`has()`) para ter configurações diferenciadas no OS + X e em outros sistemas operacionais. + +* `set gfn=???`: Define a fonte a ser usada ("gfn" é a forma curta de "guifont"). + Note que fontes que tem espaço no meio tem que ter os espaços "escapados" + (com `\` antes do espaço) ou como strings. Se você quiser selecionar alguma + fonte mas não faz idéia do nome da fonte, use `:set gfn=*` para que o VIM + mostre o seletor de fontes do sistema; depois que escolher uma fonte, se + quiser que o VIM descreva como usar, use `:set gfn` e cole o resultado no seu + arquivo de configuração. + +[^1] E, lembrando mais uma vez: Para desligar opções deste tipo, coloque "no" na + frente. Para desligar o highlight da linha atual do cursor, use `:set + nocursorline`; para desligar o highlight da coluna atual do cursor, use + `:set nocursorcolumn`. + +{{ chapters(prev_chapter_link="./11-01-vimrc", prev_chapter_title="Meu .vimrc", next_chapter_link="./12-modelines", next_chapter_title="Modelines") }} diff --git a/content/books/uma-licao-de-vim/12-modelines/index.md b/content/books/uma-licao-de-vim/12-modelines/index.md new file mode 100644 index 0000000..768c2c3 --- /dev/null +++ b/content/books/uma-licao-de-vim/12-modelines/index.md @@ -0,0 +1,70 @@ ++++ +title = "Modelines" +date = 2015-12-22 ++++ + +Essa é a parte em que você ignora seus arquivos de configuração. + + + +Bom, agora você sabe como configurar seu VIM, mudar configurações baseadas no +tipo de arquivo... Mas o que fazer se um arquivo tem uma configuração +completamente diferente do resto? + +A solução são modelines. Modelines são linhas que você pode adicionar no seu +arquivo e o VIM, quando carregar o arquivo, irá mudar suas configurações +baseadas nesta linha. + +A sintaxe da linha é, simplesmente: `vim: set {configurações}:`. + +"Mas é um código fonte e se eu colocar um 'vim' no meio, o compilador vai +reclamar!", você deve estar pensando agora. Acontece que o VIM procura uma linha +válida em qualquer lugar, desconsiderando a sintaxe atual. Se você colocar o +modeline dentro de um comentário, o VIM ainda vai encontrar e ainda vai +processar o modeline e ainda vai trocar as configurações do editor (apenas para +aquele arquivo). + +Por exemplo, para garantir que meus templates Jinja fiquem com a sintaxe +correta (usando a sintaxe de templates do Django), eu tenho colocado, como +última linha do arquivo + +```django +{# vim: set ft=htmldjango: #} +``` + +"ft", no caso, é o nome curto para "filetype", que define o tipo de arquivo que +está sendo usando e qual sintaxe será utilizada. E o par `{#` e `#}` são +comentários do template e completamente ignorados no resultado final. + +Assim como vimos antes, várias configurações podem ser usadas no mesmo set. +Usando o exemplo acima, se eu quisesse que meus templates usassem tabulações ao +invés de espaços para identação mas fossem apenas 2 espaços por tabulação, eu +poderia colocar, no final do arquivo: + +```django +{# vim: set ft=htmldjango noet ts=2 sts=2 sw=2: #} +``` + +O VIM ainda aceita que as opções sejam separadas em vários comandos, com a +adição de ":": + +```django +{# vim: set ft=htmldjango:set noet:set ts=2:set sts=2:set sw=2: #} +``` + +Mas realmente não faz sentido, faz? + +E apenas um aviso: Algumas distribuções Linux desligam modelines no arquivo +global (adicionando `set nomodeline` no arquivo global) e, assim, modelines são +completamente ignorados, sob a desculpa de "segurança". Tentando descobrir o +porque descobri o seguinte: O único comando que pode ser usado em modelines é +"set", ou seja, não é possível colocar um modeline que abra outro arquivo, ou +mude o diretório atual ou qualquer outra coisa; nem todas as configurações pode +ser alteradas (infelizmente, o help do VIM não lista quais são e quais não são +permitidas); e, aparentemente, a pior forma de "ataque" seria alguém colocar um +"textwidth" e seu código ficar torto na primeira edição. Se você achar que +modelines não estão sendo executados, você pode adicionar no seu vimrc `set +modelines` para que modelines sejam processados (ou troque por uma distribuição +que não tenha configurações que não fazem sentido). + +{{ chapters(prev_chapter_link="./11-02-gvimrc", prev_chapter_title="Meu .gvimrc", next_chapter_link="./13-tags", next_chapter_title="Tags") }} diff --git a/content/books/uma-licao-de-vim/13-tags/index.md b/content/books/uma-licao-de-vim/13-tags/index.md new file mode 100644 index 0000000..bb75c05 --- /dev/null +++ b/content/books/uma-licao-de-vim/13-tags/index.md @@ -0,0 +1,60 @@ ++++ +title = "Tags" +date = 2015-12-22 ++++ + +Essa é a parte em que você vai entender Unix um pouco. + + + +Eu expliquei antes que haviam dois comandos para utilizar tags, `[Ctrl]]` e +`[Ctrl]t`. Existem duas coisas que eu não expliquei: O que são tags e de onde +elas vem. + +Primeiro, tags são qualquer palavra que o editor encontre no arquivo de tags. E +o arquivo de tags pode ser definido em `:set tags`. Por padrão, são verificados +os arquivos `./tags` ("tags" no diretório atual do editor), `./TAGS`, `tags` +(arquivo "tags" em algum diretório de pesquisa) e `TAGS`. + +Acontece que não é qualquer arquivo com este nome que o torna válido. Existem +um formato específico em que as coisas devem estar declaradas para serem +detectadas como tags. E o formato é + +``` +{tagname}{tagfile}{tagaddress} +``` + +(onde "tagname" é a tag em si, "tagfile" é o nome do arquivo onde a tag se +encontra e "tagaddress" é uma expressão Ex para encontrar a tag -- por exemplo, +"89" para ir para linha 89). + +Sim, só isso. E eu sei que manter um arquivo assim é chato horrores, e por isto +existem ferramentas que já fazem isso. A mais completa de todas é "Exuberant +CTags"" e pode ser encontrada em praticamente todas as distribuições Linux +atuais, gerenciadores de pacotes do OS X e ainda vem um pacote para Windows. + +A grande vantagem do Exuberant é a quantidade de linguagens suportadas. Assim, +se você estiver num projeto em Python e depois passar para um projeto em C, +você ainda pode usar o mesmo aplicativo. + +A sintaxe gerado do Exuberant é "ctags {arquivos}", onde "{arquivos}" são os +arquivos a serem processados (expressões como "\*.py" são válidas) ou, da forma +mais simples "ctags -R", para que todos os arquivos do diretório atual e +subdiretórios sejam processados. + +Uma vez que este arquivo tenha sido criado, dentro do editor você pode usar +`[Ctrl]]` para tentar achar a definição da tag (que, com o uso do Exuberant +significa definição de funções ou definições de variáveis) e `[Ctrl]t` para +retornar para a localização anterior. Se houver mais de um arquivo com uma +definição válida, o VIM irá mostrar uma lista das localizações e você poderá +selecionar qual deve ser acessada. + +A única dica que sobra aqui é cuidar com arquivos minificados. Isso porque o +Exuberant entende arquivos CSS. Não que arquivos CSS sejam um problema, mas o +Exuberant coloca a expressão regular da linha onde a tag se encontra e, num +arquivo minificado, a expressão acaba sendo uma linha gigantesca, que fica se +repetindo em vários lugares do arquivo, deixando-o gigantesco. Se você tiver +algo desse tipo, use a opção "--exclude={expressão}", onde "{expressão}" é a +expressão regular que define o nome dos arquivos que devem ser ignorados. + +{{ chapters(prev_chapter_link="./12-modelines", prev_chapter_title="Modelines", next_chapter_link="./14-01-vundle", next_chapter_title="Plugins - Vundle") }} diff --git a/content/books/uma-licao-de-vim/14.01-vundle/index.md b/content/books/uma-licao-de-vim/14.01-vundle/index.md new file mode 100644 index 0000000..9d18b7d --- /dev/null +++ b/content/books/uma-licao-de-vim/14.01-vundle/index.md @@ -0,0 +1,112 @@ ++++ +title = "Plugins - Vundle" +date = 2015-12-22 ++++ + +Essa é a parte em que começamos a mexer ao redor do VIM. + + + +Vamos começar a ver como adicionar funcionalidades no VIM com plugins. E, para +isso, vamos ver Vundle, que é um gerenciador de plugins. + +A pergunta que você deveria estar se fazendo agora é "E por que usar o +Vundle?". Na verdade, esta pergunta tem duas respostas: + +A primeira é: Apesar de ser extremamente fácil de adicionar um plugin no VIM -- +normalmente é uma questão de descompactar um arquivo dentro do diretório +`$HOME/.vim` -- a parte chata é manter os scripts atualizados (e ficar preso à um +arquivo compactado) e removê-los depois, se você encher o saco de um. + +A segunda é: Vundle não é o único gerenciador de plugins para VIM, mas consegue +instalar plugins por conta própria (Pathogen requer que você baixe os plugins +manualmente, assumindo depois o controle para manter atualizado); a desvantagem +é que Vundle requer que os scripts tenham uma determinada estrutura de arquivos +e diretórios, mas praticamente todos os scripts hoje utilizam esta estrutura. + +Então vamos lá, instalar o Vundle: + +Primeiro, você deve baixar o plugin em si. Para isso, você tem que ter o Git +instalado e executar: + +``` +git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle +``` + +Simplesmente, você está copiando o repositório do vundle para um diretório do +próprio VIM. Até aqui nenhuma surpresa, exceto que o diretório de plugins é +`$HOME/.vim/plugin` (ou `~/.vim/plugin`) e o clone colocou no diretório +`~/.vim/bundle`. Ou seja, o Vundle não está ativo como um plugin do VIM (ainda). +O Vundle faz isso de propósito, para que os scripts instalados com o Vundle não +se misturem com os plugins instalados manualmente. + +A seguir, é preciso ativar o Vundle. Para isso, nós vamos adicionar o diretório +do Vundle no path do VIM e chamar o script de inicialização. Para isto, +adicione as seguintes linhas no seu vimrc: + +```vim +set rtp+=~/.vim/bundle/vundle/ +call vundle#rc() +``` + +Explicando: "rtp" é a forma curta de "runtimepath", que identifica os +diretórios onde o VIM irá procurar scripts, se preciso. No caso, estamos +adicionando o diretório do Vundle, que clonamos anteriormente. A seguir é +chamado o script de inicialização do Vundle. + +Pronto! Agora o Vundle está instalado. + +A questão é: E agora que o Vundle está instalado, "faz o que?" + +O Vundle tem mais comandos disponíveis, entre eles `:Plugin "{bundle}"`[^1]. Este +comando adiciona um bundle/plugin/script na lista de bundles/plugins/scripts +gerenciados pelo Vundle. A única coisa que esse comando faz é adicionar o +bundle na lista; ele não vai instalar o bundle ainda, ele não vai remover o +bundle, ele não vai atualizar o bundle. Apenas adicionar na lista. + +O parâmetro do comando, {bundle} pode ser: + +* O nome de um plugin conforme listado no repositórios de scripts do VIM; + apenas uma string (por exemplo, `:Plugin "vundle"` para instalar este script + (que é a descrição do Vundle nos repositórios de script); + +* O nome de um plugin no Github, no formato "{usuário}/{repositório}", que você + pode ver na parte superior de qualquer repositório (por exemplo, `:Bundle " + gmarik/vundle"` para instalar o Vundle a partir do repositório -- que tende a + ser atualizado com maior frequência); + +* Uma URL, que pode ser clonada com Git (por exemplo, `:Plugin + "https://github.com/gmarik/vundle"` para fazer o mesmo que acima. + +Uma vez que você tenha a lista de plugins que você quer no sistema, você pode +instalar todos usando `:PluginInstall`; se quiser remover um plugin, você +simplesmente o deixa fora da lista de plugins desejados e executa `:PluginClean`; +e, para atualizar os plugins que estão instalados, `:PluginUpdate.` + +Acho que você já percebeu que o problema de se manter uma lista de plugins +manualmente é meio chato: Toda vez que você quiser verificar se há atualizações +dos plugins, você tem que entrar a lista inteira; se você esquecer de um plugin +e fizer `:PluginClean` irá remover esse plugin. Para evitar essa complicação, +você pode adicionar os comandos Plugin diretamente no seu vimrc[^2]. Assim, cada +vez que você usar qualquer comando do Vundle, você não precisa se preocupar em +lembrar de todos os plugins instalados. + +E, como última dica, fica o seguinte: Logo após a linha do "call vundle#rc()", +adicione + +```viml +Plugin 'gmarik/vundle' +``` + +.. que nada mais é que o repositório que fizemos o clone logo no começo; desta +forma, quando você fizer um `:PluginUpdate`, o próprio Vundle poderá ser +atualizado com a última versão disponível. + +[^1] Lembram que eu falei que plugins poderiam adicionar novos comandos e que + estes teriam pelo menos a primeira letra em maiúsculas? Pois é... + +[^2] Lembre-se também que o vimrc é um arquivo executado em modo Ex e o modo Ex + nada mais é que o modo de comando sem precisar colocar `:` na frente de cada + comando. + +{{ chapters(prev_chapter_link="./13-tags", prev_chapter_title="Tags", next_chapter_link="./14-02-airline", next_chapter_title="Plugins - Airline") }} diff --git a/content/books/uma-licao-de-vim/14.02-airline/airline-everything.png b/content/books/uma-licao-de-vim/14.02-airline/airline-everything.png new file mode 100644 index 0000000..112be77 Binary files /dev/null and b/content/books/uma-licao-de-vim/14.02-airline/airline-everything.png differ diff --git a/content/books/uma-licao-de-vim/14.02-airline/airline-laststatus.png b/content/books/uma-licao-de-vim/14.02-airline/airline-laststatus.png new file mode 100644 index 0000000..f91d4c5 Binary files /dev/null and b/content/books/uma-licao-de-vim/14.02-airline/airline-laststatus.png differ diff --git a/content/books/uma-licao-de-vim/14.02-airline/airline-nofonts.png b/content/books/uma-licao-de-vim/14.02-airline/airline-nofonts.png new file mode 100644 index 0000000..ce8a973 Binary files /dev/null and b/content/books/uma-licao-de-vim/14.02-airline/airline-nofonts.png differ diff --git a/content/books/uma-licao-de-vim/14.02-airline/index.md b/content/books/uma-licao-de-vim/14.02-airline/index.md new file mode 100644 index 0000000..a92ffd0 --- /dev/null +++ b/content/books/uma-licao-de-vim/14.02-airline/index.md @@ -0,0 +1,110 @@ ++++ +title = "Plugins - Airline" +date = 2015-12-22 ++++ + +Essa é a parte em que o "laststatus" fica interessante. + + + +Quando estávamos falando de configurações, falamos de uma configuração chamada +“laststatus”. Esta configuração tem 3 valores possíveis: + +* 0 – não apresenta a barra de status, nunca. +* 1 – apresenta a barra de status se houver pelo menos um split. +* 2 – sempre apresenta a barra de status. + +E, conforme eu mostrei no meu arquivo de configuração, eu sempre deixo com 2". + +Acontece que a barra de status não é tããão informativa assim. + +![](laststatus.png) + +Ela tem o básico, mas o básico não é o suficiente, sejamos honestos. É possível +adicionar mais informações setando "statusline" (que eu não vou entrar em +detalhes aqui, mas para configurar, você tem que usar letras únicas indicado +para cada coisa que deseja apresentar tal como se faz com "guioptions") mas, +mesmo assim, certas coisas tem que vir de scripts externos (por exemplo, para +mostrar o branch atual que você está) e, como eu falei, essa parte é meio +chata. + +Para aliviar essa confusão, existe um plugin chamado "Vim-Airline", que tem uma +apresentação mais complexa e oferece mais informações, baseados plugins que +você tem instalado. + +Ainda, o Airline é uma versão mais leve do Powerline, que na verdade passou de +ser um simples plugin para VIM para ser um plugin para praticamente tudo (hoje +eu uso o Powerline para configurar meu prompt do terminal, por exemplo) e +algumas coisas ainda são usadas do Powerline (por exemplo, as fontes, mas +esperem aí que eu já explico o porque o Airline usa fontes especiais.) + +(Conforme formos passando a lista de plugins que eu tenho, vocês vão ver o +Airline mudando de formato com o tempo.) + +Como falei do Vundle como gerenciador de plugins, vamos usar o mesmo para +instalar (e manter, no futuro) o Airline. + +No seu vimrc, adicione o seguinte: + +```viml +Plugin "bling/vim-airline" +``` + +E, revisando: `:Plugin` adiciona um plugin na lista de plugins gerenciados pelo +Vundle (e apenas isso, nada mais); por ter uma barra no meio, estamos falando +de um repositório do Github; para instalar o plugin, você precisa ou adicionar +o plugin na lista manualmente (com o comando `:Plugin`) ou reiniciar o VIM caso +você queria conferir se a configuração no seu vimrc está certa e fazer +`:PluginInstall.` + +Se nada apareceu, é porque o seu "laststatus" não está em "2". + +Se tudo deu certo, você verá o seguinte: + +![](airline-nofonts.png) + +Não que tenha melhorado muito, mas agora você tem informações sobre qual o modo +que você está atualmente (que vai mudar de cor conforme você passa para o modo +de inserção ou visual), o nome do arquivo, o tipo de arquivo (que define qual a +sintaxe está sendo usada), posição do cursor em relação ao todo do arquivo (em +percentual) e a posição absoluta do mesmo (em linhas em colunas). + +Ok, duas coisas: Ainda não é muito melhor (embora a parte de mostrar o modo +ajude, acredite), mas temos alguns caracteres estranhos na barra. + +É aí que entra a história do Powerline de novo: Os criadores do Powerline +usaram "posições" não usadas nas fontes unicode para adicionar outros +caracteres que são usados para melhorar a apresentação do status. Eles mantém +[um repositório com fontes já com os caracteres especiais](https://github.com/powerline/fonts) +e, caso a fonte que você queria não esteja na lista deles, [eles tem um script +para "patchear" a fonte desejada](https://github.com/powerline/powerline/tree/develop/font). + +Uma vez que você tenha a fonte disponível no seu sistema, você deve adicionar no seu vimrc + +```viml +let g:airline_powerline_fonts = 1 +``` + +E o seu Airline, na próxima execução, deve ficar + +![](airline-laststatus.png) + +Que é mais bonito, mas ainda continua mostrando as mesmas informações. Mais pra +frente veremos ã integração com “Fugitive” (um plugin para VIM para Git) e o +Syntastic (para validar o código com ferramentas externas) e como ambos são +suportados pelo Airline, você terá todas as informações ao alcance do rodapé da +janela. + +![](airline-everything.png) + +Uma última nota: O Airline vem com suporte a temas, que você pode trocar usando +`:AirlineTheme` (e um duplo [Tab] depois disso irá mostrar os temas instalados). +Depois que escolher um, você pode definir + +``` +let g:airline_theme = '{nome do tema}' +``` + +no seu vimrc. + +{{ chapters(prev_chapter_link="./14-01-vundle", prev_chapter_title="Plugins - Vundle", next_chapter_link="./14-03-fugitive", next_chapter_title="Plugins - Fugitive") }} diff --git a/content/books/uma-licao-de-vim/14.02-airline/laststatus.png b/content/books/uma-licao-de-vim/14.02-airline/laststatus.png new file mode 100644 index 0000000..018b299 Binary files /dev/null and b/content/books/uma-licao-de-vim/14.02-airline/laststatus.png differ diff --git a/content/books/uma-licao-de-vim/14.03-fugitive/index.md b/content/books/uma-licao-de-vim/14.03-fugitive/index.md new file mode 100644 index 0000000..8be586c --- /dev/null +++ b/content/books/uma-licao-de-vim/14.03-fugitive/index.md @@ -0,0 +1,66 @@ ++++ +title = "Plugins - Fugitive" +date = 2015-12-22 ++++ + +Essa é a parte que só faz sentido se você usa Git. + + + +O terceiro plugin que eu vou comentar é +[Fugitive](https://github.com/tpope/vim-fugitive), que adiciona comandos para +gerenciar seu repositório Git dentro do VIM. + +Para instalar, ou você baixa a versão do Github (no link acima) ou usa o Vundle: + +```viml +Plugin "tpope/vim-fugitive" +``` + +(E, de novo: depois de adicionar essa linha no seu vimrc, você deve sair do VIM +-- ou, se não quiser fazer tudo isso, basta usar o comando acima em modo de +comando -- e usar `:PluginInstall` para instalar o plugin.) + +A princípio, nada de diferente deve aparecer. Mas você agora pode usar qualquer +comando do Git com `:Git {comando}`, como faria no shell. + +Mas só adicionar um comando não é o que o Fugitive faz. Ele também adiciona +outros comandos: + +* `:Gwrite` (ou `:Gw`): salva o arquivo atual e já adiciona no index para o + próximo commit. +* `:Gblame`: Faz um split da tela, mostrando do lado direito o fonte que já + estava aberto e do lado esquerdo, o último commit (SHA1) e o autor do commit. +* `:Gread`: Descarta as alterações locais e recupera o arquivo atual na sua + última revisão dentro do repositório do Git (ou seja, revert). +* `:Gdiff`: Mostra um diff da versão atual com a versão no repositório, com + splits. +* `:Gcommit`: Faz o commit dos arquivos que estão no index. +* `:Gstatus`: Faz um "git status", mas deixa que você altere os arquivos no + index (usando "-" para adicionar ou remover o arquivo -- leia o texto com + atenção) e faça commit dos selecionados (usando "cc") [Note que ambos os + comandos devem ser usados em modo normal dentro do split aberto por + `:Gstatus`.] + +Existem outros, mas você vai usar principalmente estes. E cuide para que você +esteja dentro de um repositório Git antes de tentar usar os comandos; se o VIM +não estiver num diretório com um repositório válido, nenhum dos comandos do +Fugitive ficarão disponíveis[^1]. + +E, como última dica: Se você estiver usando o Airline (comentado no capítulo +anterior), adicione + +```viml +let g:airline_enable_branch = 1 +``` + +... no seu vimrc e o branch atual será apresentando dentro do status do +Airline, logo após o indicador de modo. + +[^1] Eu só preciso adimitir que não testei para ver o que acontece se você + abrir o VIM fora de um repositório e depois usar `:cd` para mudar para um + diretório que tem um repositório ou tentar abrir um arquivo que está + dentro de um repositório para verificar se os comandos se tornam + disponíveis. + +{{ chapters(prev_chapter_link="./14-02-airline", prev_chapter_title="Plugins - Airline", next_chapter_link="./11-config", next_chapter_title="Arquivos de Configuração") }} diff --git a/content/books/uma-licao-de-vim/_index.md b/content/books/uma-licao-de-vim/_index.md index 9339ecc..877d7e7 100644 --- a/content/books/uma-licao-de-vim/_index.md +++ b/content/books/uma-licao-de-vim/_index.md @@ -22,12 +22,12 @@ template = "section-contentless.html" * [Abas](10-abas) * [Arquivos de Configuração](11-config) * [Meu .vimrc](11-01-vimrc) - * [Meu .gvimrc](122.md) -* [Modelines](13.md) -* [Tags](14.md) -* [Plugins - Vundle](1501.md) -* [Plugins - Airline](1502.md) -* [Plugins - Fugitive](1503.md) + * [Meu .gvimrc](11-02-gvimrc) +* [Modelines](12-modelines) +* [Tags](13-tags) +* [Plugins - Vundle](14-01-vundle) +* [Plugins - Airline](14-02-airline) +* [Plugins - Fugitive](14-03-fugitive) * [Plugins - Commentary](1504.md) * [Plugins - Tabular](1505.md) * [Plugins - Auto-pairs](1506.md)