103.8 Lição 1
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
103 Comandos GNU e Unix |
Objetivo: |
103.8 Edição básica de arquivos |
Lição: |
1 de 1 |
Introdução
Na maioria das distribuições Linux, o vi
— abreviatura de “visual” — já vem pré-instalado e é o editor padrão do ambiente shell. O vi é um editor de texto interativo, que mostra o conteúdo do arquivo na tela à medida que ele é editado. Como tal, permite ao usuário mover-se e fazer modificações em qualquer parte do documento. No entanto, ao contrário dos editores visuais de uma área de trabalho gráfica, o editor vi
é um aplicativo do shell com atalhos de teclado para todas as tarefas de edição.
Uma alternativa ao vi
, chamada vim
(vi improved), é algumas vezes usada como um substituto moderno do vi
. Dentre outras melhorias, o vim
oferece suporte para realce de sintaxe, desfazer/refazer multinível e edição de documentos múltiplos. Embora tenha mais recursos, o vim
é totalmente compatível com as versões anteriores do vi
, sendo ambos indistinguíveis para a maioria das tarefas.
A maneira padrão de iniciar o vi
é fornecer a ele um caminho para um arquivo como parâmetro. Para pular diretamente para uma linha específica, o número dela deve ser informado com um sinal de mais, como em vi +9 /etc/fstab
para abrir /etc/fstab/
e posicionar o cursor na 9ª linha. Sem um número, o sinal de mais sozinho coloca o cursor na última linha.
A interface do vi
é muito simples: todo o espaço disponível na janela do terminal é ocupado para apresentar um arquivo, normalmente informado como um argumento de comando, ao usuário. As únicas dicas visuais são uma linha de rodapé mostrando a posição atual do cursor e um til ~
indicando onde o arquivo termina. Existem diferentes modos de execução para o vi
nos quais o comportamento do programa muda. Os mais comuns são: modo de inserção e modo normal.
Modo de inserção
O modo de inserção é bem direto: o texto vai aparecendo na tela conforme é digitado no teclado. É o tipo de interação que a maioria dos usuários espera de um editor de texto, mas não é assim que o vi
apresenta um documento logo de cara. Para entrar no modo de inserção, o usuário precisa executar um comando de inserção no modo normal. A tecla Esc conclui o modo de inserção e retorna ao modo normal, o modo padrão do vi
.
Note
|
Se quiser saber mais sobre os outros modos de execução, abra o :help vim-modes-intro |
Modo normal
O modo normal — também conhecido como modo de comando — é como o vi
inicia por padrão. Neste modo, as teclas do teclado são associadas a comandos de navegação e a tarefas de manipulação de texto. A maioria dos comandos neste modo são teclas únicas. Eis algumas das teclas e suas funções no modo normal:
0
,$
-
Ir para o início e o fim da linha.
1G
,G
-
Ir para o início e o fim do documento.
(
,)
-
Ir para o início e o fim da frase.
{
,}
-
Ir para o início e o fim do parágrafo.
w
,W
-
Pular palavra e pular palavra incluindo a pontuação.
h
,j
,k
,l
-
Pra esquerda, pra baixo, pra cima, pra direita.
e
orE
-
Ir para o fim da palavra atual.
/
,?
-
Pesquisa para a frente e para trás.
i
,I
-
Entrar no modo de inserção antes da posição atual do cursor e no início da linha atual.
a
,A
-
Entrar no modo de inserção após a posição atual do cursor e no final da linha atual.
o
,O
-
Adicionar uma nova linha e entrar no modo de inserção na próxima linha ou na linha anterior.
s
,S
-
Apagar o caractere sob o cursor ou a linha inteira e entrar no modo de inserção.
c
-
Alterar o(s) caractere(s) sob o cursor.
r
-
Substituir o caractere sob o cursor.
x
-
Excluir os caracteres selecionados ou o caractere sob o cursor.
v
,V
-
Iniciar uma nova seleção com o caractere atual ou a linha inteira.
y
,yy
-
Copia (arranca) o(s) caracter(es) ou a linha inteira.
p
,P
-
Colar o conteúdo copiado, antes ou depois da posição atual.
u
-
Desfazer a última ação.
Ctrl-R
-
Refazer a última ação.
ZZ
-
Fechar e salvar.
ZQ
-
Fechar e não salvar.
Se precedido por um número, o comando será executado o mesmo número de vezes. Por exemplo, pressione 3yy
para copiar a linha atual mais as duas seguintes, pressione d5w
para deletar a palavra atual e as 4 palavras seguintes, e assim por diante.
A maioria das tarefas de edição são combinações de vários comandos. Por exemplo, a sequência de teclas vey
é usada para copiar uma seleção começando na posição atual até o final da palavra atual. A repetição de comandos também pode ser usada em combinações, então v3ey
copiaria uma seleção começando na posição atual até o final da terceira palavra a partir de lá.
O vi
pode organizar o texto copiado em registros, permitindo manter conteúdos distintos ao mesmo tempo. Um registro é especificado por um caractere precedido por "
e, uma vez criado, é mantido até o final da sessão atual. A seqüência de teclas "ly
cria um registro contendo a seleção atual, que estará acessível através da tecla l
. Então, o registro l
pode ser colado com "lp
.
Também existe uma maneira de definir marcas personalizadas em posições arbitrárias ao longo do texto, sendo assim mais fácil alternar rapidamente entre elas. As marcas são criadas pressionando a tecla m
e, em seguida, uma tecla para endereçar a posição atual. Feito isso, o cursor voltará para a posição marcada quando '
seguido pela tecla escolhida for pressionada.
Qualquer sequência de teclas pode ser gravada como uma macro para execução futura. Podemos gravar uma macro, por exemplo, para colocar um texto selecionado entre aspas duplas. Primeiro, uma string de texto é selecionada e a tecla q
é pressionada, seguida por uma tecla de registro que será associada à macro, como d
. A linha recording @d
aparecerá na linha de rodapé, indicando que a gravação está ativada. Presume-se que já haja algum texto selecionado, então o primeiro comando é x
para remover (e copiar automaticamente) o texto selecionado. A tecla i
é pressionada para inserir duas aspas duplas na posição atual, e depois Esc para retornar ao modo normal. O último comando é P
, para inserir novamente a seleção excluída antes da última aspa dupla. Pressionar q
novamente encerrará a gravação. Agora, uma macro que consiste na sequência de teclas x
, i
, ""
, Esc e P
será executada toda vez que as teclas @d
forem pressionadas no modo normal, sendo d
a tecla de registro associada à macro.
No entanto, a macro estará disponível apenas durante a sessão atual. Para tornar as macros persistentes, elas devem ser armazenadas no arquivo de configuração. Como a maioria das distribuições modernas usa o vim como editor compatível com vi, o arquivo de configuração do usuário é ~/.vimrc
. Dentro de ~/.vimrc
, a linha let @d = 'xi""^[P'
define o registro d
para a sequência de teclas entre aspas simples. O mesmo registro atribuído anteriormente a uma macro pode ser usado para colar sua sequência de teclas.
Comandos de dois pontos
O modo normal também suporta outro conjunto de comandos vi
: os comandos de dois pontos. Os comandos de dois pontos, como o nome indica, são executados após pressionar a tecla de dois pontos : no modo normal. Os comandos de dois pontos permitem ao usuário realizar pesquisas, salvar, sair, executar comandos do shell, alterar as configurações do vi
, etc. Para voltar ao modo normal, executamos o comando :visual
ou pressionamos a tecla Enter sem qualquer comando. Indicamos a seguir alguns dos comandos de dois pontos mais comuns (a inicial não faz parte do comando):
:s/REGEX/TEXT/g
-
Substituir todas as ocorrências da expressão regular
REGEX
porTEXT
na linha atual. Ele aceita a mesma sintaxe do comandosed
, incluindo endereços. :!
-
Rodar um comando do shell a seguir.
:quit
or:q
-
Sair do programa.
:quit!
or:q!
-
Sair do programa sem salvar.
:wq
-
Salvar e sair.
:exit
or:x
or:e
-
Salvar e sair, se necessário.
:visual
-
Voltar ao modo de navegação.
O programa vi
padrão é capaz de realizar a maioria das tarefas de edição de texto, mas qualquer outro editor não-gráfico pode ser usado para editar arquivos de texto no ambiente shell.
Tip
|
Os usuários novatos podem ter dificuldade para memorizar todas as teclas de comando do |
Editores alternativos
Os usuários não familiarizados com o vi
podem ter dificuldade de adaptação a ele, pois seu funcionamento não é intuitivo. Uma alternativa mais simples é o nano
do GNU, um pequeno editor de texto que oferece todos os recursos básicos de edição de texto como desfazer/refazer, realce de sintaxe, busca e substituição interativa, recuo automático, números de linha, completar palavras, bloqueio de arquivos, arquivos de backup e suporte à internacionalização. Ao contrário do vi
, todas as teclas pressionadas são simplesmente inseridas no documento que está sendo editado. Os comandos no nano
são dados usando a tecla Ctrl ou a tecla Meta (dependendo do sistema, Meta é Alt ou ⌘).
Ctrl-6
orMeta-A
-
Iniciar uma nova seleção. Também é possível criar uma seleção pressionando Shift e movendo o cursor.
Meta-6
-
Copiar a seleção atual.
Ctrl-K
-
Cortar a seleção atual.
Ctrl-U
-
Colar o conteúdo copiado.
Meta-U
-
Desfazer.
Meta-E
-
Refazer.
Ctrl-\
-
Substituir o texto na seleção.
Ctrl-T
-
Iniciar uma sessão de verificação ortográfica para o documento ou seleção atual.
O Emacs é outro editor de texto muito popular para o ambiente de shell. Ao passo que o texto é inserido com a digitação simples, como no nano
, a navegação é auxiliada por comandos do teclado, como no vi
. O Emacs inclui muitos recursos que o tornam mais do que apenas um editor de texto. Também é um IDE (ambiente de desenvolvimento integrado) capaz de compilar, executar e testar programas. O Emacs pode ser configurado como cliente de email, notícias ou RSS, tornando-o um verdadeiro pacote de produtividade.
O próprio shell executa um editor de texto padrão, normalmente o vi
, sempre que necessário. É o que acontece, por exemplo, quando crontab -e
é executado para editar cronjobs. O Bash usa as variáveis de sessão VISUAL
ou EDITOR
para encontrar o editor de texto padrão para o ambiente shell. Por exemplo, o comando export EDITOR=nano
define o nano
como editor de texto padrão na sessão do shell atual. Para tornar essa mudança persistente entre as sessões, o comando deve ser incluído em ~/.bash_profile
.
Exercícios Guiados
-
O
vi
é usado principalmente como editor de arquivos de configuração e código-fonte, onde a indentação ajuda a identificar seções de texto. Uma seleção pode ser recuada para a esquerda pressionando<
e para a direita pressionando>
. Quais teclas devem ser pressionadas no modo normal para recuar a seleção atual três passos para a esquerda? -
Uma linha inteira pode ser selecionada pressionando
V
no modo normal dovi
. No entanto, o caractere de término da nova linha também será incluído. Quais teclas devem ser pressionadas no modo normal para selecionar a partir do caractere inicial até o caractere de nova linha, sem incluí-lo? -
Como o
vi
deve ser executado na linha de comando para abrir~/.bash_profile
e pular direto para a última linha? -
Quais teclas devem ser pressionadas no modo normal do
vi
para excluir caracteres desde a posição atual do cursor até o caractere de ponto final seguinte?
Exercícios Exploratórios
-
O
vim
permite selecionar blocos de texto com largura arbitrária, não apenas seções com linhas inteiras. Ao pressionar Ctrl+V no modo normal, uma seleção é feita movendo o cursor para cima, para baixo, para a esquerda e para a direita. Usando esse método, como excluir um bloco começando no primeiro caractere da linha atual, contendo as próximas oito colunas e cinco linhas de texto? -
Uma sessão do
vi
foi interrompida por uma falha de energia inesperada. Ao reabrir o arquivo, ovi
pergunta ao usuário se deseja recuperar o arquivo de troca (uma cópia automática feita pelovi
). O que o usuário deve fazer para descartar o arquivo de troca? -
Em uma sessão do
vim
, uma linha foi previamente copiada para o registrol
. Qual combinação de teclas gravaria uma macro no registroa
para colar a linha do registrol
imediatamente antes da linha atual?
Resumo
Esta lição trata do editor de texto padrão para o ambiente shell do Linux: o editor vi
. Embora intimidante para o usuário novato, o vi
possui recursos que o tornam uma boa escolha para a edição técnica e não técnica de texto. A lição segue as seguintes etapas:
-
Uso básico e recursos úteis do
vi
. -
O que é o
vim
— ovi
aprimorado — e outros editores alternativos. -
Como definir o editor de texto padrão para o ambiente do shell.
Os comandos e procedimentos abordados foram:
-
O editor
vi
e sua versão aprimoradavim
. -
Edição de texto básica no
vi
. -
Os editores alternativos
emacs
enano
.
Respostas aos Exercícios Guiados
-
O
vi
é usado principalmente como editor de arquivos de configuração e código-fonte, onde a indentação ajuda a identificar seções de texto. Uma seleção pode ser recuada para a esquerda pressionando<
e para a direita pressionando>
. Quais teclas devem ser pressionadas no modo normal para recuar a seleção atual três passos para a esquerda?As teclas
3<
, que indicam três passos para a esquerda. -
Uma linha inteira pode ser selecionada pressionando
V
no modo normal dovi
. No entanto, o caractere de término da nova linha também será incluído. Quais teclas devem ser pressionadas no modo normal para selecionar a partir do caractere inicial até o caractere de nova linha, sem incluí-lo?As teclas
0v$h
, que significam0
(“pular para o início de uma linha”),v
(“iniciar a seleção de caracteres”),$
(“ir ao final da linha”) eh
(“voltar uma posição”). -
Como o
vi
deve ser executado na linha de comando para abrir~/.bash_profile
e pular direto para a última linha?O comando
vi + ~/.bash_profile
abre o arquivo e posiciona o cursor na última linha. -
Quais teclas devem ser pressionadas no modo normal do
vi
para excluir caracteres desde a posição atual do cursor até o caractere de ponto final seguinte?As teclas
dt.
, que significamd
(“iniciar a exclusão”),t
(“pular para o próximo caractere”) and.
(caractere de ponto final).
Respostas aos Exercícios Exploratórios
-
O
vim
permite selecionar blocos de texto com largura arbitrária, não apenas seções com linhas inteiras. Ao pressionar Ctrl+V no modo normal, uma seleção é feita movendo o cursor para cima, para baixo, para a esquerda e para a direita. Usando esse método, como excluir um bloco começando no primeiro caractere da linha atual, contendo as próximas oito colunas e cinco linhas de texto?A combinação
0
,Ctrl-V
e8l5jd
seleciona e remove o bloco correspondente. -
Uma sessão do
vi
foi interrompida por uma falha de energia inesperada. Ao reabrir o arquivo, ovi
pergunta ao usuário se deseja recuperar o arquivo de troca (uma cópia automática feita pelovi
). O que o usuário deve fazer para descartar o arquivo de troca?Pressionar
d
quando solicitado pelovi
. -
Em uma sessão do
vim
, uma linha foi previamente copiada para o registrol
. Qual combinação de teclas gravaria uma macro no registroa
para colar a linha do registrol
imediatamente antes da linha atual?A combinação
qa"lPq
, que significaq
(“iniciar a gravação da macro”),a
(“atribuir o registroa
à macro”),"l
(“selecionar o texto no registrol
”),P
(“colar antes da linha atual”) eq
(“encerrar a gravação da macro”).