Saltar para o conteúdo
101 · LPIC-1 (parte 1)

103.8 Edição básica de ficheiros com o vi

TópicoT17ObjetivoEditar ficheiros de texto básico usando o editor viPeso2PáginasLPIC-1 (101) - Version 5.0

Resumo Conciso

Conceitos básicos do vi

  • Editor de texto padrão em sistemas Linux
  • Trabalha em dois modos: comando e inserção
  • Vim é o aprimorado do vi (compatível com vi)
  • Para sair de qualquer modo: <Esc> para voltar ao modo comando

Modos do vi

ModoAcessoDescrição
Comando<Esc>Navega, edita, copia, cola
Inserçãoi, I, a, A, o, ODigita texto
Edição de linha:Comandos ex (salvar, sair, substituir)
TeclaDescrição
hEsquerda
jBaixo
kCima
lDireita
wAvança uma palavra
bVolta uma palavra
eVai até o final da palavra
0Início da linha
$Fim da linha
ggInício do ficheiro
GFim do ficheiro
<PgDown> ou <Ctrl>fUma página para baixo
<PgUp> ou <Ctrl>bUma página para cima

Entrando no modo de inserção

TeclaDescrição
iInsere antes do cursor
IInsere no início da linha
aInsere depois do cursor
AInsere no fim da linha
oAbre linha abaixo
OAbre linha acima

Edição no modo comando

TeclaDescrição
xDeleta caractere
ddDeleta linha
d$Deleta até fim da linha
yyCopia linha
pCola abaixo
PCola acima
uDesfaz alteração
<Ctrl>rRefaz alteração
dwDeleta palavra
ywCopia palavra

Substituindo texto

bash
:s/antigo/novo/          # Substitui primeira ocorrência na linha:s/antigo/novo/g         # Substitui todas na linha:%s/antigo/novo/g        # Substitui todas no ficheiro:%s/antigo/novo/gc       # Substitui com confirmação

Para uma referência completa de expressões regulares, ver T16 — Pesquisar usando expressões regulares.

ComandoDescrição
/padraoPesquisa para frente
?padraoPesquisa para trás
nPróxima ocorrência
NOcorrência anterior
:Número de linha específica

Salvando e saindo

ComandoDescrição
:wSalva (write)
:qSai (quit)
:wqSalva e sai
:q!Sai sem salvar
ZZSalva e sai (atalho)
:xSalva e sai

Outros comandos úteis

ComandoDescrição
:set numberMostra números de linha
:set nonumberOculta números de linha
~Troca maiúscula/minúscula
JJunta linha atual com próxima
rSubstitui caractere
RSubstitui caracteres (overwrite)

Comando cut (mencionado na lição)

bash
cut -c1-10 ficheiro.txt             # Imprime colunas 1 a 10cut -c5-10 ficheiro.txt            # Imprime colunas 5 a 10cut -c1-10 ficheiro.txt | head -5  # Primeiras 5 linhascut -c1-10 ficheiro.txt | wc -l    # Conta linhas

Exercícios Guiados

Exercício Guiado 1 — Atalhos e movimentação

  1. Crie uma cópia de /etc/apt/sources.list:

    bash
    $ cp /etc/apt/sources.list ~/sources.list
  2. Abra o ficheiro com vi e edite cada linha removendo a opção [arch=amd64]:

    bash
    $ vi ~/sources.list
    • Use Esc para voltar ao modo comando
    • Use /[arch=amd64] para pesquisar
    • Use dw para deletar palavras

Exercício Guiado 2 — Copiar e colar

  1. Abra o ficheiro /etc/apt/sources.list:

    bash
    $ vi sources.list
  2. Use :set number para ver números de linha

  3. Navegue para a linha 15, corte-a e cole após a linha 23:

    bash
    15Gdd23Gp
  4. Navegue para a linha 10 e copie-a para depois da linha 18:

    bash
    10Gyy18Gp
  5. Navegue para a linha 5 e copie de lá até o final:

    bash
    5Gy$
  6. Navegue para a última linha e cole:

    bash
    Gp
  7. Salve e saia: :wq

Exercício Guiado 3 — Substituir e salvar

  1. Abra o ficheiro /etc/apt/sources.list:

    bash
    $ vi sources.list
  2. Substitua deb-src por deb:

    bash
    :%s/deb-src/deb/gc
  3. Salve e saia: :wq

Exercício Guiado 4 — Edição com cut

  1. Imprima as primeiras 10 linhas do ficheiro /usr/share/common-licenses/GFDL-1.1:

    bash
    $ cut -c1-10 /usr/share/common-licenses/GFDL-1.1 | head -10
  2. Conte as linhas de 1 a 10:

    bash
    $ cut -c1-10 /usr/share/common-licenses/GFDL-1.1 | head -10 | wc -l
  3. Imprima coluna específica:

    bash
    $ cut -c5-10 /usr/share/common-licenses/GFDL-1.1 | head -10

Exercícios Exploratórios

  1. Criar e manipular ficheiro de texto:
bash
$  $ cat > mytextfile.txt << EOF   This is line 1   This is line 2   This is line 3   This is line 4   EOF$  $ vi mytextfile.txt
  • Aprenda a mover com h, j, k, l
  • Use dd para deletar linhas
  • Use yy e p para copiar/colar
  • Use :wq para salvar e sair
  1. Pratique substituição de texto:
bash
$  $ vi mytextfile.txt
  • Substitua "line" por "linha": :%s/line/linha/gc
  • Desfaça: u
  • Refaça: <Ctrl>r
  1. Navegue por expressão regular:
bash
$  $ vi mytextfile.txt
  • Pesquise "line": /line
  • Vá para próxima ocorrência: n
  • Vá para ocorrência anterior: N
  1. Pratique copiar e colar blocos:
bash
$  $ vi mytextfile.txt
  • Copie 3 linhas: 3yy
  • Cole 5 vezes: 5p
  • Delete 2 linhas: 2dd
  1. Salve com diferente extensão:
bash
$  $ vi mytextfile.txt
  • Salve como novo ficheiro: :w newfile.txt
  • Salve como HTML: :w newfile.html