Ubuntu nano e vim

Mais cedo ou mais tarde você vai precisar mudar uma linha de um arquivo de configuração, às vezes num servidor sem tela gráfica. Para isso existem os editores de texto do terminal. O Ubuntu traz dois: o nano, simples e com os atalhos na tela, e o vi, poderoso mas estranho no começo. Esta aula ensina o nano por completo e o mínimo de vi para você nunca ficar preso nele.

Você vai aprender
  • Abrir, editar, salvar e sair do nano, passo a passo.
  • Buscar, substituir, recortar e colar linhas, ir para uma linha específica.
  • Sobreviver ao vi/vim: entrar no modo de digitação, salvar e sair.
  • Editar arquivos do sistema com segurança usando sudoedit.
  • Quando vale mais usar o editor gráfico.

Editores são programas interativos, de tela cheia. Por isso eles não funcionam no terminal simulado: pratique no seu Ubuntu, de preferência num arquivo de teste.


A ideia: o terminal vira uma folha de papel

Quando você abre um editor, ele ocupa o terminal inteiro. O que você digita vai para o arquivo, e não para o shell. Os comandos do editor (salvar, sair, buscar) são feitos com combinações de teclas, já que não há menus para clicar. Quando você sai, o terminal volta ao prompt.


nano: o editor para começar

O nano é o editor padrão do Ubuntu. Ele mostra os atalhos principais nas duas últimas linhas da tela, então você não precisa decorar nada.

nano
O editor.
lembretes.txt
O arquivo a abrir. Se ele não existir, o nano cria quando você salvar.
$ nano lembretes.txt

A tela fica assim:

  GNU nano 8.7.1                    lembretes.txt
█                                                    ← o cursor: aqui você digita




                               [ Novo arquivo ]
^G Ajuda      ^O Gravar     ^W Onde está? ^K Recortar   ^T Executar   ^C Local
^X Sair       ^R Ler o arq  ^\ Substituir ^U Colar      ^J Justificar ^/ Ir p/ linha

O ^ significa a tecla Ctrl. Então ^O é Ctrl+O e ^X é Ctrl+X. Os atalhos que começam com M- usam a tecla Alt.

Passo a passo: criar, salvar e sair

  1. Abra o arquivo: nano lembretes.txt.
  2. Digite normalmente. Use as setas para andar; Enter para nova linha; Backspace para apagar.
  3. Salve com Ctrl+O (de Output). Na parte de baixo, o nano mostra o nome do arquivo. Aperte Enter para confirmar.
  4. Ele confirma na barra de status: [ Escritas 3 linhas ].
  5. Saia com Ctrl+X.

Se você apertar Ctrl+X sem salvar, o nano pergunta Salvar o buffer modificado? ("buffer" é o texto que você está editando). Responda S para salvar, N para descartar as mudanças, ou Ctrl+C para cancelar e continuar editando.

$ nano lembretes.txt
$ cat lembretes.txt
Pagar a conta de luz
Renovar a CNH
Estudar a aula de permissões

Os atalhos que você vai usar

AtalhoNome na telaO que faz
Ctrl+OGravarSalva (pede confirmação do nome)
Ctrl+S—Salva direto, sem perguntar
Ctrl+XSairSai (pergunta se quer salvar)
Ctrl+WOnde está?Procura um texto. Alt+W vai para a próxima ocorrência
Ctrl+\SubstituirProcura e troca (pergunta a cada ocorrência; A troca todas)
Ctrl+KRecortarRecorta a linha inteira
Ctrl+UColarCola o que foi recortado
Alt+6CopiarCopia a linha sem recortar
Ctrl+/ ou Ctrl+_Ir p/ linhaVai para uma linha (e coluna) específica
Alt+U / Alt+EDesfazer / RefazerDesfaz e refaz a última mudança
Ctrl+CLocalMostra em que linha e coluna você está
Ctrl+GAjudaLista todos os atalhos

Mover linhas: recortar e colar

Para mover uma linha para outro lugar: coloque o cursor nela, Ctrl+K (recorta), leve o cursor até o destino, Ctrl+U (cola). Apertar Ctrl+K várias vezes seguidas recorta várias linhas de uma vez.

Ir direto para uma linha

Uma mensagem de erro diz "erro na linha 42 de /etc/fstab"? Abra o arquivo já na linha certa, com + e o número:

nano
O editor.
+42
Abre com o cursor na linha 42.
config.txt
O arquivo.
$ nano +42 config.txt

Opções úteis ao abrir

OpçãoO que faz
nano -l arquivoMostra o número das linhas na margem
nano -v arquivoModo somente leitura: impossível estragar
nano -B arquivoGuarda uma cópia do original como arquivo~ ao salvar
nano -m arquivoPermite usar o mouse para posicionar o cursor
nano +N arquivoAbre na linha N

Editar arquivos do sistema

Arquivos em /etc pertencem ao root. Se você abrir com nano normal, consegue ler, mas na hora de salvar aparece um erro de permissão. Há duas formas de editar como administrador:

Forma 1: sudoedit (a recomendada)

O sudoedit copia o arquivo para um lugar temporário, abre a cópia no seu editor como seu usuário e, quando você salva e sai, coloca a cópia no lugar do original. O editor nunca roda como root, o que é mais seguro.

sudoedit
Edita um arquivo protegido usando o seu editor, com segurança.
/etc/hosts
O arquivo do sistema a editar.
$ sudoedit /etc/hosts
[sudo: authenticate] Senha:

Ele usa o editor definido na variável EDITOR; no Ubuntu, por padrão, é o nano.

Forma 2: sudo nano

Funciona e é muito comum em tutoriais, mas o nano inteiro roda como root. Prefira o sudoedit.

$ sudo nano /etc/hosts
Antes de editar um arquivo do sistema

Faça uma cópia: sudo cp /etc/hosts /etc/hosts.bak. Se algo der errado, você restaura com sudo cp /etc/hosts.bak /etc/hosts. Um erro em arquivos como /etc/fstab ou /etc/sudoers pode impedir o sistema de iniciar ou tirar seu acesso de administrador. Para o sudoers, use sempre sudo visudo.


vi e vim: o mínimo para sobreviver

O vi existe em praticamente todo Linux, inclusive em servidores mínimos onde o nano não está instalado. No Ubuntu, vi abre o vim.tiny, uma versão enxuta do vim. O vim completo não vem instalado: sudo apt install vim.

Muita gente abre o vi sem querer (às vezes ele é o editor do git ou do crontab) e não consegue sair. Isso acontece porque o vi tem modos:

ModoPara que serveComo entrar
NormalComandos: andar, apagar, copiar. As teclas não digitam texto.É o modo inicial. Esc sempre volta para ele.
InserçãoDigitar texto, como num editor comum.i no modo normal. Aparece -- INSERT -- embaixo.
Linha de comandoSalvar, sair, buscar e substituir.: no modo normal.

A receita de sobrevivência

  1. Abra: vi notas.txt.
  2. Aperte i para entrar no modo de inserção e digite o texto.
  3. Aperte Esc para voltar ao modo normal.
  4. Digite :wq e Enter para salvar (write) e sair (quit).
Comando (depois de Esc)O que faz
:wq ou :xSalva e sai
:wSó salva
:qSai (só se não houver mudanças)
:q!Sai sem salvar, descartando tudo. É a saída de emergência.
/palavraProcura; n vai para a próxima
ddApaga (recorta) a linha
yy / pCopia a linha / cola abaixo
uDesfaz
:set numberMostra o número das linhas
:42Vai para a linha 42
Preso no vi?

Aperte Esc duas vezes, digite :q! e Enter. Você sai sem salvar nada.

Se quiser aprender o vim de verdade, depois de instalar o pacote vim rode vimtutor: é um tutorial interativo de 30 minutos, dentro do próprio editor.


Escolher o editor padrão

Comandos como crontab -e, sudoedit e git commit abrem "o editor padrão". Ele é definido de duas formas:

$ echo $EDITOR
nano
$ sudo update-alternatives --config editor

Para mudar só para você, coloque export EDITOR=nano (ou vim) no seu ~/.bashrc (veja .bashrc, alias, PATH). O update-alternatives muda o padrão de todo o sistema.


Formas diferentes de editar um arquivo

FormaComandoQuando usar
nanonano arquivoEdições rápidas no terminal. O ponto de partida.
vi/vimvi arquivoServidores mínimos, ou quando você já domina o vim.
Editor gráficognome-text-editor arquivoDesktop, arquivos longos, prefere o mouse.
Arquivo do sistemasudoedit /etc/arquivoQualquer arquivo de /etc.
Uma linha só, sem abrir editorecho "texto" >> arquivoAcrescentar uma linha no fim (veja Redirecionamento).
Trocar texto automaticamentesed -i 's/velho/novo/' arquivoMesma troca em muitos arquivos (veja sed).

O editor gráfico do Ubuntu 26.04 é o Editor de Texto (gnome-text-editor). Se você abrir pelo terminal, ele fica ligado ao terminal; acrescente & no fim para continuar usando o prompt: gnome-text-editor notas.txt &.


Quando não funciona

O nano não deixa salvar: "Permissão negada"

O que aconteceu: você abriu um arquivo do sistema sem sudo. Na hora de gravar, o nano mostra um erro de permissão na barra de status.

Como resolver: não perca o que digitou. Grave uma cópia na sua pasta: Ctrl+O, troque o nome por /tmp/hosts-editado e Enter. Saia e copie com sudo cp /tmp/hosts-editado /etc/hosts. Da próxima vez, use sudoedit.

"Não consigo sair do vi"

O que aconteceu: você está no modo de inserção ou o comando foi digitado no modo errado.

Como resolver: Esc, Esc, :q!, Enter.

"Comando 'vim' não encontrado"
$ vim notas.txt
Comando 'vim' não encontrado, mas poder ser instalado com:
sudo apt install vim        # version 2:9.1.2141-1ubuntu4.6, or
sudo apt install vim-gtk3   # version 2:9.1.2141-1ubuntu4.6
sudo apt install vim-motif  # version 2:9.1.2141-1ubuntu4.6
sudo apt install vim-nox    # version 2:9.1.2141-1ubuntu4.6
sudo apt install neovim     # version 0.11.6-1

O que aconteceu: o Ubuntu traz o vi (vim.tiny), mas não o comando vim. O próprio sistema sugere os pacotes que fornecem o comando (os números de versão mudam com o tempo). O "poder" no lugar de "pode" é um erro da tradução original.

Como resolver: use vi, ou instale com sudo apt install vim.

O terminal ficou "travado" depois de Ctrl+S

O que aconteceu: no nano, Ctrl+S salva. Mas fora dele, em alguns terminais, Ctrl+S congela a saída da tela.

Como resolver: aperte Ctrl+Q para descongelar.


Exercícios

1. Salvar no nano

Qual letra, junto com Ctrl, grava o arquivo no nano (o atalho que aparece na barra)?

Ctrl +

2. Sair do vi sem salvar

Depois de apertar Esc, o que você digita para sair do vi descartando as mudanças?

3. Editar com segurança

Complete para editar /etc/hosts do jeito recomendado:

/etc/hosts

4. No nano, o que significa ^K na barra de atalhos?

5. No vi, você apertou teclas e nada foi escrito no arquivo. O que provavelmente aconteceu?


Resumo

  • nano arquivo abre o editor; Ctrl+O grava, Ctrl+X sai, Ctrl+W procura.
  • Ctrl+K recorta e Ctrl+U cola linhas; nano +N abre na linha N.
  • No vi: i para digitar, Esc para sair do modo, :wq salva e sai, :q! sai sem salvar.
  • Para arquivos do sistema, faça um .bak e use sudoedit.