25 de mai de 2012

vim - salto para uma posição no texto #dica #vim



Ferramenta preferida pelos sysadmins, o editor de textos vi (vim) está presente em todos os sistemas operacionais modernos, tais como Unix/Linux/BSD. É um "canivete suiço" para edição de todo tipo de texto plano.

A dica de hoje é para saltar (movimentar) dentro de  um arquivo texto com muitas colunas, como por exemplo, um layout com  400 colunas e centenas de linhas. A habilidade aqui não se resume em utilizar as teclas de movimentação, isto seria demorado.

Tomemos um arquivo qualquer, aqui vou usar o CB001.REM que tem exatamente as característica acima, com 1335 linhas. Ao abrir o arquivo pelo vim tenho a seguinte visualização no vim:
vim
vim com arquivo texto aberto
A visualização do arquivo neste momento não mostra linha a linha, sendo que existe uma quebra para ajustar os dados para a visualização. O primeiro passo importante seria não quebrar a linha. Para isso use o comando "set nowrap" no modo comando do vim. Feito isso, para ter uma noção da quantidade de linhas que contém o arquivo, use o comando "set nu" ou "set number", também no modo comando do vim. Com isto teremos a seguinte visualização:

vim
vim com "set number" e "set nowrap"
set nu mostra a numeração das linhas
set nowrap mostra linha por linha dentro do arquivo, independente do número de colunas;

Finalmente, para você saltar ou movimentar-se para uma coluna qualquer no arquivo, utilize o comando " | coluna | ". Não precisa estar no modo comando. Então, após pressionar "esc" , vamos pular da posição atual (você vê o cursor e a indicação no vim) para a posição 350, assim:
esc
|350|

Ao pressionar o primeiro pipe (|) o vim entende que precisa aguardar uma posição. Após digitado a posição seguida de outro pipe (|), o vim entende que finalizamos o comando e leva o cursor na posição desejada do buffer, como na imagem abaixo:

vim |col|
vim após |350|
Outros comandos relacionados:
ir para uma linha: no modo comando :10 vai para a linha 10
ir para o final do texto: no modo comando :$ vai para o final do texto
ir para o final da linha: fora do modo comando $ vai para o final da linha atual
ir para a primeira linha: no modo comando :1 vai para primeira linha

Para entrar no modo comando, pressione "esc" seguido de :

Ajudou ou teve dúvidas considere comentar!