sábado, 17 de janeiro de 2009

Usando as marcas especiais

O vim fornece algumas marcas especiais (ponto de retorno).
Prefixe-as com ` (posiciona na linha/coluna) ou ' (posiciona no primeiro
caractere não-branco da linha).

Para saltar para a posição antes do último salto:
'
Para saltar para a última posição do cursor quando saiu do buffer:
"
Para saltar para o primeiro caractere do último texto alterado ou copiado:
[
Para saltar para o último caractere do último texto alterado ou copiado:
]

sexta-feira, 16 de janeiro de 2009

Listando as marcas

Digite:
:marks
A listagem mostra as marcas criadas pelo usuário alem das marcas especiais
criadas pelo Vim.
Se quiser marcas específicas:
:marks {marca}

Criando marca de letra minuscula e saltando de volta para ela

Você pode criar marcas em seu texto para retornar mais tarde.

Essas marcas tem como nome uma letra minuscula (de a até z), 26 no total.
Para criar a marca, posicione o cursor e digite o comando:
ma
e a marca 'a' será criada.

Para saltar de volta para a marca digite:
'a
volta para o início da linha com a marca ou:
`a
volta para a linha e coluna com a marca.

As marcas podem ser úteis quando deletando um longa série de linhas:
1. Mova o cursor para o início do texto a ser deletado.
2. Marque-a usando o comando 'ma' (marca 'a').
3. Vá para o fim do texto a ser removido. Delete até a marca 'a' usando comando
"d'a".

Vale a pena notar, que a marca permanece com o texto mesmo se o texto (porque
você deletou ou inseriu texto acima da marca). Se o texto é deletado, a marca
também será.

Essas marcas são locais, ou seja, cada arquivo tem seu conjunto de marcas.

Voltando para a linha anterior usando marcas do vim

O vim salva a última posição antes de um salto.
Para voltar para a linha anterior e na coluna anterior use o backtick :
``
no teclado ABNT (não US) é necessário digitar 4 vezes.

Para voltar para o início da linha anterior use 2 aspas simples:
''
Se repetir esses comandos, eles vão e voltam entre as 2 últimas posições.

Expressão regular: o início e o fim da linha

'^' corresponde ao início da linha.
Pesquise por palavra no início da linha (^):
/^palavra
inicio de linha seguido de palavra.

'$' corresponde ao final da linha.
Pesquise por palavra no final da linha ($) :
/palavra$
palavra seguido de fim de linha.

Combinando os dois meta-caracteres.
Pesquise por uma linha que contenha só a palavra:
/^palavra$
inicio de linha seguido de palavra seguido de fim de linha.
Pesquise por linhas vazias:
/^$

Opção para pesquisar conforme se digita o texto

Para o vim pesquisar conforme se digita a palavra na linha de comando use:
:set incsearch

Listando os scripts que foram chamados na inicialização do vim

Para obter uma lista dos nomes de script (vimrc, sintaxe, plugins) na ordem que foram chamados durante a inicialização do vim use o comando:
:scriptnames

quinta-feira, 15 de janeiro de 2009

Opção para colorir todas as ocorrências de uma pesquisa no vim

Para colorir todas ocorrências de uma pesquisa:
:set hlsearch
Para apagar só a colorização corrente use:
:nohlsearch ou
:noh
Na próxima pesquisa, a colorização volta.

Para encerrar de vez a colorização:
:set nohlsearch

Procurando palavras no vim

Para procurar palavras que comecem com 'line':
/\<line

Para procurar palavras que terminem com'line'
/line\>

Para procurar a palavra exata 'line':
/\<line\>

Percorrendo o histórico da linha de comando do vim

Para rever o histórico de pesquisas use:
/<up> (em direçao às mais antigas)
/<down> (em direção às mais novas)

Para rever o histórico de comandos use:
:up
:down

Se souber, pode colocar a parte inicial da palavra e para filtrar o histórico:
/tes<up>

Opção para ignorar o case nas pesquisas

Pesquisa as palavras sem se importar se é maiúscula ou minúscula:
:set ignorecase
isso vale também para o auto-completar do vim.

Pesquisando texto

Procure o texto após o cursor para frente:
/palavra
Procure o texto antes do cursor para trás:
?palavra
Para as próximas ocorrências use:
n
Para as próximas ocorrências mas na direção oposta use:
N
Os caracteres .*[]^%/\?~$ tem significado especial e devem ser escapados, por exemplo, \*.

Lembre que o argumento do comando é um padrão (expressão regular).

Opção para visualizar sempre um mínimo de linhas em volta da linha do cursor

Use essa opção em seu .vimrc:
set scrolloff=2
ela sempre garante n linhas (2 no caso) no mínimo em
volta da linha do cursor. Assim sempre há um contexto para ser visualizado.

Avançando e retornando a tela

Avançando a metade da tela (default) ou 'scrollup' linhas ou 'contagem' linhas:
<Ctrl-U>
5<Ctrl-U>
Retornando a metade da tela (default) ou 'scrollup' ou
'contagem' linhas:
<Ctrl-D>
3<Ctrl-D>
A opção 'scrollup' determina quantas linhas serão movimentadas. O número antes do comando também faz isso.
Avançando uma linha da tela ou cinco linhas (5x1):
<Ctrl-E>
5<Ctrl-E>
Retornando uma linha da tela ou retornado 3 linhas (3x1):
<Ctrl-Y>
3<Ctrl-Y>
Avançando a tela inteira:
<Ctrl-F>
Retornando a tela inteira:
<Ctrl-B>
Posicionando o cursor no meio da tela:
zz
útil depois de usar j para posicionar o cursor e se deseja ver as linhas adjacentes.

Posicionando o cursor no topo da tela:
zt
Posicionando o curso no rodapé da tela:
zb

Opção para mostrar o número da linha

Defina no vimrc:
:set number

Mostrando a posição do cursor no vim

Defina no .vimrc a opção:
set ruler

Ela fará mostrar a posição de linha/coluna do cursor no rodapé da tela.

Saltando para uma linha específica no vim

Saltando para o fim do arquivo:
G
Saltando para um número de linha específica, por exemplo a linha 2:
2G
2gg
Saltando para a primeira linha:
gg
Saltando para uma percentagem do arquivo, por exemplo na metade:
50%

Saltando para o delimitador correspondente

Em programas é comum ter separadores como (),[],{} aninhados.
Quando você quiser ver qual separador corresponde a um outro use o comando:
%
O Vim irá mover o cursor para o separador correspondente.

Em C ele também salta para os itens correspondentes nos casos:
/* */ - comentários.
#if, #ifdef, #else, #elif, #endif - condicionais do pré-processador C, inclusive se aninhadas. Isto é bom modo de ver se um item correspondente não foi omitido.

Para outros itens o plugin 'matchit' pode ser usado.

A opção 'matchpairs' define quais são os separadores correntes.

domingo, 11 de janeiro de 2009

Usando o vim para formatar código em blogs.

O vim tem um plugin que permite converter texto em um buffer para html. O html gerado usa as mesmas cores do colorscheme corrente do vim.
O plugin chama-se TOhtml.
Use:
:h TOhtml
para ver a sua documentação.

Antes de usa-lo configure (coloque no vimrc se quiser) para que o html gere CSS:
:set html_use_css = 1

Com o texto em uma janela digite:
:TOhtml

Será aberta uma janela com o html do código.

Faça só uma vez ou caso queira usar um novo colorscheme
Localize o estilo dentro do arquivo html e copie-o exceto o elemento body:
<style type="text/css">
<!--
.Operator { color: #f0efd0; }
.Type { color: #dfdfbf; font-weight: bold; }
.Delimiter { color: #8f8f8f; }
.Special { color: #cfbfaf; }
.PreProc { color: #ffcfaf; font-weight: bold; }
.Comment { color: #7f9f7f; font-style: italic; }
.Statement { color: #e3ceab; }
pre { font-family: monospace; color: #dcdccc; background-color: #3f3f3f; }
body { font-family: monospace; color: #dcdccc; background-color: #3f3f3f; }
.lnr { color: #9fafaf; background-color: #262626; }
-->
</style>
Vá para a página de modelo do Blogger :
Personalizar - Layout - Editar HTML
Dentro da tag Head cole o estilo.
Altere o elemento 'pre' para que crie uma barra de rolagem horizontal quando o post de um código exceder o limite do box:
pre {font-...; overflow:auto; }

A cada código a ser formatado:
Vá no html gerado pelo vim, selecione (use seleçao visual - v) e copie o trecho do código (incluindo as tags pre).
Cole na postagem (Editar HTML).
O código irá aparecer colorido como no vim.

Saltando para um caractere específico na linha corrente

Salta para frente para um caractere específico:
fx
5f<Space>
o primeiro salta para a letra 'x' seguinte, o segundo salta 5 espaços seguintes.

Salta para trás para um caractere específico use:
Fx
Salta para frente para um caractere específico, porém o cursor fica um caractere antes:
tx
Salta para trás para um caractere específico, porém o cursor fica um caractere depois:
Tx

Saltando para o início e fim de uma linha no vim

Para o início:
<Home> ou 0
Para o fim:
<End> ou $

Para o primeiro caractere não-branco da linha:
^
(para teclado ABNT: ^^)