Unix / Linux - Tutorial do Editor vi

Neste capítulo, vamos entender como o editor vi funciona no Unix. Existem muitas maneiras de editar arquivos no Unix. Editando arquivos usando o editor de texto orientado para telavié uma das melhores maneiras. Este editor permite que você edite linhas no contexto com outras linhas no arquivo.

Uma versão melhorada do editor vi que é chamado de VIMtambém foi disponibilizado agora. Aqui, VIM significaVi IMprovado.

vi é geralmente considerado o padrão de fato nos editores Unix porque -

  • Geralmente está disponível em todos os tipos de sistema Unix.

  • Suas implementações são muito semelhantes em todas as áreas.

  • Requer muito poucos recursos.

  • É mais amigável do que outros editores, como o ed ou o ex.

Você pode usar o vieditor para editar um arquivo existente ou para criar um novo arquivo do zero. Você também pode usar este editor para apenas ler um arquivo de texto.

Iniciando o Editor vi

A tabela a seguir lista os comandos básicos para usar o editor vi -

Sr. Não. Comando e Descrição
1

vi filename

Cria um novo arquivo se ele já não existir; caso contrário, abre um arquivo existente.

2

vi -R filename

Abre um arquivo existente no modo somente leitura.

3

view filename

Abre um arquivo existente no modo somente leitura.

A seguir está um exemplo para criar um novo arquivo testfile se já não existir no diretório de trabalho atual -

$vi testfile

O comando acima irá gerar a seguinte saída -

|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]

Você notará um tilde(~) em cada linha após o cursor. Um til representa uma linha não utilizada. Se uma linha não começa com um til e parece estar em branco, há um espaço, tabulação, nova linha ou algum outro caractere não visível presente.

Agora você tem um arquivo aberto para começar a trabalhar. Antes de prosseguirmos, vamos entender alguns conceitos importantes.

Modos de Operação

Ao trabalhar com o editor vi, geralmente encontramos os seguintes dois modos -

  • Command mode- Este modo permite que você execute tarefas administrativas como salvar os arquivos, executar os comandos, mover o cursor, cortar (puxar) e colar as linhas ou palavras, bem como localizar e substituir. Neste modo, tudo o que você digitar é interpretado como um comando.

  • Insert mode- Este modo permite inserir texto no arquivo. Tudo que é digitado neste modo é interpretado como entrada e colocado no arquivo.

vi sempre começa no command mode. Para inserir texto, você deve estar no modo de inserção para o qual basta digitari. Para sair do modo de inserção, pressione oEsc , que o levará de volta ao modo de comando.

Hint- Se você não tiver certeza de qual modo está, pressione a tecla Esc duas vezes; isso o levará para o modo de comando. Você abre um arquivo usando o editor vi. Comece digitando alguns caracteres e depois vá para o modo de comando para entender a diferença.

Saindo do vi

O comando para sair do vi é :q. Uma vez no modo de comando, digite dois-pontos e 'q', seguido por return. Se o seu arquivo foi modificado de alguma forma, o editor irá avisá-lo e não permitirá que você saia. Para ignorar esta mensagem, o comando para sair do vi sem salvar é:q!. Isso permite que você saia do vi sem salvar nenhuma das alterações.

O comando para salvar o conteúdo do editor é :w. Você pode combinar o comando acima com o comando quit ou usar:wq e retorno.

A maneira mais fácil de save your changes and exit vié com o comando ZZ. Quando você estiver no modo de comando, digiteZZ. oZZ comando funciona da mesma maneira que o :wq comando.

Se você deseja especificar / declarar qualquer nome particular para o arquivo, você pode fazê-lo especificando-o após o :w. Por exemplo, se você quiser salvar o arquivo em que está trabalhando como outro nome de arquivo chamadofilename2, você digitaria :w filename2 e retorno.

Movendo dentro de um arquivo

Para se mover dentro de um arquivo sem afetar seu texto, você deve estar no modo de comando (pressione Esc duas vezes). A tabela a seguir lista alguns comandos que você pode usar para mover um caractere por vez -

Sr. Não. Comando e Descrição
1

k

Move o cursor uma linha para cima

2

j

Move o cursor uma linha para baixo

3

h

Move o cursor um caractere para a esquerda

4

l

Move o cursor para a posição de um caractere à direita

Os pontos a seguir devem ser considerados para mover dentro de um arquivo -

  • vi diferencia maiúsculas de minúsculas. Você precisa prestar atenção à capitalização ao usar os comandos.

  • A maioria dos comandos no vi pode ser precedida pelo número de vezes que você deseja que a ação ocorra. Por exemplo,2j move o cursor duas linhas para baixo na localização do cursor.

Existem muitas outras maneiras de se mover dentro de um arquivo no vi. Lembre-se de que você deve estar no modo de comando (press Esc twice) A tabela a seguir lista alguns comandos para mover o arquivo -

Sr. Não. Comando e Descrição
1

0 or |

Posiciona o cursor no início de uma linha

2

$

Posiciona o cursor no final de uma linha

3

w

Posiciona o cursor para a próxima palavra

4

b

Posiciona o cursor na palavra anterior

5

(

Posiciona o cursor no início da frase atual

6

)

Posiciona o cursor no início da próxima frase

7

E

Vai para o final da palavra delimitada em branco

8

{

Move um parágrafo para trás

9

}

Avança um parágrafo

10

[[

Move uma seção para trás

11

]]

Avança uma seção

12

n|

Vai para a coluna n na linha atual

13

1G

Vai para a primeira linha do arquivo

14

G

Vai para a última linha do arquivo

15

nG

Vai para o nth linha do arquivo

16

:n

Vai para o nth linha do arquivo

17

fc

Avança para c

18

Fc

Volta para c

19

H

Vai para o topo da tela

20

nH

Vai para o nth linha do topo da tela

21

M

Vai para o meio da tela

22

L

Mover para a parte inferior da tela

23

nL

Vai para o nth linha da parte inferior da tela

24

:x

Dois pontos seguidos por um número posicionariam o cursor no número da linha representado por x

Comandos de controle

Os seguintes comandos podem ser usados ​​com a tecla de controle para executar funções conforme indicado na tabela abaixo -

Sr. Não. Comando e Descrição
1

CTRL+d

Avança 1/2 tela

2

CTRL+f

Avança uma tela inteira

3

CTRL+u

Retrocede 1/2 tela

4

CTRL+b

Retrocede uma tela inteira

5

CTRL+e

Move a tela uma linha para cima

6

CTRL+y

Move a tela uma linha para baixo

7

CTRL+u

Move a tela 1/2 página para cima

8

CTRL+d

Move a tela 1/2 página para baixo

9

CTRL+b

Move a tela uma página para cima

10

CTRL+f

Move a tela uma página para baixo

11

CTRL+I

Redesenha a tela

Editando Arquivos

Para editar o arquivo, você precisa estar no modo de inserção. Existem muitas maneiras de entrar no modo de inserção a partir do modo de comando -

Sr. Não. Comando e Descrição
1

i

Insere texto antes da localização atual do cursor

2

I

Insere texto no início da linha atual

3

a

Insere texto após a localização atual do cursor

4

A

Insere texto no final da linha atual

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

Excluindo Personagens

Aqui está uma lista de comandos importantes, que podem ser usados ​​para excluir caracteres e linhas em um arquivo aberto -

Sr. Não. Comando e Descrição
1

x

Exclui o caractere sob a localização do cursor

2

X

Exclui o caractere antes da localização do cursor

3

dw

Apaga da localização atual do cursor para a próxima palavra

4

d^

Exclui da posição atual do cursor até o início da linha

5

d$

Exclui da posição atual do cursor até o final da linha

6

D

Exclui da posição do cursor até o final da linha atual

7

dd

Exclui a linha em que o cursor está

Como mencionado acima, a maioria dos comandos no vi podem ser precedidos pelo número de vezes que você deseja que a ação ocorra. Por exemplo,2x exclui dois caracteres sob a localização do cursor e 2dd apaga duas linhas em que o cursor está.

É recomendado que os comandos sejam praticados antes de prosseguirmos.

Comandos de mudança

Você também pode alterar caracteres, palavras ou linhas no vi sem excluí-los. Aqui estão os comandos relevantes -

Sr. Não. Comando e Descrição
1

cc

Remove o conteúdo da linha, deixando você no modo de inserção.

2

cw

Muda a palavra em que o cursor está, passando do cursor para minúsculas w fim da palavra.

3

r

Substitui o caractere sob o cursor. O vi retorna ao modo de comando após a substituição ser inserida.

4

R

Substitui vários caracteres começando com o caractere atualmente sob o cursor. Você deve usarEsc para parar a substituição.

5

s

Substitui o caractere atual pelo caractere digitado. Depois disso, você é deixado no modo de inserção.

6

S

Exclui a linha em que o cursor está e a substitui pelo novo texto. Depois que o novo texto é inserido, o vi permanece no modo de inserção.

Copiar e colar comandos

Você pode copiar linhas ou palavras de um lugar e depois colá-las em outro lugar usando os seguintes comandos -

Sr. Não. Comando e Descrição
1

yy

Copia a linha atual.

2

yw

Copia a palavra atual do caractere em que o cursor w está em minúsculas, até o final da palavra.

3

p

Coloca o texto copiado após o cursor.

4

P

Coloca o texto puxado antes do cursor.

Comandos Avançados

Existem alguns comandos avançados que simplificam a edição do dia-a-dia e permitem o uso mais eficiente do vi -

Sr. Não. Comando e Descrição
1

J

Une a linha atual com a próxima. Uma contagem de comandos j une muitas linhas.

2

<<

Desloca a linha atual para a esquerda em uma largura de deslocamento.

3

>>

Desloca a linha atual para a direita em uma largura de deslocamento.

4

~

Alterna o caso do caractere sob o cursor.

5

^G

Pressione as teclas Ctrl e G ao mesmo tempo para mostrar o nome do arquivo atual e o status.

6

U

Restaura a linha atual ao estado em que se encontrava antes de o cursor entrar na linha.

7

u

Isso ajuda a desfazer a última alteração feita no arquivo. Digitar 'u' novamente fará a alteração.

8

J

Une a linha atual com a próxima. Uma contagem junta tantas linhas.

9

:f

Exibe a posição atual no arquivo em% e o nome do arquivo, o número total do arquivo.

10

:f filename

Renomeia o arquivo atual para filename.

11

:w filename

Grava no arquivo filename.

12

:e filename

Abre outro arquivo com o nome do arquivo.

13

:cd dirname

Altera o diretório de trabalho atual para dirname.

14

:e #

Alterna entre dois arquivos abertos.

15

:n

No caso de você abrir vários arquivos usando o vi, use :n para ir para o próximo arquivo da série.

16

:p

No caso de você abrir vários arquivos usando o vi, use :p para ir para o arquivo anterior da série.

17

:N

No caso de você abrir vários arquivos usando o vi, use :N para ir para o arquivo anterior da série.

18

:r file

Lê o arquivo e o insere após a linha atual.

19

:nr file

Lê o arquivo e o insere após a linha n.

Pesquisa de palavras e caracteres

O editor vi tem dois tipos de pesquisa: string e character. Para uma pesquisa de string, o/ e ?comandos são usados. Ao iniciar esses comandos, o comando recém-digitado será mostrado na última linha da tela, onde você digita a string específica a ser procurada.

Esses dois comandos diferem apenas na direção em que a pesquisa ocorre -

  • o / comando pesquisa para a frente (para baixo) no arquivo.

  • o ? comando pesquisa para trás (para cima) no arquivo.

o n e Nos comandos repetem o comando de pesquisa anterior na mesma direção ou na direção oposta, respectivamente. Alguns caracteres têm significados especiais. Esses caracteres devem ser precedidos por uma barra invertida (\) para ser incluído como parte da expressão de pesquisa.

Sr. Não. Descrição do personagem
1

^

Pesquisa no início da linha (use no início de uma expressão de pesquisa).

2

.

Corresponde a um único caractere.

3

*

Corresponde a zero ou mais do caractere anterior.

4

$

Fim da linha (use no final da expressão de pesquisa).

5

[

Inicia um conjunto de expressões correspondentes ou não correspondentes.

6

<

Isso é colocado em uma expressão escapada com a barra invertida para localizar o final ou o início de uma palavra.

7

>

Isso ajuda a ver o '<'descrição do personagem acima.

A pesquisa de caractere procura em uma linha para encontrar um caractere inserido após o comando. of e F os comandos procuram um caractere apenas na linha atual. f procura para a frente e F procura para trás e o cursor se move para a posição do caractere encontrado.

o t e T comandos procuram por um caractere apenas na linha atual, mas por t, o cursor se move para a posição antes do caractere, e T pesquisa a linha de trás para a posição após o caractere.

Definir comandos

Você pode alterar a aparência da tela do vi usando o seguinte :setcomandos. Assim que estiver no modo de comando, digite:set seguido por qualquer um dos comandos a seguir.

Sr. Não. Comando e Descrição
1

:set ic

Ignora o caso ao pesquisar

2

:set ai

Define recuo automático

3

:set noai

Desfaz a indentação automática

4

:set nu

Exibe linhas com números de linha no lado esquerdo

5

:set sw

Define a largura de um tabstop de software. Por exemplo, você definiria uma largura de deslocamento de 4 com este comando -:set sw = 4

6

:set ws

Se wrapscan estiver definido e a palavra não for encontrada na parte inferior do arquivo, ele tentará pesquisá-la no início

7

:set wm

Se esta opção tiver um valor maior que zero, o editor irá automaticamente "mudar de linha". Por exemplo, para definir a margem de quebra para dois caracteres, você digitaria isto::set wm = 2

8

:set ro

Altera o tipo de arquivo para "somente leitura"

9

:set term

Imprime tipo de terminal

10

:set bf

Descarta caracteres de controle da entrada

Execução de comandos

O vi tem a capacidade de executar comandos de dentro do editor. Para executar um comando, você só precisa ir para o modo de comando e digitar:! comando.

Por exemplo, se você quiser verificar se existe um arquivo antes de tentar salvá-lo com esse nome, você pode digitar :! ls e você verá a saída de ls na tela.

Você pode pressionar qualquer tecla (ou a seqüência de escape do comando) para retornar à sua sessão de vi.

Substituindo Texto

O comando de substituição (:s/) permite que você substitua rapidamente palavras ou grupos de palavras em seus arquivos. A seguir está a sintaxe para substituir o texto -

:s/search/replace/g

o gsignifica globalmente. O resultado desse comando é que todas as ocorrências na linha do cursor são alteradas.

Pontos importantes a serem observados

Os seguintes pontos irão adicionar ao seu sucesso com o vi -

  • Você deve estar no modo de comando para usar os comandos. (Pressione Esc duas vezes a qualquer momento para garantir que você está no modo de comando.)

  • Você deve ter cuidado com os comandos. Eles diferenciam maiúsculas de minúsculas.

  • Você deve estar no modo de inserção para inserir texto.