User Tools

Site Tools


wiki:linux:vim:funcionalidades

Outras funcionalidades do Vim

1. Undo Tree (Árvore de Desfazer)

O Vim mantém um histórico detalhado de mudanças, que vai além do simples desfazer (undo).

  1. :undotree: Exibe a árvore de desfazer, permitindo visualizar diferentes versões do arquivo e restaurar um estado anterior com precisão.
  2. :earlier e :later: Permitem navegar no histórico de mudanças do arquivo com base em tempo ou número de operações.

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.

  1. Exemplo: `:!ls` executa o comando `ls` no shell.

- `:read ![comando]`: Insere a saída de um comando de shell no arquivo.

  1. Exemplo: `:read !date` insere a data e hora atuais 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.

  1. Exemplo: `ma` marca a posição atual como 'a'.

- ``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.

7. Registros de Corte e Copia (Yank e Delete)

No Vim, tudo que você copia ou deleta é armazenado em registros. Você pode acessar diferentes registros para colar conteúdo específico.

  1. “aY: Copia (yank) a linha atual para o registro 'a'.
  2. “ap: Cola o conteúdo do registro 'a'.
  3. “bd: Deleta o texto selecionado para o registro 'b'.

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.

8. Busca Avançada com Substituição (Substitute)

  • :%s/palavra/nova_palavra/g: Substitui todas as ocorrências de “palavra” por “nova_palavra” no arquivo inteiro.

Exemplo: `:%s/erro/acerto/g` substitui todas as ocorrências da palavra “erro” por “acerto” no arquivo.

  • :%s/palavra/nova_palavra/gc: Substitui todas as ocorrências com confirmação interativa.

Exemplo: `:%s/erro/acerto/gc` perguntará para cada ocorrência se você deseja substituir.

  • :%s/\(foo\)\(bar\)/\2\1/g: Usa grupos de captura e referências na substituição.

Exemplo: `:%s/\(foo\)\(bar\)/\2\1/g` troca todas as ocorrências de “foobar” para “barfoo”.

  • :%s/^/inicio:/g: Adiciona “inicio:” no começo de cada linha.

Exemplo: `:%s/^/inicio:/g` adiciona o prefixo no início de todas as linhas.

9. Integração com Plugins

  • vim-plug: Um gerenciador de plugins popular.

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()
  ```
  • NERDTree: Gerenciador de arquivos com árvore de diretórios.

Exemplo: `:NERDTreeToggle` abre/fecha a árvore de diretórios.

  • fzf.vim: Fuzzy Finder para busca rápida de arquivos.

Exemplo: `:Files` abre a janela de busca de arquivos.

  • vim-fugitive: Integração com Git.

Exemplo: `:Gstatus` exibe o status do repositório Git.

10. Registros Avançados

  • “ayy: Copia (yank) a linha atual para o registro 'a'.

Exemplo: `”ayy”` copia a linha para o registro 'a'.

  • “ap: Cola o conteúdo do registro 'a'.

Exemplo: `”ap”` cola o conteúdo do registro 'a'.

  • :reg: Exibe o conteúdo de todos os registros.

Exemplo: `:reg` lista todos os registros disponíveis.

  • ”+p: Cola o conteúdo do clipboard do sistema.

Exemplo: `“+p` cola o conteúdo do clipboard do sistema no Vim.

  • ctags: Ferramenta que gera um arquivo de tags para facilitar a navegação.

Exemplo: `ctags -R .` gera tags para todos os arquivos do diretório atual.

  • CTRL + ]: Vai para a definição da tag sob o cursor.

Exemplo: Pressione `CTRL + ]` para saltar para a definição da função.

  • CTRL + t: Retorna ao ponto anterior após seguir uma tag.

Exemplo: Pressione `CTRL + t` para voltar à posição anterior.

  • :tselect [nome]: Lista todas as definições de uma tag e permite escolher uma.

Exemplo: `:tselect main` exibe todas as definições de “main”.

12. Abreviações Automáticas

  • :ab [atalho] [expansão]: Cria uma abreviação que será expandida automaticamente.

Exemplo: `:ab brb be right back` faz com que “brb” se expanda para “be right back”.

  • :iab [atalho] [expansão]: Cria uma abreviação apenas no modo de inserção.

Exemplo: `:iab eml MyEmail@example.com` expande “eml” para “MyEmail@example.com”.

  • :unab [atalho]: Remove uma abreviação.

Exemplo: `:unab brb` remove a abreviação definida anteriormente para “brb”.

Conclusão

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.

wiki/linux/vim/funcionalidades.txt · Last modified: by Wiki Administrator