Tutorial Linux – Parte 2

Tutorial Linux

Esse tutorial é dividido em várias partes e elas podem ser vistas na página Tutorial Linux.

Capítulo 2. O editor vi

O editor vi foi criado por Bill Joy aproximadamente em 1975, em Berkeley. Ao contrário da maioria dos editores de seu tempo, o vi provia uma interface que permitia que o texto fosse visualizado enquanto era editado.

A maneira anterior de editar textos era usado um editor orientado a linha. Sistemas UNIX ainda trazem um editor de linha chamado ed por padrão. Esses editores eram usados em terminais burros ou até mesmo usando uma impressora como saída de todo o processo de edição, sem terminal.

Há vários motivos para não se usar o vi. A edição modal é um conceito ultrapassado, os comandos são crípticos e nada intuitivos. As implementações mais antigas, como as que vêm em sistemas UNIX comerciais trazem poucas facilidades de recuperação em caso de erro e um sistema de expressões regulares ultrapassado. Os comandos do editor são muitas vezes inconsistentes, as mensagens de erro são curtas e pouco explicativas, não há ajuda online, a barreira de entrada para iniciantes é muito alta.

Isso dito, o vi ainda é o editor padrão em sistemas UNIX, está disponível em qualquer lugar, tem implementações para todos os sistemas operacionais imagináveis, e, principalmente, funciona. O vi, uma vez aprendido, é fácil e prático de usar, suporta edição avançada, é prático e leve.

2.1. Os modos

O vi tem dois modos. O primeiro modo é o modo de comando, em que é possível usar as teclas para passar comandos ao editor. No modo de edição, as teclas inserem texto.

2.2. Criando seu primeiro texto

Vamos criar nosso primeiro texto com o vi. Execute o vi rodando:

$ vi [nome-de-arquivo]

A tela inicial do vi contém apenas linhas vazias (marcadas por ~). Se você passou um nome de arquivo como parâmetro, ele será aberto e o conteúdo mostrado na tela. Se o arquivo passado não existe, assim que gravado ele será criado.

2.3. O básico

Quando inicia, o vi está no chamado modo de comando. Nesse modo, as teclas são utilizadas para a execução de comandos e movimentação do cursor (algumas implementações mais recentes do vi permitem que a movimenteção do cursos em modo de edição).

Você pode entrar no modo de inserção com a tecla i. Uma vez no modo de inserção é só digitar o texto:

Esse é um pequeno texto
escrito com o vi_
~
~

O vi, por padrão, não quebra linhas automaticamente (mesmo que no terminal elas apareçam quebradas). É necessário apertar Enter para que as quebras sejam inseridas.

Para sair do modo de inserção e entrar no modo de comando, aperte a tecla Esc. Apesar de não haver mudança visível na tela (exceto possivelmente pelo recuo do cursor em um caracter) agora é possível entrar comandos e mover o cursor. Mexa o cursor pelo texto usando as seguintes teclas:

Tecla Movimento
k Move o cursor uma linha para cima
j Move o cursor uma linha para baixo
h Move o cursor uma coluna para esquerda
l Move o cursor uma coluna para direita

Tabela 2.1: Teclas de movimentação de cursor.

Em alguns terminais e teclados, é possível usar as teclas de direção para mover o cursor. É recomendável evitar esse hábito. As teclas de caracteres são universais, funcionam mesmo no mais primitivo dos terminais. Além disso, elas são reconhecidas por vários outros comandos, como o more, que dependendo da implementação podem não reconhecer as teclas de direção. Além disso, o uso de teclas de caracteres mantém as mãos na parte certa do teclado, dando mais agilidade ao uso do vi. Mais adiante neste capítulo daremos mais informações sobre os comandos para movimentação de cursor.

Tecla Comando
i Insere o texto na posição do cursor (insert).
I Insere o texto no início da linha.
a Insere o texto à direita do cursor (append).
A Insere o texto no fim da linha.
o Insere uma linha abaixo do cursor (open line).
O Insere uma linha na posição do cursor.
s Insere o texto no lugar do caractere sob o cursor.
S Insere o texto no lugar do caractere sob o cursor.
R Entra em modo replace que sobrescreve os caracteres.

Tabela 2.2: Teclas inserção.

Mova agora o cursor para o fim da segunda linha. Se você apertar i para entrar em modo de inserção, os caracteres que você inserir entrarão antes do último caractere da linha. Use a tecla a para começar a escrever do lado direito do cursor.

Após terminar sua edição, volte para o modo de comando com Esc. O vi possui os comandos : que são utilizados para operações que requerem informações do usuário (como o nome do arquivo para gravar). Para entrar com um comando : basta teclar :. Neste momento você poderá entrar com o comando na última linha do terminal. O comando para gravar arquivos em disco é o :w. Digite-o e tecle Enter.

Se você abriu o vi sem especificar o nome do arquivo será necessário informa-lo ao comando :w:

:w nome_do_arquivo

Finalmente, para sair do editor, utilize o comando :q (você pode ainda salvar e sair ao mesmo tempo usando 😡 no lugar de w, ou ainda apertando ZZ no modo de comando). Se você desejar sair sem salvar as alterações em disco basta utilizar o comando :q! onde ! é usado para ‘forçar’ a execução dos comandos.

2.4. Movimentação do cursor

Já foi dito que em alguns terminais pode-se fazer uso de teclas como Home, Page Up, e as setas de direção. Entretanto, na maioria dos terminais UNIX disponíveis essas teclas não funcionarão. Para esses casos o vi possui comandos de movimentação de cursor em seu modo de comando.

2.4.1. Movendo-se por palavras

Movimentação caracter-por-caractere não é muito prática. Uma maneira mais rápida de movimentar-se dentro de uma linha é usando as teclas e e b.

Tecla Comando
e Move para o fim da palavra.
E Move para o fim da palavra e não para em pontuação.
b Move para o início da palavra.
B Move para o início da palavra e não para em pontuação.

Tabela 2.3: Teclas de movimentação.

A diferença das teclas maiúsculas é perceptível em texto como “levante-se”. Se o cursor estiver em cima da letra l, apertar e leva o cursor para a seguinte posição:

levante-se

Apertar E leva o cursor para a posição a seguir:

levante-se

Coisa análoga acontece com os comandos e e E.

2.4.2. Movendo-se entre várias linhas e palavras

No vi, a maioria dos comandos pode ser multiplicada precedendo o comando pela quantidade de vezes que ele deve ser executado. É possível, portanto, mover 4 linhas para baixo usando o comando 4j. Isso vale para linhas, palavras e para uma infinidade de outros comandos. É possível, por exemplo, mover-se duas palavras à direita usando o comando 2e.

2.4.3. Movendo-se entre as linhas

No modo de comando, digite :<númerodalinha><Enter> para ir direto a uma determinada linha. Por exemplo, :13<Enter> vai para a linha 13. Finalmente, para mostrar em que linha você está, digite Ctrl+G.

Tecla Comando
G Move para o fim do arquivo.
:$ Move para o fim do arquivo.
$ Move para o fim da linha.
^ Move para o começo da linha (texto).
0 Move para a coluna 0 (começo da linha)

Tabela 2.4: Comandos de movimentação.

Existe também uma forma de se executar o vi que faz com que ele abra um arquivo e já posicione o cursor numa linha determinada:

$ vi +num_linha arquivo

2.4.4. Movendo-se pela tela

Os comandos para se mover pela tela são:

Tecla Comando
H Move o cursor para o topo da tela
M Move o cursor para o centro da tela
L Move o cursor para o fim da tela

Tabela 2.5: Comandos para movimentação de cursor na tela.

Os equivalentes a Page Up e Page Down são:

Tecla Comando
Ctrl+D Mover meia tela abaixo
Ctrl+U Mover meia tela acima
Ctrl+F Mover uma tela abaixo
Ctrl+B Mover uma tela acima

Tabela 2.6: Comandos para movimentação.

2.5. Copiando, cortando e colando textos

O vi apresenta também recursos de copia, corte e colagem de textos. Algumas implementações mais modernas do vi (como o vim) apresentam o modo visual que pode ser usado para marcar textos de forma mais simples. Para entrar em modo visual basta usar o comando v no modo de comando e marcar o texto movimentando o cursor. Teclar Ctrl+V no modo visual irá habilitar o modo de colunas. Esse modo é bastante útil, principalmente, para programadores.

Explicaremos adiante como proceder para copiar, cortar e colar textos em implementações de vi que não possuem o modo visual.

2.5.1. Uma nota sobre os comandos que manipulam texto

Comandos de manipulação de texto funcionam digitando o comando em questão (como y para copiar) e seguido por uma das teclas especiais de movimentação de texto. Por exemplo, y$ copia o texto até o fim da linha.

2.5.2. Copiando e cortando

O comando para copiar texto é y (mnemônico: yank). Após o comando, segue-se um parâmetro para escolher a área a ser copiada. O comando d funciona de maneira quase idêntica:

Tecla Comando
yw ou dw Copia ou recorta até o fim da palavra
yy ou dd Copia ou recorta a linha
y$ ou y$ Copia ou recorta até o fim da linha
yG ou dG Copia ou recorta até o fim do arquivo

Tabela 2.7: Comandos de cópia e recorte de texto.

2.5.3. Colando o texto

Os comandos para colar texto são:

Tecla Comando
P Cola texto na linha atual
p Cola texto na linha abaixo

Tabela 2.8: Comandos para colagem de textos.

Caso o texto copiado não seja uma linha completa, os dois comandos colam no lugar do cursor.

2.6. Procurando texto

Os comando de busca de textos do vi são: / e ?. O recurso de procura e procura/troca de textos do vi é muito poderoso pois utiliza-se de expressões regulares para efetuar as suas buscas. Um resumo sobre as expressões regulares será visto no capítulo 6. Por hora vamos nos preocupar apenas com as buscas simples de texto.

Os comandos de procura de textos funcionam de forma semelhante ao comando :. Após acionados o cursor se move para a parte inferior do terminal para que seja digitado o texto a ser procurado. A sintaxe dos comandos de busca é:

Tecla Comando
/<texto|expressão-regular> Procura o texto na direção do fim de arquivo
?<texto|expressão-regular> Procura o texto na direção do começo de arquivo

Tabela 2.9: Comandos de procura de textos.

Note aqui mais uma característica do vi: normalmente, uma tecla realiza um comando, e seu oposto é realizado pela mesma tecla com Shift apertado.

Tecla Comando
n Repete a busca
N Repete a busca em sentido oposto

Tabela 2.10: Comandos para repetir buscas.

2.7. Substituindo texto

O comando de busca e substituição de texto é semelhante ao comando de busca simples, e também funciona na linha de comando do vi.

<área>s/<expressão-regular>/<texto a colocar>/<modificador>

Aqui, área é a parte do arquivo em que a busca deve ser feita. Vamos ficar com o caso comum, que é usar o modificador % para indicar “todo o arquivo”. Se o modificador for omitido, a busca é feita só na linha atual.

O modificador tem também uma série de valores possíveis, mas os mais úteis são g e c. Se não for usado o g (global), a substituição é limitada à primeira ocorrência de cada linha. O modificador c pede confirmação de cada substituição. É possível combinar modificadores.

2.8. Um comentário final

O vi é um editor de textos bastante críptico, e não há nada nele que sequer vagamente lembre facilidade de uso. Isso deixado de lado, para o profissional, o vi é uma ferramenta ágil, universal, leve e prontamente disponível para todos os sistemas operacionais. Apesar de ter uma curva de aprendizado incrivelmente íngrime, o benefício de se familiarizar com o vi vale o esforço. Persistência é a palavra chave para uso do vi. E vale a pena.

Continua…

Publicado por

Osvaldo Santana

Desenvolvedor Python e Django, Empreendedor, dono de uma motocicleta esportiva, hobbysta de eletrônica, fã de automobilismo e corinthiano