Como sair do editor vim

Sair do editor Vim, embora seja fácil, parece ser uma tarefa ingrata para muitos usuários novatos.
Tenho alguns textos sobre como usar e configurar o vim e, recentemente, me surpreendi com a quantidade de pessoas que perguntam justamente como se faz para finalizar o editor.
A resposta curta é a que segue.
Comece por teclar ‘Esc’, para sair do modo de inserção do editor. Em seguida:

  • tecle :wq e ‘Enter’, para gravar (write) e sair (quit) ou
  • tecle :q! e ‘Enter’, para sair arbitrariamente do editor — ele sequer vai pedir confirmação.

Como sair do editor vim

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.


Seja como for, não entre em desespero.
O método, no vídeo abaixo, é totalmente inadequado para terminar o vim… ou qualquer outro programa.

Editor vi avançado

Neste texto, vamos abordar alguns comandos, recursos e técnicas para usar o editor de textos vi, de maneira mais avançada.
No texto Editor vi básico, mostramos uma série de comandos para iniciantes — incluindo 2 papéis de parede com a relação de comandos básicos do vi, para ajudar a memorizar.
vi text editor
Este post é voltado para usuários que desejam poupar tempo e escrever (código de programação ou outros textos) com mais eficiência — fazendo uso de recursos avançados, que o livram do trabalho repetitivo.

O vi é um editor de textos tradicional no UNIX/Linux. Foi muito popular, mas os termos da sua licença não eram 100% livres (até 2002).
Isto abriu caminho para vários editores compatíveis — como o nvi e o elvis. O Vim, é também um deles.
Em muitas distribuições Linux, ao digitar ‘vi’, o Vim é o que será executado.

Vamos ao que interessa! 😉

Como fazer busca de strings dentro do editor vi

Segue a lista de referência rápida, para encontrar strings dentro de um arquivo aberto no vi.
Funciona igual às páginas do manual do sistema (comando man) ou ao player de música cmus.

  • /   — faz a busca pela próxima ocorrência da string, no texto
  • ?   — faz a busca (pra trás) pela ocorrência anterior da string escolhida
  • /^   — faz a busca pela ocorrência da string em inícios de linha
  • /.   — faz a busca pela ocorrência de um único caractere
  • /*   — faz a busca por qualquer caractere presente após a string
  • /$   — faz a busca pela ocorrência da string em fins de linha
  • n   — move o cursor para a próxima ocorrência durante a busca
  • N   — move o cursor para a ocorrência anterior durante a busca

Como fazer busca e substituição de texto no vi

Para completar a lista, acima, veja como encontrar strings no texto e susbstituí-las:

  • :s/string-atual/string-nova   — encontra a string atual e substitui pela nova
  • :s/string-atual/string-nova/g   — encontra a string atual e substitui pela nova, em uma linha
  • :%s/string-atual/string-nova/g   — encontra a string atual e substitui pela nova, em um arquivo

Faça ajustes no vi, com o comando set

  • :set ic   — ignore case, ou seja, passa ignorar a caixa (se maiusculas ou minúsculas) dos caracteres, durante as buscas
  • :set number ou :set nu   — liga a exibição da numeração das linhas na tela
  • :set nonu   — desliga a exibição da numeração das linhas na tela
  • :set ai   — liga a autoindentação
  • :set noai   — desliga a autoindentação
  • :set list   — liga a exibição de caracteres invisíveis
  • :set nolist   — desliga a exibição de caracteres invisíveis
  • :set sw=n   — ajusta a largura do shift para o valor de n
  • :set wm=n   — ajusta a margem de palavra para o valor definido em n
  • :set ws   — ao encontrar o final do arquivo, recomeça a busca do começo
  • :set bf   — para descartar caracteres de controle do input
  • :set ro   — altera o modo de acesso do arquivo para “apenas leitura” (read only
  • :set showmatch   — liga exibição de pares de parênteses à medida em que forem digitados
  • :set noshowmatch   — desliga exibição de pares de parênteses à medida em que forem digitados
  • :set showmode   — exibe o modo do editor, na linha de status
  • :set noshowmode   — oculta o modo do editor.
  • :set term   — mostra o tipo de terminal
  • :set all   — mostra valores de todos os possíveis tamanhos

Mais comandos

  • J   — junta duas linhas
  • ~   — altera a caixa de um caractere
  • U   — restaura o estado de uma linha, desfazendo alterações
  • u   — defaz a última alteração
  • Ctrl + G   — exibe o nome do arquivo e status
  • :f   — exibe a posição atual do arquivo em %, nome do arquivo e o número total de arquivos
  • :f nome-do-arquivo   — renomeia o arquivo atual para nome-do-arquivo
  • :f nome-do-arquivo   — grava o conteúdo atual para nome-do-arquivo
  • :e nome-do-arquivo   — abre
  • :new nome-do-arquivo   — abre novo arquivo, com o nome dado
  • :n   — se tiver múltiplos arquivos abertos, este comando move para o próximo arquivo da fila
  • :p ou :N   — se tiver múltiplos arquivos abertos, um destes comandos para mover o foco para o anterior da fila
  • :r nome-do-arquivo   — lê e posiciona o conteúdo de nome-do-arquivo após a linha atual do cursor
  • :nr nome-do-arquivo   — lê e posiciona o conteúdo de nome-do-arquivo após a linha n
  • :cd nome-do-diretorio   — altera o diretório atual
  • G   — move o cursor para a última linha
  • nG ou :n   — move o cursor para a linha n

Referência

http://www.ctrlageeks.com/advanced-vi-editor/.

Introdução ao editor de textos vi

O vi é um editor de textos orientado à tela, ou screen-oriented, originalmente criado para uso no ambiente do sistema operacional UNIX.
vim logo
O nome “vi” é uma abreviação para “visual editor”
Atualmente, o Vim tem se tornado mais comum e presente em muitas distribuições Linux. Tudo o que falarmos, neste post, serve para ele também.

Editores visuais, também chamados de editores de tela cheia ou screen-oriented são programas que exibem o texto editado, na tela, à medida em que são alterados.
Todos os editores GUI se encaixam nesta categoria e, talvez, você não conheça nenhum outro tipo.
Entre os editores CLI, contudo, há a categoria baseada em linhas, ou line-oriented, que são muito pouco usados

Não esqueça de clicar nos links do texto, para se aprofundar mais em algum assunto e dar uma olhada na sessão de referências, ao final, para obter mais informações.

Modos de operação do vi

O vi pode se apresentar em 2 modos de operação:

  1. Modo de comando — em que se executam as tarefas administrativas: gravar arquivos, abrir novos arquivos, executar comandos relacionados aos arquivos, mover o cursor, cortar/copiar/colar texto, encontrar/substituir texto etc.
  2. modo de edição/texto — em que o usuário pode editar seu texto.

Como escrever um programa, usando o editor vi

Veja como abrir, escrever o código, gravar e sair do editor vi.
Neste exemplo, vou mostrar como escrever um pequeno programa em Python, mas você pode readequar cada passo do exemplo da maneira que lhe convier.
Comece por abrir um terminal.
A seguir abra o vi com um novo arquivo:

vi hello.py

O vi já abre no modo de comando — onde ainda não é possível inserir texto novo.
Para começar a inserir caracteres, tecle ‘i’.
Em seguida, pode digitar o código:

print "Ola, nerds!"

Para gravar, é preciso entrar no command mode. Para isto, tecle ‘Esc”.
Agora, tecle ‘:w’, para gravar seu teto
Para sair do editor, tecle ‘:q’, ainda dentro modo de comando.
Você pode também usar ‘:wq’, para gravar e sair.
Se cometer erros de digitação, durante a edição do arquivo, tecle ‘Esc’ para entrar no command mode.
Use as teclas direcionais, para se movimentar e ‘x’ para apagar caracteres sob o cursor.
Se quiser inserir caracteres, use o ‘i’.

Saiba mais

O vi não é complicado. Mas a gente precisa de um tempo para entender sua lógica e aprender seus comandos.
Com o tempo ele vai ficando mais fácil e editar arquivos de configuração, bem como escrever alguns scripts para a manutenção do sistema, vai se tornando cada vez mais natural.
Se quiser aprofundar o seu aprendizado no vi, não se esqueça de dar uma olhada nestes outros textos:

Referências

https://www.ccsf.edu/Pub/Fac/vi.html.
http://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxa400/bpxug135.htm.
https://en.wikipedia.org/wiki/Visual_editor.
http://www.learnpython.org/en/Hello,_World!.

Como forçar o realce de sintaxe no vim

O editor de texto vi ou vim costuma detectar automaticamente a sintaxe correta a ser realçada, em função da linguagem de programação usada.
Em inglês, este recurso é chamado de syntax highlighting.
O editor de textos, no caso, confia na extensão de cada arquivo, para determinar o syntax highlighting a ser usado.
Mas, se você estiver editando um arquivo com código em PHP, mas a extensão dele é diferente de ‘.php’, isto pode não permitir ao vim realçar adequadamente as palavras-chave, as strings, as variáveis etc.
Caso não esteja, o realce de sintaxe pode ser ativado, genericamente, com o comando:

:set syntax=on

Se você quiser um realce específico, então indique a linguagem:

:set syntax=python
:set syntax=perl

Para desligar, use ‘off’:

:set syntax=off

Onde encontrar as linguagens de programação suportadas

Você pode encontrar a relação de arquivos de configuração do realce de sintaxe, para as diversas linguagens de programação suportadas pelo vim (versão 7.x), no diretório /usr/share/vim/vim74/syntax/
Use o comando ‘ls’ para ver o conteúdo deste diretório.
diretorio de configuração do vim

Como resolver a sintaxe de 2 linguagens em um mesmo arquivo?

Programadores PHP, por exemplo, frequentemente precisam mixar HTML no meio do código.
Usualmente, o vim consegue resolver bem este tipo de situação.
Algumas vezes, contudo, ele “esquece” qual a linguagem do realce, em determinado ponto (PHP? HTML?) 😮
Neste caso, use o comando ‘Ctrl+L’ para refrescar a tela.
Se, ainda assim, o problema não se resolver, ajuste o parâmetro ‘php_minlines’ no arquivo de configuração .vimrc:

let php_minlines=500

O padrão costuma ser 100 linhas.

Referências

http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions.

Tabulação no vim. Como indentar corretamente o seu código.

Este post é para aquelas pessoas que acreditam que a indentação é muito mais do que uma questão de mera estética.
Código bom, começa com uma boa indentação e comentários pertinentes.
Fora disso, é a barbárie! 😉
vim editor on kde
Há vários padrões de indentação, contudo. Alguns usuários preferem uma tabulação um pouco mais distante da margem, outros preferem um espaçamento menor entre uma tabulação e outra etc.
Neste post, vamos abordar como configurar o editor de textos vi, para organizar a tabulação do jeito que você acha melhor.
Veja alguns modelos populares de indentação:

  • Tabulações ou tabs com a largura de 8 colunas e cada nível de indentação corresponde a um tab — popular no kernel do Linux
  • Tabs com largura de 4 colunas e cada nível de indentação corresponde a um tab — comum entre desenvolvedores Windows (Visual Studio)
  • Cada nível de indentação tem 4 espaçamentos. A tabulação não é usada — comum entre programadores Java

Veja, a seguir, como ajustar cada item, direto na interface do programa e no arquivo de configurações.
Para teste, estamos usando o Ubuntu 16.04 LTS (também chamado Xenial Xerus)com a versão 7.4 do Vim.
Para saber qual a versão do aplicativo, use a opção ‘–version’:

vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 16 2016 10:50:38)

Conceitos de tabulação, indentação etc.

Vamos entender alguns conceitos e parâmetros, que podem ser usados para configurar a tabulação e a indentação dentro do texto.

  • tabstop —   determina quantas colunas são inseridas para cada vez que for pressionada a tecla Tab.
    É o único que afeta um texto já existente. Os outros, afetarão o texto que for escrito, daqui em diante.
  • expandtab —   quando ajustado, pressionar a tecla Tab, no modo de inserção, irá produzir o número apropriado de espaços.
  • shiftwidth —   controla quantas colunas e texto são indentadas com as operações de reindentações.
  • softtabstop —   controla quantas colunas o vim usa quando a tecla Tab é pressionada, no modo de inserção.
    Se o ‘softtabstop’ tem valor inferior ao ‘tabstop’ e o ‘expandtab’ não estiver ligado, o vim irá usar a combinação de tabulações e espaços para obter o espaçamento desejado.
    Se o ‘softabstop’ for igual ao ‘tabstop’ e o ‘expandtab’ não estiver ligado, o vim só usará tabulações.
    Quando o ‘expandtab’ estiver ligado, o vim irá usar sempre o número apropriado de espaços.

A melhor maneira de entender é experimentando. Vejamos alguns exemplos, fáceis de aplicar.
vim tab and indent

Indentação na vida real

Lembre-se, somente o ‘tabstop’, terá efeito imediato, dentro do texto que você for usar para aplicar os exemplos.
Os outros ajustes só terão efeitos perceptíveis, à medida em que você inserir texto novo.
O primeiro exemplo, reproduz o tipo mais usado por desenvolvedores do kernel Linux, de que já falamos acima.
Para obter tabulações com largura de 8 colunas e cada nível de indentação com uma só tabulação:

:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

O próximo exemplo, é o do Visual Studio.
Para obter tabulações com largura de 4 colunas e cada nível de indentação com uma só tabulação:

:set tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab

Veja o exemplo de uso mais comum entre desenvolvedores Java — cada nível da indentação tem 4 espaços. Tabulações não são usadas:

:set softtabstop=4 shiftwidth=4 expandtab 

Segue mais 2 exemplos de ajuste da tabulação e indentação no vim.
No primeiro, ajustamos a tabulação para a largura de 8 colunas e cada nível de indentação em 3 colunas – que pode ser em espaços ou tabulações:

:set tabstop=8 softtabstop=3 shiftwidth=3 noexpandtab 

No segundo, o ajuste da tabulação fica em 5 colunas e o nível de indentação em 6 colunas — em espaços ou tabulações:

:set tabstop=5 softtabstop=6 shiftwidth=6 noexpandtab 

Me conte como você prefere configurar o seu editor vi ou vim.

O arquivo de configurações do vim

Depois de experimentar vários ajustes, você provavelmente irá escolher uma configuração para ser o padrão, para todos os novos arquivos.
Se você usa o Linux/UNIX, o arquivo de configurações é o ~/.vimrc. No Windows, ele fica em $HOME/_vimrc.
Se você usa a versão gráfica, gvim, pode acessar o painel de configurações, através do menu Editar.
Se o arquivo de configuração, não estiver presente no seu diretório home (no Linux), vocẽ pode copiar a versão “de fábrica”, /etc/vim/vimrc e alterá-la de acordo com as suas necessidades.
Uma outra alternativa é abrir o vim, já com estas opções ‘setadas’, dentro de um comentário. Veja um exemplo de comentário de primeira linha:

/* vim: set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab : */ 

É importante deixar esta linha comentada, ou o seu compilador irá pensar que este código tem a ver com ele — o que poderá causar problemas para você.
Happy coding! 😉

Referências

http://tedlogan.com/techblog3.html.