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.
- 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
- Abra o arquivo:
nano lembretes.txt. - Digite normalmente. Use as setas para andar; Enter para nova linha; Backspace para apagar.
- Salve com Ctrl+O (de Output). Na parte de baixo, o nano mostra o nome do arquivo. Aperte Enter para confirmar.
- Ele confirma na barra de status:
[ Escritas 3 linhas ]. - 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
| Atalho | Nome na tela | O que faz |
|---|---|---|
| Ctrl+O | Gravar | Salva (pede confirmação do nome) |
| Ctrl+S | — | Salva direto, sem perguntar |
| Ctrl+X | Sair | Sai (pergunta se quer salvar) |
| Ctrl+W | Onde está? | Procura um texto. Alt+W vai para a próxima ocorrência |
| Ctrl+\ | Substituir | Procura e troca (pergunta a cada ocorrência; A troca todas) |
| Ctrl+K | Recortar | Recorta a linha inteira |
| Ctrl+U | Colar | Cola o que foi recortado |
| Alt+6 | Copiar | Copia a linha sem recortar |
| Ctrl+/ ou Ctrl+_ | Ir p/ linha | Vai para uma linha (e coluna) específica |
| Alt+U / Alt+E | Desfazer / Refazer | Desfaz e refaz a última mudança |
| Ctrl+C | Local | Mostra em que linha e coluna você está |
| Ctrl+G | Ajuda | Lista 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ção | O que faz |
|---|---|
nano -l arquivo | Mostra o número das linhas na margem |
nano -v arquivo | Modo somente leitura: impossível estragar |
nano -B arquivo | Guarda uma cópia do original como arquivo~ ao salvar |
nano -m arquivo | Permite usar o mouse para posicionar o cursor |
nano +N arquivo | Abre 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
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:
| Modo | Para que serve | Como entrar |
|---|---|---|
| Normal | Comandos: andar, apagar, copiar. As teclas não digitam texto. | É o modo inicial. Esc sempre volta para ele. |
| Inserção | Digitar texto, como num editor comum. | i no modo normal. Aparece -- INSERT -- embaixo. |
| Linha de comando | Salvar, sair, buscar e substituir. | : no modo normal. |
A receita de sobrevivência
- Abra:
vi notas.txt. - Aperte i para entrar no modo de inserção e digite o texto.
- Aperte Esc para voltar ao modo normal.
- Digite
:wqe Enter para salvar (write) e sair (quit).
| Comando (depois de Esc) | O que faz |
|---|---|
:wq ou :x | Salva e sai |
:w | Só salva |
:q | Sai (só se não houver mudanças) |
:q! | Sai sem salvar, descartando tudo. É a saída de emergência. |
/palavra | Procura; n vai para a próxima |
dd | Apaga (recorta) a linha |
yy / p | Copia a linha / cola abaixo |
u | Desfaz |
:set number | Mostra o número das linhas |
:42 | Vai para a linha 42 |
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
| Forma | Comando | Quando usar |
|---|---|---|
| nano | nano arquivo | Edições rápidas no terminal. O ponto de partida. |
| vi/vim | vi arquivo | Servidores mínimos, ou quando você já domina o vim. |
| Editor gráfico | gnome-text-editor arquivo | Desktop, arquivos longos, prefere o mouse. |
| Arquivo do sistema | sudoedit /etc/arquivo | Qualquer arquivo de /etc. |
| Uma linha só, sem abrir editor | echo "texto" >> arquivo | Acrescentar uma linha no fim (veja Redirecionamento). |
| Trocar texto automaticamente | sed -i 's/velho/novo/' arquivo | Mesma 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 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.
O que aconteceu: você está no modo de inserção ou o comando foi digitado no modo errado.
Como resolver: Esc, Esc, :q!, Enter.
$ 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 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)?
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:
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 arquivoabre o editor; Ctrl+O grava, Ctrl+X sai, Ctrl+W procura.- Ctrl+K recorta e Ctrl+U cola linhas;
nano +Nabre na linha N. - No vi: i para digitar, Esc para sair do modo,
:wqsalva e sai,:q!sai sem salvar. - Para arquivos do sistema, faça um
.bake usesudoedit.