Julio Biason
6 years ago
16 changed files with 822 additions and 1 deletions
After Width: | Height: | Size: 41 KiB |
@ -0,0 +1,85 @@ |
|||||||
|
+++ |
||||||
|
title = "Modo Normal" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Esta é a parte em que você ainda vai precisar de um arquivo pronto para ver |
||||||
|
as coisas funcionando. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
A apresentação mais clássica do modo normal são todas as demais explicações que |
||||||
|
você vai achar por aí que dizem que é preciso usar `h`, `j`, `k` e `l` para |
||||||
|
mover o cursor na tela. Tirando o fato que isso é uma balela sem tamanho e que |
||||||
|
o VIM suporta movimentação com as teclas direcionais e que você não precisa |
||||||
|
ficar pensando em mnemônicos como "j tem uma perna pra baixo, k tem uma perna |
||||||
|
pra cima" e outras absurdices, estes são comandos normais válidos: ao |
||||||
|
pressionar `k`, o cursor irá mover para a linha de cima, `j` moverá o cursor |
||||||
|
para a linha de baixo e assim por diante. |
||||||
|
|
||||||
|
Nem todos os comandos são acionados com apenas uma tecla. Alguns iniciam um |
||||||
|
comando, mas ficam esperando mais informações para saber o que fazer ou onde |
||||||
|
fazer. Assim, temos comandos que são de movimentação e outros de ação. |
||||||
|
|
||||||
|
## Comandos de Movimentação |
||||||
|
|
||||||
|
Comandos de movimentação são comandos que movem o cursor no texto. Como já |
||||||
|
vimos, `h`, `j`, `k` e `l` são comandos de movimentação. Além destes temos[^1]: |
||||||
|
|
||||||
|
### f[letra] |
||||||
|
|
||||||
|
Posiciona o cursor na próxima `[letra]` na linha. Se `[letra]` não existir, não |
||||||
|
move o cursor. Por exemplo, `fa` irá mover o cursor para o próximo "a" na |
||||||
|
linha. |
||||||
|
|
||||||
|
### F[letra] |
||||||
|
|
||||||
|
O mesmo que `f[letra]`, mas voltando na linha ao invés de ir pra frente. |
||||||
|
|
||||||
|
### t[letra] |
||||||
|
|
||||||
|
Posiciona o cursor uma posição antes de `[letra]` na linha. Praticamente o mesmo |
||||||
|
que `f[letra]`, mas uma posição antes. |
||||||
|
|
||||||
|
### T[letra] |
||||||
|
|
||||||
|
Assim como "F" faz o mesmo que "t", mas voltando na linha. |
||||||
|
|
||||||
|
### 0 |
||||||
|
|
||||||
|
Move o cursor para a coluna 0. |
||||||
|
|
||||||
|
### _ |
||||||
|
|
||||||
|
Move o cursor para a primeira letra que não seja espaço ou tabulação na linha. |
||||||
|
|
||||||
|
### $ |
||||||
|
|
||||||
|
Move o cursor para o final da linha. |
||||||
|
|
||||||
|
### % |
||||||
|
|
||||||
|
Move o cursor para o outro elemento do par (por exemplo, % quando cursor |
||||||
|
estiver sobre um "(" irá mover o cursor para o ")" correspondente). |
||||||
|
|
||||||
|
Até aqui eu acredito que você esteja pensando "nada que mude minha vida". Bom, |
||||||
|
então aqui vem a primeira grande dica: |
||||||
|
|
||||||
|
> Se você digitar um número antes de fazer um comando, VIM irá repetir o |
||||||
|
> comando quantas vezes o número indicar. |
||||||
|
|
||||||
|
![](Mind-Blown.jpg) |
||||||
|
|
||||||
|
Ok, talvez não tenha sido a revelação do século, mas isso quer dizer que se |
||||||
|
você digitar `3f.`, VIM irá mover o cursor para o terceiro ponto na linha atual. |
||||||
|
E isso também pode não parecer importante, mas daqui pra frente isso vai fazer |
||||||
|
sentido. |
||||||
|
|
||||||
|
{% note() %} |
||||||
|
Todas as imagens são copyright (C) seus respectivos donos. |
||||||
|
{% end %} |
||||||
|
|
||||||
|
[^1] De forma alguma, esta é uma lista completa de todos os comandos de |
||||||
|
movimentação existentes, apenas os mais interessantes. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-modos", prev_chapter_title="Modos", next_chapter_link="./01-02-entendendo-o-cursor", next_chapter_title="Entendendo o Cursor") }} |
After Width: | Height: | Size: 7.1 KiB |
@ -0,0 +1,39 @@ |
|||||||
|
+++ |
||||||
|
title = "Entendendo o Cursor" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Esta é a parte em que você vai lembrar quando o texto não parar exatamente |
||||||
|
onde você pensava que ele iria parar. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Antes de passar para comandos do modo normal que realmente alteram o texto, é |
||||||
|
preciso entender como o VIM entende o cursor, porque o funcionamento pode |
||||||
|
parecer um pouco diferente dos demais editores. |
||||||
|
|
||||||
|
Para todos os efeitos, considere que o cursor está sempre na parte inferior |
||||||
|
esquerda do bloco do cursor. |
||||||
|
|
||||||
|
![](vim-cursor.png) |
||||||
|
|
||||||
|
![Mais uma foto de você, nesse exato momento.](areyoufuckingkiddingme.jpg) |
||||||
|
|
||||||
|
Porque é importante ter isso em mente? |
||||||
|
|
||||||
|
Porque a maior parte dos editores trata as coisas um pouco diferentes: Por |
||||||
|
exemplo, se houver uma linha inteira no clipboard, o VIM irá inserir (com o |
||||||
|
comando padrão de colar, que vamos ver mais adiante) a nova linha abaixo na |
||||||
|
linha atual -- a maior parte dos outros editores cola a nova linha no lugar da |
||||||
|
linha atual e move a antiga linha uma posição abaixo. |
||||||
|
|
||||||
|
Apenas tenha isso em mente agora que vamos começar a mudar de modo e alguns |
||||||
|
comandos consideram a posição do cursor desta forma e tem uma "contraparte" |
||||||
|
para ações antes do cursor -- e por isso o próximo capítulo parece ter comandos |
||||||
|
repetidos. |
||||||
|
|
||||||
|
{% note() %} |
||||||
|
Todas as imagens são copyright (C) seus respectivos donos. |
||||||
|
{% end %} |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-01-modo-normal", prev_chapter_title="Modo Normal", next_chapter_link="./01-03-modo-de-insercao", next_chapter_title="Modo de Inserção") }} |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 145 KiB |
After Width: | Height: | Size: 305 KiB |
@ -0,0 +1,123 @@ |
|||||||
|
+++ |
||||||
|
title = "Mudando de Modos – Modo de Inserção" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Esta é a parte em que você vai finalmente começar a editar o texto. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Agora que você sabe que existe mais de um modo de edição e como o cursor |
||||||
|
funciona, podemos finalmente começar a ver como se passa de um modo para o |
||||||
|
outro -- e, no processo, entender como editar um texto no VIM. |
||||||
|
|
||||||
|
Primeiro, é preciso saber que o Modo Normal é o ponto central para todos os |
||||||
|
outros modos -- o jeito mais fácil de passar de um modo para o outro é através |
||||||
|
do Modo Normal. E, de qualquer modo[^1], para ir para o modo normal basta |
||||||
|
pressionar `Esc`. |
||||||
|
|
||||||
|
Lembre-se: `Esc` irá sempre voltar para o modo normal para que você possa passar |
||||||
|
para os demais modos. `Esc` em modo normal irá continuar em modo normal[^2]. |
||||||
|
|
||||||
|
Para passar do modo normal para o modo de inserção, você deve usar o seguinte: |
||||||
|
|
||||||
|
## i |
||||||
|
|
||||||
|
Vai para o modo de inserção na posição do cursor (lembre-se do capítulo |
||||||
|
anterior: o cursor está no canto inferior esquerdo do cursor, logo qualquer |
||||||
|
coisa que você digitar vai aparecer antes da letra onde o cursor se encontrava |
||||||
|
antes de pressionar `i`). |
||||||
|
|
||||||
|
## I |
||||||
|
|
||||||
|
Move o cursor para o primeiro caracter que não seja espaço ou tabulação na |
||||||
|
linha e entra em modo de inserção (semelhante à `_i`). |
||||||
|
|
||||||
|
## a |
||||||
|
|
||||||
|
Move o cursor uma posição pra frente e entra em modo de inserção (ou o mesmo |
||||||
|
que `li`). |
||||||
|
|
||||||
|
## A |
||||||
|
|
||||||
|
Move o cursor para o fim da linha e entra em modo de inserção (Seria quase um |
||||||
|
`$i`, só que `$` pára no último não branco da linha -- se considerarmos o caracter |
||||||
|
de quebra de linha um caracter "branco" -- e `i` ficará antes desse não-branco). |
||||||
|
|
||||||
|
## o |
||||||
|
|
||||||
|
Insere uma linha em branco depois do cursor e entra em modo de inserção. |
||||||
|
|
||||||
|
## O |
||||||
|
|
||||||
|
Insere uma linha em branco acima do cursor e entra em modo de inserção. |
||||||
|
|
||||||
|
## R |
||||||
|
|
||||||
|
Entra em modo de inserção, mas substitui as letras atuais ao invés de adicionar |
||||||
|
mais. Sim, é um modo de substituição ("replace"), mas ainda é considerado um |
||||||
|
modo de inserção. |
||||||
|
|
||||||
|
Ok, pequena pausa para acertar os ponteiros agora: Uma coisa que eu comentei |
||||||
|
anteriormente foi que, no modo normal é possível definir o número de vezes que |
||||||
|
um comando será repetido. Por mais estranho que isso possa parecer, todos os |
||||||
|
comandos acima também aceitam um número de repetições. Por exemplo, `20A-[Esc]` |
||||||
|
irá repetir o comando `A-` 20 vezes, efetivamente colocando 20 "-" na linha |
||||||
|
atual; `20Oolá[Esc]` irá adicionar 20 linhas de `olá` no seu texto, a partir da |
||||||
|
posição do cursor. |
||||||
|
|
||||||
|
![Sua vida acabou de mudar.](iStock_000014784346Small.jpg) |
||||||
|
|
||||||
|
Quem estava prestando atenção deve ter notado que eu pulei `r` como opção de |
||||||
|
modo de inserção e todos os demais comandos tem uma versão em minúsculas e |
||||||
|
maiúsculas. O motivo é que `r` tem um funcionamento, digamos, peculiar. |
||||||
|
|
||||||
|
`r`, por si só, espera por uma tecla para substituir o caracter sob o cursor. |
||||||
|
Seria o equivalente a fazer `R`, pressionar uma tecla e, na sequência, |
||||||
|
pressionar `[Esc]` para sair do modo de inserção. O estranho, no entando, é |
||||||
|
quando é definido um número de vezes que `r` deve ser executado: Neste caso, o |
||||||
|
caracter sob o cursor é alterado para o caracter indicado, o cursor é movido |
||||||
|
para o próximo caracter e o processo se repete até o número de vezes indicado |
||||||
|
(ou seja alcançado o final da linha). `20r-[Esc]` irá, efetivametne, substituir |
||||||
|
os 20 próximos caracteres por "-" -- que não seria o mesmo que digitar, |
||||||
|
manualmente, `r-` 20 vezes. |
||||||
|
|
||||||
|
Existem ainda outros dois comandos para entrar em modo de inserção: `c` e `s`. |
||||||
|
Existem algumas diferenças configuráveis entre ambos, mas o funcionamento é o |
||||||
|
mesmo: Removem os caracteres indicados pela movimentação e passam para o modo |
||||||
|
de inserção. |
||||||
|
|
||||||
|
![Como assim "movimentação"?!?](enhanced-buzz-5697-1327086181-19.jpg) |
||||||
|
|
||||||
|
De novo, pausa para acertar os ponteiros: no capítulo #2.2, eu falei sobre |
||||||
|
comandos do modo normal que movimentam o cursor. Aqui, `c` e `s` não vão entrar em |
||||||
|
modo de inserção até que você adicione uma sequência de movimentação. Assim: `s$` |
||||||
|
irá remover tudo da posição de cursor até o final da linha e entrará em modo de |
||||||
|
inserção, `s%` irá remover tudo da posição do cursor até o próximo elemento que |
||||||
|
"fecha" o elemento atual (aspas, parênteses, colchetes, etc) e entrará em modo |
||||||
|
de inserção, `c2f.` irá remover tudo da posição do cursor até o segundo ponto na |
||||||
|
linha e entrará em modo de inserção e assim por diante. |
||||||
|
|
||||||
|
![A ficha finalmetne caiu](jaw-drop.jpg) |
||||||
|
|
||||||
|
Embora `c` e `s` funcionem de forma semelhante, `C` e `S` não: `C` irá apagar |
||||||
|
tudo da posição do cursor até o final da linha enquanto que `S` irá remover |
||||||
|
todo o conteúdo da linha, não importando a posição do cursor. Logicamente, |
||||||
|
depois de fazerem isso, ambos entram em modo de inserção. Com um número de |
||||||
|
repetições, no entanto, ambos funcionam da mesma forma -- tanto `20S` quanto |
||||||
|
`20C` irão remover a linha atual e mais 19 e entrar em modo de edição. |
||||||
|
|
||||||
|
E, só pra lembrar: Pressionar `[Esc]` irá voltar para o modo normal. |
||||||
|
|
||||||
|
{% note() %} |
||||||
|
Todas as imagens são copyright (C) seus respectivos donos. |
||||||
|
{% end %} |
||||||
|
|
||||||
|
[^1] ... exceto o modo Ex, mas como eu falei antes, não é um modo muito útil |
||||||
|
hoje em dia e, portanto, eu estou ignorando ele daqui pra frente. |
||||||
|
|
||||||
|
[^2] ... O que explica porque vários programadores experientes em VIM tem a |
||||||
|
mania de, algumas vezes, ficar pressionando `[Esc]` rapidamente quando |
||||||
|
algo sai errado. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-02-entendendo-o-cursor", prev_chapter_title="Entendendo o Cursor", next_chapter_link="./01-04-modo-visual", next_chapter_title="Modo Visual") }} |
After Width: | Height: | Size: 8.7 KiB |
@ -0,0 +1,57 @@ |
|||||||
|
+++ |
||||||
|
title = "Mudando de Modos – Modo Visual" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Esta é a parte em que VIM deixa de ser um editor tão alienígena. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Na nota de rodapé do primeiro capítulo eu comentei que a maior parte dos |
||||||
|
comandos do modo visual podem ser feitos no modo de comando. Como já vimos o |
||||||
|
modo de comando, fica mais fácil entender o modo visual. |
||||||
|
|
||||||
|
Em suma, o modo visual é a versão do VIM para o "Shift+Direcionais" dos demais |
||||||
|
editores: Vai selecionando texto, deixando visível o que está sendo |
||||||
|
selecionado. A diferença é que não é preciso ficar segurando o Shift o tempo |
||||||
|
todo. E todos os demais comandos de movimentação ainda são válidos. |
||||||
|
|
||||||
|
Para entrar no modo visual, você usa, em modo normal, `v` -- e, de novo, você não |
||||||
|
precisa pressionar ou ficar segurando nenhuma tecla: o modo ficará ativo até |
||||||
|
que você cancele o modo visual (voltando para o modo normal com `[Esc]`) ou seja |
||||||
|
utilizado algum comando de alteração de texto (como `s`). |
||||||
|
|
||||||
|
Uma vez que a região fique selecionada, você pode usar qualquer comando de |
||||||
|
alteração de textos para executar somente naquela região. Assim, ao invés de |
||||||
|
ficar contando quantos pontos a linha tem para chegar no número certo de saltos |
||||||
|
para o commando `f`, você pode facilmente ativar o modo visual, navegar a bel |
||||||
|
prazer, usado qualquer combinação de comandos de movimentação (incluindo |
||||||
|
repetir `f` a vontade) até chegar no ponto que quiser e executar o comando |
||||||
|
somente naquela região. |
||||||
|
|
||||||
|
Além de `v`, existem outros dois outros comandos para entrar em modo visual: |
||||||
|
`[Shift]+v` e `[Ctrl]+v`. |
||||||
|
|
||||||
|
`[Shift]+v` é chamado de "modo visual de linha" porque, bem, são selecionadas |
||||||
|
linhas inteiras neste modo, incluíndo o caracter de nova linha de cada uma das |
||||||
|
linhas selecionadas. Neste modo, não é possível selecionar apenas parte de uma |
||||||
|
linha, somente linhas inteiras -- que é útil quando se quer remover aquela |
||||||
|
função inteira[^1]. |
||||||
|
|
||||||
|
`[Ctrl]+v` é chamado de "modo visual de bloco" e faz algo que poucos outros |
||||||
|
editores conseguem: seleção de regiões retangulares. A pergunta que você deve |
||||||
|
estar se fazendo agora é: e como é que o VIM junta as linhas se eu apagar um |
||||||
|
bloco inteiro? Resposta indireta: O modo visual de bloco funciona como se |
||||||
|
várias seleções fossem feitas ao mesmo tempo, o que significa que cada linha é |
||||||
|
uma seleção diferente e que cada comando de alteração de texto é executado |
||||||
|
individualmente em cada linha. Assim, se você iniciar o modo visual de bloco, |
||||||
|
selecionar várias linhas mas apenas uma coluna, e executar o comando `c,[Esc]`, o |
||||||
|
que vai acontecer é que o VIM irá substituir o caracter na coluna indicada por |
||||||
|
vírgula em cada uma das linhas. Ou seja, respondendo a pergunta feita logo no |
||||||
|
começo deste parágrafo: o VIM irá juntar as linhas como se você tivesse ido na |
||||||
|
primeira linha, executado o comando, retornado a coluna inicial, ido para a |
||||||
|
linha seguinte, repetido o comando e passado para a próxima linha. |
||||||
|
|
||||||
|
[^1] Ou copiar para outro arquivo, que nós vamos ver mais pra frente. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-03-modo-de-insercao", prev_chapter_title="Modo de Inserção", next_chapter_link="./02-outros-comandos", next_chapter_title="Outros Comandos") }} |
@ -0,0 +1,146 @@ |
|||||||
|
+++ |
||||||
|
title = "Mudando de Modos – Modo de Comando" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte onde você vai aprender a fazer as coisas que precisavam de um |
||||||
|
menu para serem feitas. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Existem três "iniciadores" de comandos no modo de... erm... comando: |
||||||
|
|
||||||
|
* `:`: Inicia um comando de edição. |
||||||
|
* `/`: Comando de pesquisa. |
||||||
|
* `!`: Comando de filtro externo. |
||||||
|
|
||||||
|
## Comandos de Edição |
||||||
|
|
||||||
|
Assim como os comandos do modo normal, a quantidade de comandos de edição é |
||||||
|
grande demais para cobrir de uma vez só. Então vamos dar uma olhada nos mais |
||||||
|
utilizados: |
||||||
|
|
||||||
|
## :q |
||||||
|
|
||||||
|
Sai do VIM. Esse deve ser o comando mais infame da história do editor -- pelo |
||||||
|
menos, para os não iniciados. E ele ainda aparece na tela inicial do VIM, se |
||||||
|
você prestar atenção. |
||||||
|
|
||||||
|
## :w |
||||||
|
|
||||||
|
Salva o arquivo atual em disco. Você pode passar o nome do arquivo a ser salvo |
||||||
|
neste ponto. `:w`, por exemplo, irá salvar o conteúdo com o nome atual; `:w |
||||||
|
outro-nome` irá salvar o conteúdo no arquivo "outro-nome". |
||||||
|
|
||||||
|
## :wall |
||||||
|
|
||||||
|
Salva todos os arquivos arquivos. Mais adiante veremos como ter vários arquivos |
||||||
|
abertos ao mesmo tempo. |
||||||
|
|
||||||
|
## :wq |
||||||
|
|
||||||
|
Salva o arquivo atual e o fecha. |
||||||
|
|
||||||
|
## :help |
||||||
|
|
||||||
|
Abre o help do VIM no tópico indicado. Por exemplo, `:help :w` irá apresentar as |
||||||
|
opções existentes para o comando `:w`; `:help c` irá mostrar as opções do comando `c` |
||||||
|
do modo normal e assim por diante. |
||||||
|
|
||||||
|
## :set |
||||||
|
|
||||||
|
Configura (ou apresenta) alguma configuração do VIM. Mais a frente veremos como |
||||||
|
configurar o VIM e veremos as opções este comando. |
||||||
|
|
||||||
|
## :r |
||||||
|
|
||||||
|
(Ou :read) Não é muito comum, mas permite carregar o conteúdo de outro arquivo |
||||||
|
para dentro do arquivo atual. sem precisar fazer todo o processo de |
||||||
|
copiar-e-colar (que veremos mais adiante). Um fato interessante de `:r` é que se |
||||||
|
o nome do arquivo a ser carregado começar com "!", o VIM irá tentar executar o |
||||||
|
comando ao invés de carregar o conteúdo. Por exemplo, `:r date` irá carregar o |
||||||
|
conteúdo do arquivo `date` para dentro do arquivo atual enquanto que `:r !date` irá |
||||||
|
executar o comando `date` e "colar" o resultado para dentro do arquivo atual. |
||||||
|
|
||||||
|
## :noh |
||||||
|
|
||||||
|
(Ou :nohighlight) Desliga a marcação sobre elementos de pesquisa. A seguir nós |
||||||
|
vamos ver sobre o comando de pesquisa; ao fazer uma, o VIM irá colocar um |
||||||
|
"realce" (ou "highlight") sobre as palavras encontradas. Para desligar esses |
||||||
|
realces no texto, você pode usar `:noh`. |
||||||
|
|
||||||
|
Aqui eu preciso abrir três parenteses: |
||||||
|
|
||||||
|
* Quando o vim se recusar a executar um comando, você pode forçá-lo a executar |
||||||
|
o mesmo de qualquer forma adicionando uma exclamação `!` no final do comando. |
||||||
|
Por exemplo, se o VIM se recusar a sair porque você tem alterações em um |
||||||
|
arquivo não salvo, `:q!` irá forçar o editor fechar, perdendo as alterações |
||||||
|
feitas; se o arquivo não tiver permissão de escrita, `:w!` irá fazer com que o |
||||||
|
VIM altere as permissão do arquivo para poder escrever (e, no final, esta |
||||||
|
alteração das permissões é revertida)[^1]. |
||||||
|
|
||||||
|
* Uma coisa que você vai encontrar frequentemente são referências a "buffer" e |
||||||
|
"arquivo". Entenda assim: buffer é a representação do arquivo na memória |
||||||
|
enquanto que o arquivo é a representação do conteúdo no disco. Ao abrir um |
||||||
|
arquivo, o VIM cria um buffer com o conteúdo do arquivo e o mantém em |
||||||
|
memória; se o arquivo sumir, o buffer ainda existirá e poderá ser salvo |
||||||
|
ainda; vários comandos internos do VIM -- se você se aventurar a escrever um |
||||||
|
plugin, por exemplo -- fazem referência ao buffer e não ao arquivo, mas |
||||||
|
existem funções que retornam o buffer de um arquivo com o nome indicado. Em |
||||||
|
todo esse tempo usando VIM, a distinção entre ambos nunca me pareceu |
||||||
|
importante e considerar, simplesmente, que "buffer" é o arquivo em memória é |
||||||
|
o suficiente. |
||||||
|
|
||||||
|
* Todos os comandos internos do VIM iniciam com uma letra minuscula e plugins, |
||||||
|
quando adicionam comandos a mais, adicionam com letras maiúsculas[^2]. Ainda, |
||||||
|
boa parte dos comandos não precisa ser digitada completa; quando não há mais |
||||||
|
redundâncias, o comando é aceito. Por exemplo, se houverem os comandos |
||||||
|
":Gblame" e ":Gbork", ":Gb" não será aceito, mas ":Gba” será porque não há |
||||||
|
mais nenhum outro comando que comece com ":Gba" (por isso que ":noh" funciona |
||||||
|
como atalho para ":nohighlight": porque não há nenhum outro comando que |
||||||
|
inicie com "noh"). |
||||||
|
|
||||||
|
## Comando de Pesquisa |
||||||
|
|
||||||
|
O comando de pesquisa é, simplesmente, `/`. Uma vez pressionado, você verá o |
||||||
|
cursor indo para a última linha da tela esperando a pesquisa. Uma coisa a ter |
||||||
|
em mente é que o VIM utiliza expressões regulares -- então algumas coisas que |
||||||
|
você procurar não irão funcionar exatamente como você está esperando. ".", por |
||||||
|
exemplo. Eu não vou entrar em detalhes sobre expressões regulares porque há |
||||||
|
pilhas de informações sobre elas na internet -- e há praticamente mais sobre |
||||||
|
elas do que essa série tem (e terá) sobre VIM. |
||||||
|
|
||||||
|
Dois comandos do modo normal que eu não mencionei antes por estarem ligados ao |
||||||
|
comando de pesquisa são `n` e `N`. `n` irá mover o cursor para a próxima |
||||||
|
ocorrência da pesquisa, enquanto que `N` move o cursor para a anterior. Note |
||||||
|
que eu falei "move o cursor"; isso quer dizer que `n` e `N` são comandos de |
||||||
|
movimentação e, portanto, podem ser usados com outros comandos do modo normal |
||||||
|
que utilizam movimentação. Por exemplo, procurar por "olá" e, em modo normal, |
||||||
|
executar `cn` irá remover tudo da posição do cursor até a próxima ocorrência de |
||||||
|
"olá" (e entrará em modo de edição). |
||||||
|
|
||||||
|
## Comando de Filtro |
||||||
|
|
||||||
|
O comando de filtro pega o conteúdo no editor e passa para outro programa. Por |
||||||
|
exemplo, se você tiver o aplicativo "rot13", ao executar `!rot13`, todo o |
||||||
|
conteúdo do arquivo será convertido para ROT13. Se você digitar `!!rot13`, no |
||||||
|
entanto, o conteúdo ainda será passado para o filtro e o resultado irá |
||||||
|
substituir o conteúdo do buffer atual. |
||||||
|
|
||||||
|
Não parece ser interessante, mas um dos aplicativos que normalmente vem com o |
||||||
|
VIM é "xxd", que converte o conteúdo para sua representação hexadecimal. Ao |
||||||
|
executar "!xxd", você verá todo o conteúdo do seu arquivo com os valores |
||||||
|
hexadecimais de cada caracter. |
||||||
|
|
||||||
|
[^1] Não confunda "Não ter permissão de escrita" com "O arquivo pertence ao |
||||||
|
root". No primeiro caso, o usuário tem permissão de ler o arquivo e trocar |
||||||
|
as permissões enquanto que no segundo o editor teria que ter permissões |
||||||
|
especiais de execução para poder trocar as permissões. O VIM só consegue |
||||||
|
responder ao `:w!` se ele próprio -- e, no caso, o próprio usuário -- tiver |
||||||
|
permissões suficientes sem requisitar outro aplicativo. |
||||||
|
|
||||||
|
[^2] Na verdade, o VIM vem sim com comandos que inicial com letra maíuscula: São |
||||||
|
os comandos de exploração de diretório `:Explore`, `:Rexplore`, `:Vexplore` e o |
||||||
|
famigerado `:Sexplore`, que o pessoal costuma encurtar para `:Sex`. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-04-modo-visual", prev_chapter_title="Modo Visual", next_chapter_link="./01-05-modo-de-comando", next_chapter_title="Modo de Comando") }} |
@ -0,0 +1,152 @@ |
|||||||
|
+++ |
||||||
|
title = "Outros Comandos" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Esta é a parte em que eu comento alguns comandos que você vai usar |
||||||
|
esporadicamente. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Neste ponto você deve estar entendendo como os modos do VIM funcionam, para que |
||||||
|
cada um funciona e tento uma idéia básica de como editar arquivos. Como eu |
||||||
|
falei já duas vezes, a quantidade de comandos disponíveis é gigantesca, então |
||||||
|
vamos aproveitar esse pequeno momento em que as coisas começam a fazer sentido |
||||||
|
para ver mais alguns comandos. |
||||||
|
|
||||||
|
## [Shift]+j (Modo normal) |
||||||
|
|
||||||
|
"Junta" a linha abaixo do cursor com a atual. Pode não parecer muito, mas o VIM |
||||||
|
irá colocar um espaço no final da linha atual[^1] antes de juntar com a linha |
||||||
|
abaixo e removerá todo caractere branco da linha de baixo antes de juntar as |
||||||
|
duas linhas. |
||||||
|
|
||||||
|
## x (Modo normal) |
||||||
|
|
||||||
|
Apaga o caractere sob o cursor. O mesmo que `[Del]`. |
||||||
|
|
||||||
|
## gq (Modo normal) |
||||||
|
|
||||||
|
Reformata o parágrafo. Não faz muito sentido para código (com algumas |
||||||
|
exceções), mas se você tiver configurado a coluna máxima (vou explicar como |
||||||
|
fazer isso na parte de configuração do VIM), você pode selecionar um comentário |
||||||
|
em modo visual e usar gq para que o VIM alinhe o comentário no espaço definido. |
||||||
|
Também serve para quando você estiver editando arquivos de markup (MarkDown, |
||||||
|
reSTRUCTURED text, HTML, etc). |
||||||
|
|
||||||
|
## gg e G (Modo normal) |
||||||
|
|
||||||
|
`gg` move o cursor para o início do arquivo e `G` move o cursor para o fim do |
||||||
|
arquivo. Efetivamente, fazer `ggdG` (mover o cursor para o início do arquivo, |
||||||
|
remover tudo até o final do arquivo) irá remover todo o conteúdo do arquivo. |
||||||
|
|
||||||
|
## = (Modo normal) |
||||||
|
|
||||||
|
Reidenta o código usando a sintaxe atual. |
||||||
|
|
||||||
|
## u e [Ctrl]+r (Modo normal) |
||||||
|
|
||||||
|
Undo e redo, respectivamente. |
||||||
|
|
||||||
|
## [Ctrl]+y e [Ctrl]+e (Modo normal e Modo de inserção) |
||||||
|
|
||||||
|
Dois comandos que funcionam de forma diferente se executados em modo normal ou |
||||||
|
modo de inserção. |
||||||
|
|
||||||
|
No modo normal, `[Ctrl]+y` irá rolar o conteúdo do texto para baixo, mantendo o |
||||||
|
cursor na mesma posição enquanto que `[Ctrl]+e` irá rolar o conteúdo para cima, |
||||||
|
ainda mantendo o cursor na mesma posição. Se você abusar destes comandos, |
||||||
|
movendo a linha onde o cursor se encontra para fora da área visível, o cursor |
||||||
|
irá se mover. |
||||||
|
|
||||||
|
No modo de inserção, no entanto, `[Ctrl]+y` irá copiar o caractere da linha de |
||||||
|
cima na mesma coluna na posição atual; `[Ctrl]+e` faz o mesmo, mas com a linha de |
||||||
|
baixo. |
||||||
|
|
||||||
|
# . (Modo normal) |
||||||
|
|
||||||
|
Repete o último comando. Note que `.` irá repetir o último comando completo. Por |
||||||
|
exemplo, quando eu falei sobre `ggdG`, estamos falando, na verdade, de dois |
||||||
|
comandos completos: `gg` e `d{movimentação}`. `.`, neste caso, irá repetir o comando |
||||||
|
`dG`. Mais adiante veremos como criar "macros de teclado" e efetivamente permitir |
||||||
|
a execução de coleções de comandos. |
||||||
|
|
||||||
|
# :e e :files (Modo de comando) |
||||||
|
|
||||||
|
Edita um arquivo. Se não for passado o nome do arquivo depois do comando, o |
||||||
|
mesmo arquivo é recarregado do disco (em outras palavras, o buffer é atualizado |
||||||
|
com o conteúdo do arquivo). `:e#` recarrega o último arquivo aberto (por exemplo, |
||||||
|
se você estiver com o arquivo "arquivo" aberto e fizer `:e arquivo2`, usar `:e#` |
||||||
|
irá recarregar "arquivo" para o editor; usando `:e#` de novo, "arquivo2" será |
||||||
|
apresentado). |
||||||
|
|
||||||
|
Você pode ver os últimos arquivos abertos na sessão atual do VIM com `:files`. Se |
||||||
|
quiser recarregar algum destes arquivos de novo, basta usar `:e#{número}`, onde |
||||||
|
{número} é o número do arquivo na lista. |
||||||
|
|
||||||
|
## :sh (Modo de comando) |
||||||
|
|
||||||
|
Abre um shell dentro do VIM. Para retornar ao VIM, basta encerrar o shell. |
||||||
|
|
||||||
|
## :{número} (Modo de comando) |
||||||
|
|
||||||
|
Pula para a linha indicada. Por exemplo, `:100` irá para a centésima linha do |
||||||
|
arquivo. |
||||||
|
|
||||||
|
## [Ctrl]+] e [Ctrl]+t (Modo normal) |
||||||
|
|
||||||
|
`[Ctrl]+]` pula para a tag sob o cursor e `[Ctrl]+t` retorna. Mais adiante veremos |
||||||
|
como criar um arquivo de tags para que o VIM consiga navegar pelo código. A |
||||||
|
mesma idéia é usada no help do VIM: se você digitar `:help` irá ver a primeira |
||||||
|
página de ajuda do editor; para navegar entre os tópicos apresentados (marcados |
||||||
|
de forma diferente, dependendo do esquema de cor utilizado), é utilizado |
||||||
|
`[Ctrl]+]` para avançar e `[Ctrl]+t` para retornar para a página anterior. |
||||||
|
|
||||||
|
## ~ (Modo normal) |
||||||
|
|
||||||
|
Altera o caractere sob o cursor para maiúscula se for minúscula e vice-versa e |
||||||
|
move o cursor uma posição pra frente. |
||||||
|
|
||||||
|
## gu{movimentação}, gU{movimentação} e g~{movimentação} (Modo normal) |
||||||
|
|
||||||
|
`gu{movimentação}` altera todos os caracteres em {movimentação} para minúsculas. |
||||||
|
|
||||||
|
`gU{movimentação}` altera todos os caracteres em {movimentação} mara maiúsculas. |
||||||
|
|
||||||
|
`g~{movimentação}` faz `~` nos caracteres em {movimentação} (ou seja, os caracteres |
||||||
|
da posição do cursor até movimentação ficarão em maiúsculas se estiverem em |
||||||
|
minúsculas e vice-versa). |
||||||
|
|
||||||
|
## [Ctrl]+p e [Ctrl]+n (Modo de inserção) |
||||||
|
|
||||||
|
Auto-complete. `[Ctrl]+p` tenta completar a palavra antes do cursor voltando no |
||||||
|
texto enquanto que `[Ctrl]+n` tenta completar com palavras mais a frente no |
||||||
|
texto. |
||||||
|
|
||||||
|
## [Ctrl]+a e [Ctrl]+x (Modo normal) |
||||||
|
|
||||||
|
Incrementa (`[Ctrl]+a`) ou decrementa (`[Ctrl]+x`) o número sob o cursor. O VIM |
||||||
|
automaticamente detecta se o número está em decimal, octal ou hexa. |
||||||
|
|
||||||
|
E MAIS! |
||||||
|
|
||||||
|
## w (Modo normal) |
||||||
|
|
||||||
|
Move o cursor para o começo da próxima palavra. |
||||||
|
|
||||||
|
## e (Modo normal) |
||||||
|
|
||||||
|
Move o cursor para o fim da próxima palavra. |
||||||
|
|
||||||
|
## b (Modo normal) |
||||||
|
|
||||||
|
Move o cursor para o começo da palavra anterior. |
||||||
|
|
||||||
|
## ge (Modo normal) |
||||||
|
|
||||||
|
Move o cursor para o fim da palavra anterior. |
||||||
|
|
||||||
|
[^1] ... a não ser que o primeiro caractere (não branco) da linha de baixo seja |
||||||
|
um ")"; neste caso, o VIM não adiciona o espaço. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./01-05-modo-de-comando", prev_chapter_title="Modo de Comando", next_chapter_link="./03-recortar-copiar-colar", next_chapter_title="Recordar, Copiar e Colar") }} |
@ -0,0 +1,71 @@ |
|||||||
|
+++ |
||||||
|
title = "Recortar, Copiar e Colar" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte que você não deve fazer muitas vezes quando estiver |
||||||
|
programando. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Assim como outros editores, o VIM tem um sistema de copiar e colar. E, como |
||||||
|
vimos vendo desde o começo, o VIM tem seu modo peculiar de lidar com isso. |
||||||
|
|
||||||
|
Toda a parte de copiar-e-colar do VIM é feita em modo normal. E sem que você |
||||||
|
soubesse, você já stava vendo a parte de recordar textos desde a parte de |
||||||
|
comandos do modo normal: Qualquer comando que exclua texto imediatamente |
||||||
|
transfere a parte excluído para a área de transferência do VIM. A única parte |
||||||
|
que ficou faltando foi como você “cola” estes textos de volta. |
||||||
|
|
||||||
|
E, para colar, você usa `p` (de "paste", veja só!). |
||||||
|
|
||||||
|
E, obviamente, existe o `[Shift]+p` também. E a diferença é facilmente explicada |
||||||
|
se voltarmos para o capítulo #2.2. |
||||||
|
|
||||||
|
Quando falamos do cursor, eu disse que o cursor encontra-se na parte inferior |
||||||
|
esquerda do bloco do cursor. O colar do VIM é feito depois do cursor. Assim, ao |
||||||
|
pressionar `p`, o texto irá aparecer depois do caractere sob o cursor; se for |
||||||
|
pressionado `[Shift]+p`, o texto será colado antes do caractere atual, empurrando |
||||||
|
o mesmo pra frente. |
||||||
|
|
||||||
|
O funcionamento muda um pouco se você recortar o texto usando o modo visual de |
||||||
|
linha (ou recortar usando algum movimento que desconsidere a coluna atual). |
||||||
|
Nestes casos, o VIM entende que você quer colar uma linha inteira e, ao invés |
||||||
|
de mover o conteúdo da linha atual, o texto é colado abaixo da linha atual, |
||||||
|
desconsiderando a posição do cursor. `[Shift]+p` irá colar o texto antes da linha |
||||||
|
atual. |
||||||
|
|
||||||
|
(Embora pareça complicado, a medida que você for se aclimatando com o |
||||||
|
copiar-e-colar do VIM, você verá que não é tão diferente dos demais editores -- |
||||||
|
com a exceção que os outros editores tentam adivinhar quando você quer fazer |
||||||
|
copia de linhas inteiras ou apenas pedaços, enquanto que o VIM deixa você mesmo |
||||||
|
decidir quando fazer isso.) |
||||||
|
|
||||||
|
A única coisa que ficou faltando agora foi como copiar o texto sem remover o |
||||||
|
mesmo antes -- porque, vamos admitir, recortar e colar de novo seria muita |
||||||
|
burrice. |
||||||
|
|
||||||
|
O comando para copiar é `y{movimentação}`. Normalmente, ele é chamado de "yank" |
||||||
|
(arrancar) e por isso muitos chamam o sistema de "copy'n'paste" do VIM de |
||||||
|
"yank'n'paste". |
||||||
|
|
||||||
|
Para copiar a linha inteira, você pode usar `yy`. Isto copia toda a linha, |
||||||
|
incluindo o marcador de nova linha, e o VIM vai entender que, na hora de colar, |
||||||
|
você quer colar a linha inteira, seguindo as mesmas regras que eu expliquei |
||||||
|
acima sobre o modo visual de linha. |
||||||
|
|
||||||
|
Assim como outros editores, o VIM mantém a área de transferência entre arquivos |
||||||
|
(com isso, você pode abrir um arquivo, copiar um texto, abrir outro arquivo e |
||||||
|
colar a parte selecionada do primeiro) e, normalmente, o VIM ainda consegue |
||||||
|
manter a área de transferência entre execuções. Entretanto, uma coisa que você |
||||||
|
pode não gostar é que a área de transferência pertence e é gerenciada |
||||||
|
exclusivamente pelo VIM -- ou seja, ele não usa a área de transferência do |
||||||
|
sistema operacional[^1]. Assim, você não vai conseguir copiar do VIM e colar no |
||||||
|
seu browser ou vice-versa. |
||||||
|
|
||||||
|
.. a não ser que você use registradores, que nós vamos ver a seguir. |
||||||
|
|
||||||
|
[^1] E não, o "botão do meio dentro do X" não é a mesma coisa a área de |
||||||
|
transferência. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./02-outros-comandos", prev_chapter_title="Outros Comandos", next_chapter_link="./04-registradores", next_chapter_title="Registradores") }} |
@ -0,0 +1,76 @@ |
|||||||
|
+++ |
||||||
|
title = "Recortar, Copiar e Colar" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte que o VIM fica melhor que os outros editores. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
No capítulo anterior eu mencionei que o VIM tem uma área de transferência |
||||||
|
própria e que ela não se comunica diretamente com a área de transferência do |
||||||
|
sistema operacional, apenas através de registradores. |
||||||
|
|
||||||
|
A forma mais simples de pensar em registradores é: são marcadores para áreas de |
||||||
|
transferência com nomes[^1]. |
||||||
|
|
||||||
|
Para acessar os registradores, você deve usar `"{nome do registrador}`, onde |
||||||
|
{nome do registrador} é uma letra apenas. Assim, para copiar texto para um |
||||||
|
registrador, é utilizado `"{registrador}y{movimento}`; para retirar depois este |
||||||
|
texto do registrador, é utilizado `"{registrador}p`. |
||||||
|
|
||||||
|
Enquanto você estava vendo yank'n'paste do VIM, o VIM estava guardando o texto |
||||||
|
numa área de transferência apontanda pelo "registrador sem nome". E eu não |
||||||
|
estou brincando aqui: O próprio help do VIM chama este registrador de |
||||||
|
"registrador sem nome". A letra do registrador sem nome é `"` (ou seja, `""yy` e |
||||||
|
`yy` ambos irão copiar a linha atual para o registrador sem nome). |
||||||
|
|
||||||
|
Números são registradores especiais. 0 contém o último texto copiado para área |
||||||
|
de transferência; de 1 a 9 ficam os textos excluídos, em forma de pilha (o mais |
||||||
|
recente no registrador 1, o anterior a este no 2 e assim por diante; e quando |
||||||
|
mais texto é excluído, o conteúdo vai para o registrador 1, o conteúdo do |
||||||
|
registrador 1 vai para o registrador 2 e assim por diante). |
||||||
|
|
||||||
|
`-` é um registrador que guarda qualquer coisa excluída que for menor que uma |
||||||
|
linha inteira. |
||||||
|
|
||||||
|
Registradores com letras de "a" a "z" funcionam exatamente como esperado: `"ayy` irá |
||||||
|
copiar a linha atual para o registrador "a" enquanto que `"bp` irá colar o conteúdo |
||||||
|
do registrador b. |
||||||
|
|
||||||
|
Note que até agora eu chamei os registradores normais com minúsculas. O motivo |
||||||
|
é que, ao copiar algo para um registrador, o conteúdo anterior é removido, a |
||||||
|
não ser que você passe o nome do registrado em maiúsculas. Neste caso, o |
||||||
|
conteúdo movido para a área de transferência do registrador é adicionado ao |
||||||
|
conteúdo já existente. Assim, você pode copiar linhas não-contíguas usando `"ayy` |
||||||
|
para a primeira linha, `"Ayy` para as demais e depois colar com `"ap` (para o paste |
||||||
|
não há diferença entre maiúsculas e minúsculas). |
||||||
|
|
||||||
|
Outros registradores especiais são: |
||||||
|
|
||||||
|
## = |
||||||
|
|
||||||
|
Registrador de expressões. Você pode entrar fórmulas e depois colar o resultado |
||||||
|
no conteúdo com `p`. Uma coisa a cuidar aqui é que não é possível fazer `"=p`; o |
||||||
|
VIM irá imediatamente abrir espaço para entrar a fórmula ao digitar `"=`; ainda, |
||||||
|
o conteúdo é perdido se depois de digitar a fórmula você utilizar qualquer |
||||||
|
comando que não seja `p` (incluindo os comandos de movimentação). |
||||||
|
|
||||||
|
# _ |
||||||
|
|
||||||
|
Registrador "buraco negro" (de novo, eu não estou brincando, o help do VIM |
||||||
|
chama esse registrador de "buraco negro"). Qualquer coisa enviada para este |
||||||
|
registrador é perdida; paste deste registrador retorna nada. Útil quando você |
||||||
|
quer excluir algum texto sem mexer no registrador sem nome. |
||||||
|
|
||||||
|
# + |
||||||
|
|
||||||
|
Registrador da área de transferência do sistema operacional. Somente disponível |
||||||
|
para aplicações GUI, já que estas tem acesso direto ao sistema (no caso do VIM |
||||||
|
console em Linux, o "sistema operacional" seria o próprio shell, que não tem |
||||||
|
uma área de transferência -- se você pensar nas bibliotecas envolvidas, a coisa |
||||||
|
faz sentido). |
||||||
|
|
||||||
|
[^1] Registradores também são usados para outras coisas, mas veremos isso mais pra frente. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./03-recortar-copiar-colar", prev_chapter_title="Recortar, Copiar e Colar", next_chapter_link="./04-registradores", next_chapter_title="Registradores") }} |
@ -0,0 +1,72 @@ |
|||||||
|
+++ |
||||||
|
title = "Marcadores" |
||||||
|
date = 2015-12-22 |
||||||
|
+++ |
||||||
|
|
||||||
|
Essa é a parte em que você não vai mais precisar se lembrar da última linha |
||||||
|
que estava editando. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Algumas vezes você precisa ficar pulando entre partes diferentes do seu |
||||||
|
arquivo. Alguns editores oferecem a funcionalidade de "bookmark" para linhas |
||||||
|
específicas e ficam "pulando" entre estes bookmarks. O VIM tem uma |
||||||
|
funcionalidade semelhante, chamada "Marcadores". A diferença é que enquanto os |
||||||
|
demais editores só tem um estado para marcadores (ativo ou não), o VIM permite |
||||||
|
que você tenha até 26 marcadores únicos -- e que podem ser acessados |
||||||
|
diretamente. |
||||||
|
|
||||||
|
Para marcar uma linha, você deve usar `m{nome do marcador}` em modo normal, onde |
||||||
|
`{nome do marcador}` é uma letra de "a" a "z". Para ir diretamente para um |
||||||
|
marcador, é só usar `'{nome do marcador}` para simplesmente mover o cursor para o |
||||||
|
primeiro caractere não branco na linha do marcador ou `\`{nome do marcador}` para |
||||||
|
mover o cursor exatamente para a posição do marcador (ambos também em modo |
||||||
|
normal). |
||||||
|
|
||||||
|
Como tudo no VIM, maiúsculas e minúsculas fazem diferença. |
||||||
|
|
||||||
|
Criar um marcador com um nome em minúsculas signifca que o marcador é valido |
||||||
|
somente dentro do arquivo. O marcador "a" do arquivo "arquivo1" não é o mesmo |
||||||
|
marcador "a" do arquivo "arquivo2". Quando um marcador é criado em maiúsculas, |
||||||
|
ele se torna global: Se você fizer `mA` no arquivo "arquivo1" e abrir o arquivo |
||||||
|
"arquivo2", `\`A` irá voltar para o arquivo "arquivo1" (na posição do marcador, |
||||||
|
obviamente). |
||||||
|
|
||||||
|
E como tudo no VIM, sempre existem os comandos mágicos. |
||||||
|
|
||||||
|
## \`\` ou '' |
||||||
|
|
||||||
|
Retorna para a última posição onde foi feito um "pulo". Por exemplo, se você |
||||||
|
está na linha 100 do arquivo atual, e fizer um pulo para o marcador "a" (com `\`a`, |
||||||
|
por exemplo), ``\`\`` irá retorna para a linha 100. Note que isso não gera um |
||||||
|
marcador per se, já que fazer ``\`\`` de novo irá retornar para a posição do |
||||||
|
marcador "a" (pois foi lá que aconteceu o último pulo). |
||||||
|
|
||||||
|
|
||||||
|
## \`. ou '. |
||||||
|
|
||||||
|
Retorna para a última posição onde houve alteração de texto. O exemplo que eu |
||||||
|
posso pensar neste caso é quando você está digitando um comando e não se lembra |
||||||
|
se fez o #include ou import necessário. Neste caso, você simplesmente termina |
||||||
|
de digitar o comando, usa `gg` para ir para o começo do arquivo para verificar se |
||||||
|
o include/import está lá e, se tiver, usa `\`.` para retornar para a posição |
||||||
|
original. |
||||||
|
|
||||||
|
|
||||||
|
## \`[ ou '[ e \`] ou '] |
||||||
|
|
||||||
|
Retorna para a posição onde o texto foi copiado ("yanked") para a área de |
||||||
|
transferência (qualquer área de transferência). `[` irá mover para o primeiro |
||||||
|
caractere copiado e `]` para o último. |
||||||
|
|
||||||
|
|
||||||
|
## \`" ou '" |
||||||
|
|
||||||
|
Move para a última posição do arquivo quando o arquivo foi fechado. Isto |
||||||
|
normalmente é controlado pelo arquivo de inicialização, que veremos mais a |
||||||
|
frente. |
||||||
|
|
||||||
|
E, para ver onde estão as marcas atuais, você só precisa usar `:marks` no modo de |
||||||
|
comando. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="./04-registradores", prev_chapter_title="Registradores", next_chapter_link="./04-registradores", next_chapter_title="Registradores") }} |
Loading…
Reference in new issue