sábado, 10 de janeiro de 2009

Saltando palavras

Saltando para frente parando no início da palavra:
w
Saltando para trás parando no início da palavra:
b
Saltando para frente parando no final da palavra:
e
Saltando para trás parando no final da palavra:
ge
O que determina o que é uma palavra é a definição da opção ':iskeyword', a qual define como separadores de palavras, entre eles: ( /_.

Para saltar palavras somente separadas por espaços as respectivas versões maiúsculas :
W, B, E, gE.
Esses comandos são mais ágeis para saltar palavras do h,j,k,l.
Os comandos suportam contadores:
3w

Usando um contador para repetir um comando no vim

Todos comandos do vim podem ser prefixados com um número que diz quantas vezes o comando
deve ser repetido.

Por exemplo:
3x
faz 3 deletes de caracter
4a !
faz inserções de !
2k
move o cursor 2 linhas para cima.

Saindo do vim

Para gravar um arquivo alterado e sair:
ZZ
Para sair sem gravar um arquivo alterado:
q!
ZQ
Para fechar todas janelas e sair sem gravar nada:
qa!

Inserindo texto no vim

Todos os comandos a seguir fazem o vim entrar em modo inserção.

Para inserir texto antes do cursor digite:
i
Para inserir texto antes do primeiro caractere não-branco da linha digite:
I
(útil para linhas com indentação)

Para inserir texto na 1ª coluna de uma linha digite:
gI
Para inserir texto depois do cursor digite:
a
Para inserir texto no final da linha digite:
A
Para inserir texto em uma linha nova abaixo da linha do cursor digite:
o
Para inserir texto em uma linha acima da linha do cursor digite:
O
Para inserir novamente o último texto inserido:
<Ctrl-A>
<Ctrl-@> (insere e sai do modo inserção)

Refazendo uma edição que foi desfeita

Se quiser refazer uma edição que acabou de ser desfeita (pelo comando u) digite:
Ctrl-R

Desfazendo mudanças anteriores

Para desfazer uma edição anterior (a mais recente) digite:
u
Repetindo o comando irá desfazer as edições anteriores seguintes.

Para desfazer todas edições da última linha, mova para a linha e use:
U

Juntando linhas

Para juntar a linha do cursor com uma ou mais linhas seguintes, use:
J
5J
Um espaço é colocado para separar as linhas.
Caso você não queira o espaço use:
gJ
3gJ

Caso a primeira linha tenha espaços extras no final, 'gJ' não irá remove-los.

Deletando texto no modo normal

Deleta o caractere sob o cursor :
x
dl
5x
Deleta o caractere a esquerda do cursor:
X
dh
5X
Deleta do cursor até o caractere especificado:
dfx
d2fx
Deleta a linha inteira:
dd
Deleta do cursor até a palavra exclusive :
dw
d2w
Deleta do cursor até o fim da enésima palavra inclusive:
d2e
Deleta do cursor até o final da linha, inclusive:
d$
D
Deleta do cursor até o fim do arquivo:
dG
Deleta do cursor até o início do arquivo:
dgg

Movendo para cada caracter no vim

O modo mais ágil (e por isso recomendado) de mover sobre um documento é através das teclas:
h - para esquerda
j - para baixo
k - para cima
l - para direita
Embora as teclas flecha e o mouse funcionem também, o uso das teclas acima é o modo mais ágil de
mover o cursor.
Acostume com elas !

Usando o help do vim

O vim é um programa muito bem documentado.
O help é carregado numa janela normal de edição (read-only). Portanto pode-se navegar pelo help com os comandos tradicionais: hjkl, w,b,gg, etc.

Palavras entre barras indicam um hiperlink chamado no vim de tag. Se posicionar o cursor e pressionar :
<ctrl-]>
o help é levado para o assunto indicado.

Para voltar pelos saltos de tags feitos use:
<ctrl-o>
<ctrl-t>

:help
mostra o índice com todos os tópicos.

:help assunto
digite parcialmente o assunto e use o auto-completar do vim para ver as possibilidades.
pode usar wildcards (*,?) e o vim tentará achar a melhor possibilidade.
Digite parcialmente um assunto e use:
<ctrl-d>
para listar todas possibilidades.

:help index
mostra uma lista de todos comandos para cada modo.

:help x
mostra a juda com um comando, neste caso o 'x'.

:help ctrl-h
mostra ajuda para as teclas de controle no modo normal (default).

:help i_ctrl-h
mostra ajuda para as teclas de controle no modo inserção.

:help -t
mostra ajuda para um argumento de linha de comando do vim.

:help E37
mostra ajuda para uma mensagem de erro do vim.

:help 'compatible'
mostra ajuda para opções do vim.

:help i_
mostra ajuda para teclas especiais. Pode ser prefixado pelo modo.

:help mapping
mostra ajuda para o tópico mapping (mapeamento de teclas)

:help +ruby
mostra ajuda para opções em tempo de compilação.

:help abs()
mostra ajuda para funções.

:help BufNewFile
mostra ajuda para eventos

:helpgrep mapp.*
busca uma palavra que faz match com o padrão.
Use:
:cn - para o próximo match
:cprev
:cfirst
:clast
:copen - abre a janela quickfix, pressione <enter> para ir ao item.
:cclose - fecha a janela quickfix.


Use Ctrl-K com um cursor sobre uma palavra para que o vim tente achar um tópico
que explique a palavra.
Para ir voltando ao ponto de origem no help digite Ctrl-O.

Opção para rodar o vim completo

Por default, o vim inicia compatível com vi, uma versão mais antiga e com menos recursos.

Para usar o conjunto completo de recursos do vim sempre coloque o comando no .vimrc.:
set nocompatible

Algumas variáveis de ambiente usadas pelo vim

O vim é afetado pelo valor de algumas variáveis de ambiente:
$SHELL - path para o shell que o vim chamará em alguns comandos.
$VIM - path para o diretório aonde o vim foi instalado.
$VIMRUNTIME - path para o diretório com arquivos de suporte do vim : documentação, plugins e definições de sintaxe.

use o comando:
:echo $nome-da-variável
para ver o qual o valor que o vim está usando.

Lançando o vim com tela cheia e sem bordas

Instale o devilspie, veja aqui como.
No diretório ~/.devilspie crie um arquivo com
nome gvim.ds com esse conteúdo:
(if
(contains(window_name) "Vim")
(fullscreen)
)
Ou use 'maximize' no lugar de 'fullscreen' para maximizar com bordas.

sexta-feira, 9 de janeiro de 2009

Debugando a inicialização do vim

Para localizar algum problema na inicialização do vim chame-o no terminal assim:
vim -Vlog.txt

A opção V irá mostrará uma mensagem para cada arquivo de inicialização que o vim
usou salvando no arquivo log.txt.

Chamando o Vim sem o chamar .vimrc e plugins

Eventualmente, o vim pode não inicializar devido a um erro no arquivo '.vimrc'.
Para executar o vim sem chamar o arquivo '.vimrc' use:
vim -u NORC
Para pular também o carregamento dos plugins:
vim -u NONE
Se tiver um outro arquivo .vimrc intacto, como por exemplo o
baixado na instalação ( $VIMRUNTIME/vimrc_example.vim) use:
vim -u arquivo

Ordem de execução dos scripts de configuração durante a inicialização do vim

Para informações completas digite:
:help startup
Mas a sequencia básica para ambiente Linux é :
$VIMRUNTIME/vimrc
- é o arquivo global, acessado por todos usuários do sistema. Ele pode
ser usado para definir defaults para todos.
$HOME/.vimrc
- é o arquivo local, acessado só por um usuário. Ele pode sobrepor
qualquer configuração global.
Para ver os arquivos que foram usados para inicializar o Vim use:
:version
Use
:echo $VIMRUNTIME
:echo $HOME
para obter os paths.

Obtendo a versão e a configuração do Vim

Use o comando:
:version

A primeira seção da saída do comando mostra a versão, data da compilação e
patches (correções) aplicadas.
Depois mostra todos recursos que foram ativados (+) ou não (-) na compilação
(por exemplo interface com Ruby, Python, etc).
Mostra também qual foram as opções usadas do compilador.

Compare com o número da última versão estável em www.vim.org .

Os repositórios nem sempre tem a última versão e os recursos desejados.
Aqui tem uma forma de atualizar a versão do vim.

Removendo o menu, a barra de ferramentas e barra de rolagem

Por default , o Vim aparece com um menu, uma barra de ferramentas, além da
barra de rolagem horizontal.
Por sua enfase em uso do teclado, o Vim pode dispensar totalmente esses elementos
gráficos.

Adicione esses comandos no vimrc para elimina-los.
Elimina o menu
set guioptions-=m
Elimina a barra de menu
set guioptions-=T 
Elimina barra de rolagem direita
set guioptions-=r

quarta-feira, 7 de janeiro de 2009

Opção para criar uma linha de status

No rodapé do Vim pode ser colocada uma linha de status. Ela pode ser configurada para mostrar informações úteis.

Primeiro defina que a última janela sempre terá linha de status.
:set laststatus=2
Use o seguinte comando para definir a linha de status:
:set statusline Formato
Formato é um string no formato printf da linguagem C que descreve
qual informação deve estar na linha.

Veja detalhes em:
:help statusline
Eis um exemplo adicionado ao .vimrc que mostra:
  • O nome do arquivo
  • O file encoding
  • O formato do arquivo
  • Flag se é um arquivo de help
  • Flag se o arquivo foi modificado
  • Flag se o arquivo é só-leitura
  • O tipo do arquivo
  • Alinhe a direita
  • Valores Ascii e hexa do caracter sob o cursor
  • A coluna do cursor
  • A linha do cursor/total de linhas
  • O percentual do arquivo em que o cursor está
" Linha de status
set laststatus=2 " Mostre a linha de status na última janela.
set statusline= " Limpa o statusline. Útil para quando recarrega o .vimrc.
set statusline+=%t\ " Nome do arquivo no buffer
set statusline+=[%{strlen(&fenc)?&fenc:'none'}, " File encoding
set statusline+=%{&ff}] " Formato do arquivo.
set statusline+=%h " Flag de help file.
set statusline+=%m " Flag de modificado.
set statusline+=%r " Flag de read only.
set statusline+=%y " Tipo do arquivo.
set statusline+=%= " Agora alinhe à direita.
set statusline+=asc=%03.3b\ " Valor ASCII/Hex do caracter sob o cursor.
set statusline+=hex=%02.2B
set statusline+=\ c=%c, " Coluna do cursor.
set statusline+=\ l=%l/%L " Linha do cursor/total de linhas.
set statusline+=\ %P " Percentual dentro do arquivo.
Para remover a linha de status digite:
:set laststatus=0

Colorindo palavras automaticamente no Vim

O Vim pode colorir automaticamente qualquer cadeia de caracteres que apareça
na tela.

Use o comando
:match Grupo /padrão/

Grupo é uma combinação de cores de fundo e frente que será usada quando
a sequencia de caracteres for encontrada.
Para ver a lista de grupos de cores existentes use:
:so $VIMRUNTIME/syntax/hitest.vim

Padrão é uma expressão regular que define o que voce quer colorir.
Eis um exemplo, usando um grupo pré-existente para colorir a palavra
teste no início da linha :
:match WarningMsg /^teste/

Para criar um grupo de cores personalizado use o comando:
:highlight Teste guibg=red guifg=yellow
e use-o para colorir com o comando match:
:match Teste /teste/

O comando match colore um padrão por vez. Use os comandos:
2match
3match
para definir até 3 matches adicionais.

Para desligar a colorização de palavras use o comando:
:match NONE

Escolhendo um esquema de cores do Vim

O Vim suporta escolha do esquema de cores pré-definidos para
a tela: fundo, frente,mensagens de erro, marcas, etc.

Use:
:colorscheme zenburn

Para descobrir os nomes dos esquemas instalados:
:colorscheme
E Tab para percorrer a lista.

Os esquemas de cores instalados com o vim estão no diretório $VIMRUNTIME/colors.
Esquemas locais podem ser colocados em ~/.vim/colors.

No site www.vim.org há um grande catálogo de esquema de cores para
serem baixados.

Usando um fonte para cada tipo de arquivo no Vim

Entre no vimrc:

autocmd BufEnter *.txt set guifont=Arial\ 12

Agora quando for aberto um arquivo com extensão .txt, usará o
fonte Arial

Opção para configurar o fonte do Vim

Defina a fonte de preferencia do Gvim no vimrc.
O Vim (lançado no terminal) usa o fonte do terminal.

Definindo o fonte e o tamanho:
:set guifont=Monaco\ 11
Note que espaços deve ser escapados com \.
:set guifont=Monaco\ 11, Arial\ 10
Define uma lista, aonde o primeiro que estiver no computador
será usado. Útil para quando não se tem certeza sobre a
existência dos fontes.
:set guifont=*
Obtém um diálogo com fontes disponíveis.

segunda-feira, 5 de janeiro de 2009

Atualizando a versão do Vim.

A versão preinstalada pelo Ubuntu é a versão tiny que não dispõe de uma série de recursos como suporte para linguagens como Ruby.

A versão dos repositórios apt do Ubuntu é desatualizada em relação ao site oficial Vim.

Um modo fácil de atualizar a versão do vim é usando os repositórios Subversion
do Vim.org.

Primeira vez - Baixar os fontes do vim

Instale os pacotes de desenvolvimento/dependencias necessários para compilar o Vim.
sudo apt-get build-dep vim-full

Instale as ferramentas de ambiente de build (gcc, etc).
sudo apt-get install build-essential fakeroot

crie um diretório para os fontes do vim
mkdir ~/.vimsvn

baixe a árvore de diretórios do repositório do sourceforge:
svn co https://vim.svn.sourceforge.net/svnroot/vim/vim7
será criado um sub-diretório vim7.

Configure o Vim.
Inspecione o Makefile (vim7/Makefile e vim7/src/Makefile) e anote quaisquer definições que você deseja usar.
Procure o comentário "Run configure with all the setting from above" para ver a lista de opções.
Colete-as num script bash (vimbuild-myenviro.sh) que as passarão como variáveis ambientais :
#!/bin/bash
export CONF_OPT_GUI='--enable-gnome-check'
export CONF_OPT_PERL='--enable-perlinterp'
export CONF_OPT_PYTHON='--enable-pythoninterp'
export CONF_OPT_TCL='--enable-tclinterp --with-tcl=tclsh8.4'
export CONF_OPT_RUBY='--enable-rubyinterp'
export CONF_OPT_MZSCHEME='--disable-mzschemeinterp'
export CONF_OPT_CSCOPE='--enable-cscope'
export CONF_OPT_MULTIBYTE='--enable-multibyte'
export CONF_OPT_FEAT='--with-features=huge'
export CONF_OPT_COMPBY='"--with-compiledby=email@nomail.com"'

Agora inclua as variáveis rodando o script com o comando "source". (o comando source usa o script criado para atualizar o ambiente para os scripts seguintes):
source vimbuild-myenviro
Rodar o script com o comando comum './vimbuild-myenviro.sh' não funcionará !

Compile:

cd vim/src

se houve mudança na configuração ou se os pacotes de desenvolvimento foram atualizados depois da última compilação:
make reconfig

Caso não mudou nada:
make

Instale
sudo make install

Agora chame o gvim e verifique a versão .
Mantenha o diretório .vimsvn para aplicar os próximos patches.

Atualizações com novos patches:
De tempos em tempos, o vim.org libera correções (patches). Agora fica simples incorpora-las.

Atualize os fontes no diretório .vimsvn:
cd ~/.vimsvn/vim7
svn update

Rode as atualizações dos pacotes desenvolvimento acima. Eles podem ter sido deletados ou atualizados.
Rode o script bash de opções do vim (source vimbuild-myenviro.sh)
Recompile (make reconfig)
Instale (make install)
Verifique a versão dentro do vim (:version)

Atualizando o runtime (vim scripts)
As atualizações dos vim scripts e linguagens não são postos no repositório Subversion.
Então , de tempos em tempos, mesmo sem patches, devem ser sincronizadas com o ftp usando o comando rsync.
Use:
cd ~/.vimsvn/vim/vim7
rsync -avzcP --delete --exclude="/dos/" ftp.nluug.nl::Vim/runtime/ ./runtime/
make -C src installruntime 2>&1 |tee installrt.log