Julio Biason
6 years ago
13 changed files with 534 additions and 8 deletions
@ -0,0 +1,108 @@ |
|||||||
|
+++ |
||||||
|
title = "Meu .gvimrc" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que veremos mais do mesmo. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
@ -0,0 +1,70 @@ |
|||||||
|
+++ |
||||||
|
title = "Modelines" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que você ignora seus arquivos de configuração. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
@ -0,0 +1,60 @@ |
|||||||
|
+++ |
||||||
|
title = "Tags" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que você vai entender Unix um pouco. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
@ -0,0 +1,112 @@ |
|||||||
|
+++ |
||||||
|
title = "Plugins - Vundle" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que começamos a mexer ao redor do VIM. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 7.1 KiB |
@ -0,0 +1,110 @@ |
|||||||
|
+++ |
||||||
|
title = "Plugins - Airline" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que o "laststatus" fica interessante. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
After Width: | Height: | Size: 5.0 KiB |
@ -0,0 +1,66 @@ |
|||||||
|
+++ |
||||||
|
title = "Plugins - Fugitive" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte que só faz sentido se você usa Git. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
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") }} |
Loading…
Reference in new issue