O Vim mantém um histórico detalhado de mudanças, que vai além do simples desfazer (undo).
Exemplo:
:earlier 10m # Volta o arquivo para o estado de 10 minutos atrás :later 5u # Avança 5 operações no histórico de mudanças
### 2. Modo Ex (Comandos do Editor)
O Vim tem uma camada de comandos conhecida como modo Ex, onde você pode interagir diretamente com o editor.
- `:!`: Executa comandos de shell diretamente do Vim.
- `:read ![comando]`: Insere a saída de um comando de shell no arquivo.
—
### 3. Registro e Macro
As macros no Vim permitem automatizar tarefas repetitivas gravando uma sequência de comandos.
- `q[a-z]`: Inicia a gravação de uma macro. Por exemplo, `qa` grava uma macro no registro 'a'. - `@a`: Executa a macro gravada no registro 'a'. - `@@`: Repete a última macro executada.
—
### 4. Personalização com `.vimrc`
O arquivo de configuração do Vim (`.vimrc`) permite personalizar o comportamento do editor. Aqui estão algumas opções úteis para adicionar:
- `set number`: Exibe a numeração das linhas automaticamente. - `set relativenumber`: Mostra números de linha relativos para facilitar a navegação. - `syntax on`: Ativa a sintaxe colorida automaticamente ao abrir arquivos. - `set expandtab`: Converte tabs em espaços. - `set tabstop=4`: Define o número de espaços que um tab ocupa.
Exemplo básico de `.vimrc`: ```vim set number set relativenumber syntax on set expandtab set tabstop=4 set shiftwidth=4 ```
—
### 5. Trabalhando com Marcadores (Marks)
Marcadores permitem que você salve e retorne rapidamente a locais específicos no arquivo.
- `m[a-zA-Z]`: Marca a posição atual do cursor. Usar letras minúsculas marca posições locais ao arquivo atual, enquanto letras maiúsculas podem ser usadas entre arquivos.
- ``a: Retorna à posição marcada com 'a'. - `'`: Move o cursor para a linha da marcação, enquanto o caractere `\`` move para a posição exata da marcação.
—
### 6. Splits e Navegação entre Arquivos
Você já viu alguns comandos de splits, mas o Vim também tem comandos poderosos para abrir e trabalhar com múltiplos arquivos em diferentes modos de janela.
- `:split [arquivo]`: Abre um arquivo em uma nova janela dividida horizontalmente. - `:vsplit [arquivo]`: Abre um arquivo em uma nova janela dividida verticalmente.
Navegação entre janelas: - `CTRL + w + w`: Alterna entre janelas. - `CTRL + w + [hjkl]`: Move para a janela à esquerda, para baixo, para cima ou à direita, respectivamente.
No Vim, tudo que você copia ou deleta é armazenado em registros. Você pode acessar diferentes registros para colar conteúdo específico.
Os registros do Vim também incluem o registro de corte, yank, e registros anônimos.
Continuando com as funcionalidades avançadas do Vim, vamos explorar mais algumas funcionalidades poderosas, como busca avançada com substituição, integração com plugins e manipulação de múltiplos arquivos.
—
Exemplo: `:%s/erro/acerto/g` substitui todas as ocorrências da palavra “erro” por “acerto” no arquivo.
Exemplo: `:%s/erro/acerto/gc` perguntará para cada ocorrência se você deseja substituir.
Exemplo: `:%s/\(foo\)\(bar\)/\2\1/g` troca todas as ocorrências de “foobar” para “barfoo”.
Exemplo: `:%s/^/inicio:/g` adiciona o prefixo no início de todas as linhas.
Exemplo de configuração no `.vimrc`:
```vim
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree' " Gerenciador de arquivos
Plug 'junegunn/fzf.vim' " Fuzzy Finder
Plug 'tpope/vim-fugitive' " Integração com Git
Plug 'vim-airline/vim-airline' " Status bar avançada
call plug#end()
```
Exemplo: `:NERDTreeToggle` abre/fecha a árvore de diretórios.
Exemplo: `:Files` abre a janela de busca de arquivos.
Exemplo: `:Gstatus` exibe o status do repositório Git.
Exemplo: `”ayy”` copia a linha para o registro 'a'.
Exemplo: `”ap”` cola o conteúdo do registro 'a'.
Exemplo: `:reg` lista todos os registros disponíveis.
Exemplo: `“+p` cola o conteúdo do clipboard do sistema no Vim.
Exemplo: `ctags -R .` gera tags para todos os arquivos do diretório atual.
Exemplo: Pressione `CTRL + ]` para saltar para a definição da função.
Exemplo: Pressione `CTRL + t` para voltar à posição anterior.
Exemplo: `:tselect main` exibe todas as definições de “main”.
Exemplo: `:ab brb be right back` faz com que “brb” se expanda para “be right back”.
Exemplo: `:iab eml MyEmail@example.com` expande “eml” para “MyEmail@example.com”.
Exemplo: `:unab brb` remove a abreviação definida anteriormente para “brb”.
O Vim possui uma enorme variedade de funcionalidades que podem ser usadas para personalizar o ambiente de edição e automatizar tarefas repetitivas. Com o uso de registros, tags, macros e plugins, o Vim se torna uma ferramenta extremamente poderosa e flexível, capaz de atender a diferentes estilos de trabalho e necessidades de desenvolvimento.