neste capítulo, compreenderemos como funciona o vi Editor em Unix. Há muitas maneiras de editar ficheiros em Unix. A edição de ficheiros utilizando o editor de texto orientado para o ecrã vi é uma das melhores formas. Este editor permite editar linhas em contexto com outras linhas no ficheiro.
Uma versão melhorada do editor vi, que se chama VIM, também foi disponibilizada agora. Aqui, VIM significa Vi IMproved.
vi é geralmente considerado o padrão de facto nos editores Unix porque –
- p> está normalmente disponível em todos os sabores do sistema Unix.
- p>p>As implementações de vi são muito semelhantes em toda a linha.
- p>Requer muito poucos recursos.
- p> É mais fácil de utilizar do que outros editores como o ed ou o ex.
P>Pode usar o editor vi para editar um ficheiro existente ou para criar um novo ficheiro a partir do zero. Também pode usar este editor para ler apenas um ficheiro de texto.
Iniciar o editor vi
A tabela seguinte lista os comandos básicos para usar o editor vi –
Sr.Não. | Command & Description |
---|---|
1 |
vi filename Cria um novo ficheiro se este já não existir, caso contrário abre um ficheiro existente. |
2 |
vi -R nome de ficheiro p>Abrir um ficheiro existente no modo só de leitura. |
3 |
view filename Emprega um ficheiro existente no modo só de leitura. |
Following é um exemplo para criar um novo ficheiro de teste se este já não existir no directório de trabalho actual –
$vi testfile
O comando acima irá gerar a seguinte saída –
|~~~~~~~~~~~~"testfile"
Vai notar um til (~) em cada linha que segue o cursor. Um til representa uma linha não utilizada. Se uma linha não começar com um til e parecer estar em branco, há um espaço, separador, nova linha, ou algum outro carácter não visível presente.
Tem agora um ficheiro aberto para começar a trabalhar. Antes de prosseguirmos, vamos compreender alguns conceitos importantes.
Modos de operação
Enquanto trabalhamos com o editor vi, normalmente deparamos com os dois modos seguintes –
- p>p>Modo de comando – Este modo permite-lhe executar tarefas administrativas tais como guardar os ficheiros, executar os comandos, mover o cursor, cortar (yanking) e colar as linhas ou palavras, bem como encontrar e substituir. Neste modo, o que quer que digite é interpretado como um comando.
- p>Insert mode – Este modo permite-lhe inserir texto no ficheiro. Tudo o que é digitado neste modo é interpretado como entrada e colocado no ficheiro.
vi começa sempre no modo de comando. Para inserir texto, deve estar no modo inserir, para o qual basta digitar i. Para sair do modo inserir, prima a tecla Esc, que o levará de volta ao modo de comando.
P>P>Ponte – Se não tiver a certeza em que modo está, prima a tecla Esc duas vezes; isto irá levá-lo ao modo de comando. Abre-se um ficheiro utilizando o editor vi. Comece por digitar alguns caracteres e depois chegue ao modo de comando para compreender a diferença.
Sair do vi
O comando para sair do vi é :q. Uma vez no modo de comando, digite dois pontos, e ‘q’, seguido de retorno. Se o seu ficheiro tiver sido modificado de alguma forma, o editor avisá-lo-á disso, e não o deixará sair. Para ignorar esta mensagem, o comando para sair do vi sem guardar é :q!. Isto permite-lhe sair do vi sem guardar nenhuma das alterações.
O comando para guardar o conteúdo do editor é :w. Pode combinar o comando acima com o comando quit, ou usar :wq e return.
A forma mais fácil de guardar as suas alterações e sair do vi é com o comando ZZ. Quando estiver no modo de comando, digite ZZ. O comando ZZ funciona da mesma forma que o comando :wq.
Se quiser especificar/estatualizar algum nome em particular para o ficheiro, pode fazê-lo especificando-o após o comando :w. Por exemplo, se quisesse guardar o ficheiro em que estava a trabalhar como outro nome de ficheiro chamado filename2, escreveria :w filename2 e retornaria.
Movendo dentro de um ficheiro
Para se mover dentro de um ficheiro sem afectar o seu texto, tem de estar no modo de comando (prima Esc duas vezes). A tabela seguinte lista alguns comandos que pode utilizar para se mover um carácter de cada vez –
Sr.No. | Command & Description |
---|---|
1 |
k Moves o cursor para cima uma linha |
2 |
j Moves o cursor para baixo uma linha |
3 |
h Moves o cursor à esquerda da posição de um carácter |
4 |
l Mover o cursor para a direita de um carácter position |
Os seguintes pontos devem ser considerados para mover-se dentro de um ficheiro –
- p>vi é o casosensível. É necessário prestar atenção à capitalização ao utilizar os comandos.
- p>p>Os comandos no vi podem ser preferidos pelo número de vezes que se deseja que a acção ocorra. Por exemplo, 2j move o cursor duas linhas abaixo da localização do cursor.
Há muitas outras formas de mover-se dentro de um ficheiro no vi. Lembre-se que deve estar no modo de comando (prima Esc duas vezes). A tabela seguinte lista alguns comandos para se mover dentro de um ficheiro –
Dada abaixo é a lista de comandos para se mover dentro do ficheiro.
Sr.No. | Command & Description |
---|---|
1 |
0 ou | Posiciona o cursor no início de uma linha |
2 |
Posiciona o cursor no fim de uma linha |
3 |
w Posiciona o cursor para a palavra seguinte |
4 |
b Posiciona o cursor para a palavra anterior palavra |
5 |
( p>Posiciona o cursor para o início da frase actual |
6 |
) Posiciona o cursor para o início da frase seguinte |
7 |
E Moves to the end of the blank delimitado palavra |
8 |
{ p>P>Passar um parágrafo para trás |
9 |
} p>P>Passar um parágrafo para a frente |
10 |
] P>Moves a section forward |
12 |
n||/p> P>Moves à coluna n no linha actual |
13 |
1G Moves à primeira linha do ficheiro |
G Moves até à última linha do ficheiro |
|
15 |
nG Moves to the nth line of the file |
16 |
n Moves to the nth line of the file |
17 |
fc Moves forward to c |
18 |
Fc Moves voltar a c |
19 |
H Moves to the top of the screen |
20 |
nH Moves to the nth line do topo do ecrã |
>21 |
M Moves to the middle of the screen |
22 |
L Move para a parte inferior do ecrã |
23 |
nL Moves to the nth line from the bottom of the screen |
24 |
x Colo seguido de um número posicionaria o cursor sobre o número da linha representado por x |
Comandos de Controlo
Os seguintes comandos podem ser utilizados com a Chave de Controlo para executar as funções como indicado na tabela abaixo –
Dada a lista de comandos de controlo
Sr.No. | Command & Description |
---|---|
1 |
CTRL+d Moves forward 1/2 screen |
2 |
CTRL+f Moves forward one full screen |
3 |
CTRL+u Moves backward 1/2 screen |
4 |
CTRL+b Moves backward one full screen |
5 |
CTRL+e p>Moves the screen up one line |
6 |
CTRL+y Moves the screen down one line |
7 |
CTRL+u Moves the screen up 1/2 page |
8 |
CTRL+d Moves the screen down 1/2 page |
9 |
CTRL+b Moves the screen up one page |
10 |
CTRL+f Moves the screen down one page |
11 |
CTRL+I Redraws the screen |
Editing Files
Para editar o ficheiro, é necessário estar no modo de inserção. Há muitas maneiras de entrar no modo inserir a partir do modo de comando –
Sr.No. | Command & Descrição |
---|---|
1 |
i Insere texto antes da localização actual do cursor |
2 |
I Inserir texto no início da linha actual |
3 |
p>a Inserir texto após a localização actual do cursor |
A Insere texto no fim da linha actual |
5 |
o Cria uma nova linha para entrada de texto abaixo da localização do cursor |
6 |
O Cria uma nova linha para entrada de texto acima da localização do cursor |
Eliminar Caracteres
Aqui está uma lista de comandos importantes, que pode ser utilizado para apagar caracteres e linhas num ficheiro aberto –
Sr.No. | Command & Description |
---|---|
1 |
x Delete o caracter sob a localização do cursor |
2 |
X Apaga o carácter antes da localização do cursor |
3 |
dw Apaga o carácter antes da localização do cursor |
d^ Apaga o carácter antes da localização do cursor |
|
5 |
d$ Deletes da posição actual do cursor para o fim da linha |
6 |
D Deletes from the cursor position to the end of the current line |
7 |
dd Deletes the line the cursor is on |
As mentioned above, a maioria dos comandos no vi podem ser pré-configurados pelo número de vezes que se deseja que a acção ocorra. Por exemplo, 2x elimina dois caracteres sob a localização do cursor e 2dd elimina duas linhas em que o cursor está ligado.
Recomenda-se que os comandos sejam praticados antes de prosseguirmos.
Alterar Comandos
Tem também a capacidade de alterar caracteres, palavras, ou linhas no vi sem os eliminar. Aqui estão os comandos relevantes –
Sr.No. | Command & Description | |
---|---|---|
1 |
cc Retira o conteúdo da linha, deixando-o em modo de inserção. |
|
2 |
cw Altera a palavra que o cursor está ligado do cursor para a minúscula w final da palavra. |
|
3 |
r Substitui o caracter sob o cursor. vi retorna ao modo de comando após a introdução da substituição. |
|
4 |
R Overescreve múltiplos caracteres que começam com o caracter actualmente sob o cursor. Deve usar Esc para parar a sobreescrita. |
|
5 |
s Substitui o caracter actual pelo caracter que escreve. Posteriormente, é deixado no modo inserir. |
|
6 |
S P>Delete a linha em que o cursor está e substitui-a pelo novo texto. Após a introdução do novo texto, o vi permanece no modo de inserção. |
Copiar e Colar Comandos
P>Pode copiar linhas ou palavras de um lugar e depois colá-las noutro lugar usando os seguintes comandos –
Sr.No. | Command & Description |
---|---|
1 |
yy Copies the current line. |
2 |
yw Copia a palavra corrente do caractere em minúsculas, até ao fim da palavra. |
3 |
p p>Põe o texto copiado após o cursor. |
>4 |
P p>Põe o texto puxado antes do cursor. |
Comandos Avançados
Existem alguns comandos avançados que simplificam a edição diária e permitem uma utilização mais eficiente do vi –
Dada a lista abaixo está a lista de comandos avançados.
Sr.No. | Command & Description |
---|---|
1 |
J Joins a linha actual com a seguinte. Uma contagem de comandos j junta muitas linhas. |
2 |
<< Muda a linha actual para a esquerda por uma largura de turno. |
3 |
>> Desvia a linha actual para a direita por uma largura de um turno. |
4 |
~~ p>>Comuta a caixa do caracter sob o cursor. |
5 |
^G p>Pressiona as teclas Ctrl e G ao mesmo tempo para mostrar o nome do ficheiro actual e o estado. |
6 |
U p> Restaura a linha actual ao estado em que se encontrava antes de o cursor introduzir a linha. |
7 |
u Isto ajuda a desfazer a última alteração que foi feita no ficheiro. Ao digitar ‘u’ novamente, a alteração será refeita. |
8 |
J Joins a linha actual com a seguinte. Uma contagem junta muitas linhas. |
9 |
:f Exibe a posição actual no ficheiro em % e o nome do ficheiro, o número total do ficheiro. |
10 |
:f nome do ficheiro Renomeia o ficheiro actual para nome de ficheiro. |
11 |
:w nome do ficheiro Escreve o nome do ficheiro actual para nome de ficheiro. |
12 |
:e nome de ficheiro P>Openso outro ficheiro com nome de ficheiro. |
13 |
:cd dirname Altera o directório de trabalho actual para dirname. |
14 |
:e # Altera entre dois ficheiros abertos. |
15 |
:n No caso de abrir vários ficheiros usando vi, use :n para ir para o próximo ficheiro da série. |
16 |
:p Caso abra vários ficheiros utilizando o vi, utilize :p para ir ao ficheiro anterior da série. |
17 |
:N Caso abra vários ficheiros utilizando o vi, utilize :N para ir ao ficheiro anterior da série. |
18 |
:r ficheiro p>Lê ficheiro e insere-o após a linha actual. |
19 |
:nr ficheiro Lê ficheiro e insere-o após a linha n. |
Pesquisa de palavras e caracteres
O editor vi tem dois tipos de pesquisas: string e carácter. Para uma pesquisa de corda, são utilizados os comandos / e ?. Quando se iniciam estes comandos, o comando apenas digitado será mostrado na última linha do ecrã, onde se digita a string particular a procurar.
Estes dois comandos diferem apenas na direcção em que a pesquisa tem lugar –
-
O comando / procura para a frente (para baixo) no ficheiro.
- p> O comando ? pesquisa para trás (para cima) no ficheiro.
Os comandos n e N repetem o comando de pesquisa anterior na mesma direcção ou na direcção oposta, respectivamente. Alguns caracteres têm significados especiais. Estes caracteres devem ser precedidos por uma barra invertida (\) para serem incluídos como parte da expressão de pesquisa.
Sr.No. | Caracter &Descrição |
---|---|
1 |
^ Procura no início da linha (Usar no início de uma expressão de procura). |
2 |
P>Corresponde a um único carácter. |
3 |
**/p> Corresponde a zero ou mais do carácter anterior. |
4 |
End of the line (Utilização no fim da expressão de pesquisa). |
5 |
[ p> Inicia um conjunto de expressões de correspondência ou não correspondência. |
6 |
< Isto é colocado numa expressão que escapou com a barra invertida para encontrar o final ou o início de uma palavra. |
7 |
> Isto ajuda a ver a descrição dos caracteres ‘<‘ acima. |
A pesquisa de caracteres procura dentro de uma linha para encontrar um caracter introduzido após o comando. Os comandos f e F procuram apenas um carácter na linha actual. f procura para a frente e F procura para trás e o cursor move-se para a posição do carácter encontrado.
Os comandos t e T procuram apenas um carácter na linha actual, mas para t, o cursor move-se para a posição antes do carácter, e T procura a linha para trás para a posição depois do carácter.
Configurar Comandos
P>Pode alterar a aparência e a sensação do ecrã do seu vi utilizando os seguintes comandos :set. Uma vez no modo de comando, digite :set seguido de qualquer um dos seguintes comandos.
Sr.No. | Command & Description |
---|---|
1 |
:set ic Ignora o caso ao pesquisar |
2 |
:set ai Sets autoindent |
3 |
set noai Unsets autoindent |
4 |
:set nu Displays lines with line numbers on the left side |
5 |
:set sw Define a largura de um separador de software. Por exemplo, definir-se-ia uma largura de turno de 4 com este comando – :set sw = 4 |
6 |
:set ws Se wrapscan estiver definido, e a palavra não for encontrada no fundo do ficheiro, tentará procurá-la no início |
7 |
:set wm Se esta opção tiver um valor superior a zero, o editor “embrulhará” automaticamente a palavra. Por exemplo, para definir a margem de enrolamento para dois caracteres, digitaria isto: :set wm = 2 |
8 |
:set ro Altera o tipo de ficheiro para “read only” |
9 |
set term Imprime tipo de terminal |
10 |
:set bf Discards control characters from input |
Comandos de execução
O vi tem a capacidade de executar comandos de dentro do editor. Para executar um comando, basta ir para o modo de comando e digitar :! command.
Por exemplo, se quiser verificar se existe um ficheiro antes de tentar guardar o seu ficheiro com esse nome, pode digitar :! ls e verá a saída de ls no ecrã.
Pode premir qualquer tecla (ou a sequência de escape do comando) para regressar à sua sessão vi.
Substituir Texto
O comando de substituição (:s/) permite-lhe substituir rapidamente palavras ou grupos de palavras dentro dos seus ficheiros. Segue-se a sintaxe para substituir texto –
:s/search/replace/g
O g significa global. O resultado deste comando é que todas as ocorrências na linha do cursor são alteradas.
Pontos Importantes a Observar
Os seguintes pontos irão acrescentar ao seu sucesso com vi –
-
Você deve estar em modo de comando para usar os comandos. (Prima Esc duas vezes em qualquer altura para se certificar de que está em modo de comando.)
-
Deve ter cuidado com os comandos. Estes são sensíveis a maiúsculas/minúsculas.
- p>Tem de estar em modo inserir texto.