Workshop de Vim

Bernardo Belchior & Edgar Passos

slides.com/bernardobelchior/workshop-vim

Pequena História

  • Primeiro lançamento em 1991
  • É um clone do editor de text vi
  • É grátis e open source
  • Versão 8 saiu em abril de 2017

Vantagens

  • Alta produtividade
  • Eficiente em termos de memória e espaço
  • Cross-platform
  • Personalizável
  • Grátis

Pré-requisitos

Abrir o vim

$ vim

Sair do vim

:q<Enter>

Obrigado a Todos!

Movimento

Movimento Simples

  • O vim utiliza teclas fora do comum para movimento do cursor
      ^
      k
< h       l >
      j
      v

Porquê?

Por questões de eficiência

 

  • Mover a mão das setas para as letras demora tempo
  • Tempo esse que pode ser dispendido noutro lado

Ex. 1: Movimento Simples

  1. Abrir o ficheiro de texto "exercise1.txt"
  2. Seguir as instruções

Outros Movimentos

É possível mover o cursor usando outros movimentos

início de uma palavra (para trás)

w

início da linha

e

início de uma palavra

b

fim de uma palavra

0

fim da linha

$

início do ficheiro

gg

fim do ficheiro

G

início da linha (sem contar com espaços)

_

Ex. 2: Outros Movimentos

  1. Abrir o ficheiro de texto "exercise2.txt"
  2. Utilizar os comandos do slide anterior para movimentar o cursor

Mas então,

como se escreve?

Editor Modal

  • O vim é modal, isto é, funciona por modos.
  • Num editor de texto normal, pressionar uma tecla implica escrever o seu caracter.

Modo Normal

  • Modo pré-definido
  • Carregar ESC para entrar no modo
  • Executa comandos

Modo de Inserção

  • Modo de escrita
  • Para entrar no modo:
i

Modo Visual

  • Modo de seleção visual
  • Para entrar no modo:
v

Modo Execução

  • Modo de execução de comandos escritos
  • Para entrar no modo, escrever     a partir do modo normal
:

sair

:q

gravar e sair

:wq

gravar

:w

sair e descartar alterações

:q!

Ex. 3: Modos

  1. Entrar no modo de inserção
  2. Escrever texto
  3. Voltar ao modo normal
  4. Entrar no modo visual
  5. Selecionar o texto escrito
  6. Apagar usando a tecla
  7. Entrar no modo de execução
  8. Fechar ficheiro sem guardar alterações
x

Operadores Simples

substituir caracter debaixo do cursor

s

desfazer ação

u

refazer ação

<C-R>

apagar caracter debaixo do cursor

x

colar

p

inserir linha abaixo do cursor

o

Operadores Complexos

Operadores que recebem movimentos  ou objetos para especificar o seu comportamento

Operadores Complexos

alterar

c

copiar

y

apagar

d

Objetos Textuais

  • São objetos que podem ser selecionados e manipulados
  • Exemplos: frases, palavras, etc.
  • Começam sempre por:
    • a - o objeto em si
    • i - dentro do objeto

Objetos Textuais

palavra e espaço seguinte

aw

conteúdo entre aspas

i"

conteúdo entre aspas, incluindo as aspas

a"

palavra

iw

conteúdo dentro de tags XML

i<

conteúdo entre tags XML abertas e fechadas

it

conteúdo e tags XML abertas e fechadas

at

Operações

copiar palavra e espaço seguinte

yaw

alterar conteúdo entre aspas

ci"

apagar conteúdo entre aspas, incluindo as aspas

da"

apagar palavra

diw

copiar conteúdo dentro de tags XML

yi<

selecionar conteúdo entre tags XML abertas e fechadas

vit

alterar conteúdo e tags XML abertas e fechadas

cat

Ex. 4: Operações

Abrir o ficheiro de texto "exercise4.html"

Todos os passos devem ser executados num só comando:

  1. Corrigir a tag "titulo" para "title"
  2. Alterar a class da tag "h1" para "hello-world"
  3. Apagar conteúdo da tag "h1"
  4. Apagar os parâmetros da função "helloWorld"
  5. Alterar corpo da função "helloWorld" e colocar o código comentado antes da função

Outros Comandos

substituir por <character> (replace)

r<character>

tornar maiúscula

gU

até encontrar (find) o próximo <character>

f<character>

repetir 2 vezes um comando

2<command>

até ('till) ao próximo <character>

t<character>

até à próxima ocorrência de <regex>

/<regex>

tornar minúscula

gu

Search & Replace

/<regex>

substituir uma ocorrência

?<regex>

pesquisar

n

pesquisar em sentido inverso

*

próxima ocorrência

%s/<regex>/<substitute>

pesquisar palavra debaixo do cursor

substituir todas as ocorrências

%s/<regex>/<substitute>/g

Registos

  • Guardam texto
  • Identificados com letras
  • Guardar num registo:
  • Colar de um registo:
"<register>y
"<register>p

Macros

  • Macros são comandos guardados que podem ser usados posteriormente
  • Iniciar gravação da macro:
  • Finalizar gravação:
  • Correr macro:
  • Correr última macro:
q<register>
q
@<register>
@@

Correr Comandos do Terminal

  • Correr comandos do terminal:
  • Ver a data de hoje:
  • Ver ficheiros no diretório:
:!<command>
:!date
:!ls

Ler de Fontes Exteriores

  • Comando        permite inserir o resultado do comando seguinte
  • Inserir resultado de um comando do terminal:
:r
:r !ls

Buffers, Janelas, Separadores

  • Buffer: conteúdo aberto
  • Janela: visualização de um buffer
  • Separador: conjunto de janelas

Obrigado a Todos!

Made with Slides.com