sábado, 24 de janeiro de 2009

Opção para definir que caracteres fazem parte de uma palavra

Essa opção define os caracteres que o Vim deveria considerar como parte da
palavra. Os demais definem os limites da palavra.

Use a opção:
:set iskeyword={especificação}
para os caracteres correntes.

O default é:
@ - todas as letras.
48-57 - código ASCII dos números 0-9.
_ - underscore
192-255 - código ASCII dos caracteres latinos.
Essa opção é usada em comandos de movimento ou em pesquisa.

Acrescentando '-' como parte da palavra , para que 'meio-dia' possa ser reconhecido como uma palavra:
:set iskeyword+=-
Por exemplo, palavras só com vogais:
:set iskeyword=a,e,i,o,u
Pode usar '-' para definir um intervalo:
:set iskeyword=a-z
Para caracteres que não podem ser especificados diretamente use um número
decimal. Por exemplo, palavras conterão letras minusculas e traço (caractere
#45):
:set iskeyword=a-z,45
O caractere '@' representa todos caracteres que a função C 'isalpha()' retorna
como verdadeira. (Isto poderia variar do locale C, do compilador e do sistema
operacional que o Vim foi compilado).
Para excluir um caractere ou conjunto de caracteres use '^'. Uma definição de
palavra com todas letras exceto 'q':
:set iskeyword=@,^q

Opção para mostrar tabs e espaços no final da linha

Use o comando:
:set list
Agora todo tab é mostrado como ^I.
E um $ é mostrado no final da linha para espaços finais possam ser notados.

Se a tela ficar bagunçada por causa do excesso de tabs e espaços use o comando:
:set listchars=tab:>-,trail:-

Opção para definir quantas colunas mostrar quando o cursor atinge um lado da tela

Usado somente quando 'wrap' está desligado.
Quando o cursor atinge o início/fim da linha ele mostra o número de colunas
definido:
set sidescroll=3
set nowrap
Útil para sempre se ter um visão do contexto em volta da linha do cursor.

Fazendo uma opção voltar ao seu valor default no vim

Se uma opção ficou bagunçada e se deseja voltar para o valor default use:
set iskeyword&

Usando o comando 'options' para alterar opções do vim

Use o comando:
:options 
Abrirá uma janela com grupos de opções no início. Pressione <Enter> para ir para as
opções correspondentes.

Na opção pressione <Enter> para que o Vim abra uma janela de help da opção com mais detalhes.

Na linha que contém o comando 'set' altere o valor e pressione <Enter>.
Para uma opção booleana pressionando <Enter> inverte o valor atual.

Criando os arquivos de help dos plugins no vim

Alguns plugins vem como arquivos de help que devem ser instalados no vim para serem acessados.
Crie um sub-diretório doc local se não existir:
!mkdir ~/.vim/doc

Copie o arquivo .txt para lá:
!cp ~/plugin_help.txt ~/.vim/doc

Gere um arquivo local de tags:
:helptags ~/.vim/doc
Esse arquivo permite que salve para os assuntos quando vendo o help do plugin.

Para ver as entradas locais no sistema de help digite:
:help local-additions

Executando comandos para o shell a partir do vim

Use o comando:
:!comando-shell

Copiando, dentro do vim, um plugin para o diretório local :
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
:!ls $HOME/.vim/plugins

Como não há intervalos no comando, o comando será só executando sem mudar o texto na janela.

Usando filetype plugins no vim

Filetype plugins são scripts específicos para um tipo de arquivo.
Primeiro eles devem ser ativados .
Alguns estão disponíveis em $VIMRUNTIME/ftplugin. Outros na internet ou podem ser escritos.

Coloque-os no diretório:
~/.vim/ftplugin/

O formato genérico dos nomes é:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim

Filetype é o nome do tipo do arquivo (c, css, html, ruby). Somente arquivos com esse tipo de arquivo usarão esse plugin.
Name é um anexo qualquer (css_special)
Para melhor organização pode-se criar sub-diretórios abaixo de ftplugin com o nome do tipo do arquivo.
Todos plugins devem terminar com .vim .

Usando plugins globais do vim

Plugins globais são scripts que são carregados durante a carga do vim e são acessíveis para todos tipos de arquivo. Eles permitem adicionar funcionalidade em scripts ao invés de implementa-los na compilação.

Obtenha o plugin:
Do diretório $VIMRUNTIME/macros.
Do site www.vim.org.
De foruns, blogs, etc
Escrevendo um plugin.

Copie para o diretório:
~/.vim/plugin

Para melhor organização, considere por os plugins em sub-diretórios do diretório plugin, por exemplo por tipo de arquivo:
~/.vim/plugin/ruby

Listando os mapeamentos existentes

Use o comando:
:map
A saída mostra todos mapeamentos definidos

A primeira coluna mostra em qual modo o mapeamento é efetivo. Valores como 'n','i', etc ou branco que significa que foi usado o comando ':map' efetivo nos modos normal e inserção.

A lista também mostra se as teclas especiais na forma <> foram reconhecidas.
Isto ocorre se aparecerem coloridas.

sexta-feira, 23 de janeiro de 2009

Usando mapeamento de teclas

Você pode associar uma série de comandos com uma única tecla.
Um boa tecla candidata são as teclas de função, pois somente F1 está atribuída a um comando.

Exemplo, colocando {..} em volta de palavras:
map <F5> i{<Esc>ea}<Esc>
<F5> - a tecla
i{<Esc> - insere { e sai do modo inserção
e - move para o final da palavra
a} - apenda }
<Esc> - sai do modo inserção
Agora basta colocar o cursor no início da palavra e pressionar F5.

No entanto, se a tecla era usada por algum comando, ela agora não será mais.
É preferível usar o backslash e uma letra, por exemplo:
map \p i{<Esc>ea}<Esc>
Deverá ser digitado \ e rapidamente p para que o vim aceite como um comando.

Opção para ativar/desativar a indentação automática por tipo de arquivo

Use a opção:
:set filetype indent on

Um arquivo de indentação específico para o tipo do arquivo é carregado. Há arquivos para várias linguagens no diretório $VIMRUNTIME/indent/.

O arquivo de indentação irá preparar a indentação automática para o arquivo. Por exemplo, ativando 'cindent' para arquivos C.

Para desligar totalmente a indentação automática:
:set filetype indent off

Para desligar a indentação só de um tipo de arquivo, crie um arquivo só com essa linha:
:let b:did_indent = 1

Descubra o tipo de arquivo:
:set filetype

Pegue o primeiro diretório da lista de diretórios usados para buscar arquivos de runtime (plugins):
:set runtimepath

Salve-o para esse diretório:
~/.vim/indent/{tipo-do-arquivo}.vim

quinta-feira, 22 de janeiro de 2009

Opção para carregar plugins específicos do tipo de arquivo no vim

Use esta opção:
set filetype plugin on

O resultado é que o plugin específico do tipo do arquivo é carregado a partir de $VIMRUNTIME/ftplugin/

Opção para ativar a identificação do filetype no vim

Use a opção:
set filetype on

O vim pode usar para coisas como coloração de sintaxe, definição de opções, etc.

Opção para mostrar o comando parcialmente digitado no vim

Se quiser ver, no rodapé, o comando conforme se digita use a opção:
set showcmd

Opção para mostrar a linha e coluna no rodapé do vim

Use esta opção no vimrc:
set ruler

Se foi definida, a linha de status (statusline) tem precedencia.

Opção para definir o tamanho do histórico de comandos no vim

Para definir o tamanho do histórico de comandos e procuras use:
set history=100

Agora até 50 comandos e 50 procuras estarão salvas.

Opção para usar a indentação anterior no vim

Para que uma nova linha tenha a mesma indentação da linha anterior use esta opção:
set autoindent

Opção para dizer o que <Backspace> deve fazer no modo inserção

Opção para definir como o <Backspace> deve funcionar em modo inserção:
:set backspace
Exemplo:
set backspace=indent,eol,start
Essa opção faz com que o <Backspace> se mova e delete nesses locais:
indent - permite passar sobre autoindentação.
eol - permite passar sobre o line-break, juntando duas linhas.
start - permite passar sobre o ponto de inserção.

Localizando o arquivo de configurações vimrc

Esse comando chama o arquivo, se ele ja existir:
:e $MYVIMRC

O comando:
:version
mostra os locais que o vim usa para localizar o arquivo vimrc.

Normalmente, o arquivo vimrc local estará em:
~/.vimrc

Um arquivo de exemplo se encontra aqui:
$VIMRUNTIME/vimrc_example.vim

Alterando o texto para maiúsculo ou minusculo no vim

Para mudar o case do caractere sob o cursor:
~
Use uma 'contagem' para repetir o comando nos caracteres seguintes:
5~
Para trocar o case usando comando de movimento:
3g~l
g~fm
Invertendo o case de todos caracteres de um bloco visual:
v3e
~
Mudando para minusculo e maiúsculo, usando seleção visual:
3V
u
U
Invertendo o case usando um objeto palavra:
g~aw
Mudando uma palavra para maiúsculo, usando movimento:
gUw
Mudando uma palavra para minusculo, usando movimento:
guw
Mudando uma linha inteira para minuscula:
gugu
guu
Mudando uma linha inteira para maiúscula:
gUgU
gUU
Para inverter uma linha inteira:
g~g~
g~~

quarta-feira, 21 de janeiro de 2009

Alterando texto por substituição

Troca um carácter por outro e termina. Evita usar <Esc>:
rx
Troca um carácter por um line-break, portanto quebrando a linha.
r<Enter>
Troca 5 caracteres consecutivos por um mesmo carácter:
5rx
Use o modo substituição com:
R
3R
Tudo que for digitado substituirá o carácter sob o cursor.
Com uma 'contagem' o texto digitado é repetido.
A linha poderá ser estendida.
Nesse modo pode-se entrar e sair no modo inserção pressionando a tecla <insert>.

Usando objeto-texto para selecionar

São comandos usados para selecionar grupos definidos de texto, tais como palavras, sentenças, parágrafos.
Só usados somente com operadores ou no modo visual.

Esses comandos são mais ágeis que os comandos movimento pois não precisar estar no início de uma palavra.

{contagem}aw     palavra e o espaço inicial ou final.
{contagem}iw palavra, sem os espaços.
{contagem}aW PALAVRA e o espaço inicial ou final.
{contagem}iW PALAVRA, sem os espaços.
{contagem}as sentença, incluindo espaço inicial e final.
{contagem}is sentença, sem os espaços.
{contagem}ap paragrafo e o espaço inicial ou final.
{contagem}ip paragrafo, sem os espaços.
{contagem}a( o texto entre '()', incluindo os parenteses.
{contagem}i( o texto entre '()' somente.
{contagem}a< o texto entre '<>', incluindo os delimitadores.
{contagem}i< o texto entre '<>' somente.
{contagem}a{ o texto entre '{}', incluindo as chaves.
{contagem}i{ o texto entre '{} somente.
{contagem}a[ o texto entre '[]', incluindo os colchetes.
{contagem}i[ o texto entre '[]' somente.


De modo geral, o 'i' em um objeto-texto significa 'inner' (interno) ou seja somente o conteúdo sem delimitadores. O 'a' significa 'a' (um) o qual inclui delimitadores.

terça-feira, 20 de janeiro de 2009

Usando o clipboard de seleção do X-Windows

O X-Windows tem 2 clipboards:
O clipboard real (igual ao do ms-windows). Você copia com um comando e cola.
O clipboard de seleção (inexistente no ms-windows) que contém o texto selecionado no momento.
Pode-se colar esse texto, sem qualquer ação extra.

Comandos de copiar e deletar podem ser prefixados com registradores. A notação
é:
"registrador
Para ler e gravar texto no clipboard de seleção use:
"*
Para ler e gravar texto no clipboard real use:
"+

Copiando 2 palavras no clipboard real:
"+y2w
Recortando uma linha para o clipboard real:
"+dd
O texto no clipboard real é colado com:
"+p
"+P
ou em outra aplicação.

Para copiar para o clipboard de seleção use seleção visual:
v
jjjj
Para colar do clipboard de seleção:
"*p
"*P

Copiando texto

Use o comando y (yank) para copiar caracteres, palavras, linhas.
'y' é um comando-operador, portanto pode ser usado em conjunto com comandos de movimento.
Após copiado, o texto pode ser colado com 'p' ou 'P'.

Copiando 2 palavras:
y2w
Note que 'yw' inclue o espaço após a palavra, se não quiser use:
ye
Copiando linhas inteiras:
yy
Y
3Y
Copiando do cursor até o fim da linha:
y$
Copiando usando marcas (da linha corrente até a marca 'a'):
ma
jjj
y`a

Por default o texto copiado vai para o registrador default (registrador
sem-nome). Pode-se usar um dos registradores alfabéticos use:
"aY
cole com:
"ap

Trocando dois caracteres seguidos de posição

É comum, quando digitando rapidamente, trocar letras em algumas palavras:
proque ao invés de porque.

Posicione no 1º carácter:
F{carácter}
Agora a troca, deletando e colando após o cursor:
xp

Movendo texto

Todo texto deletado com 'd' ou 'x' é salvo em um registrador do Vim.
Então você usa o comando 'p' (put) para colar depois do cursor ou 'P' para colar
antes do cursor.

Movendo uma linha inteira:
1. Delete a linha inteira:
dd
2. Salte para o novo local:
jjj
3. Cole:
p
Para colar o texto antes do cursor use:
P
Movendo uma palavra.
1. Delete a palavra:
dw
2. Salte para o novo local:
eee
l
3. Cole:
p

Movendo e colando uma palavra várias vezes:
1. Delete a palavra:
dw
2. Cole a palavra repetidas vezes:
3p

Movendo linhas usando marcas:
1. Coloque o cursor no início do bloco de linhas.
2. Marque o local:
ma
3. Mova o cursor até o final do bloco.
4. Delete o bloco da linha corrente até a marca 'a':
d'a
O texto deletado vai para o registrador.
5. Mova o cursor para uma linha acima de onde deverá ficar.
6. Cole abaixo do cursor:
p

segunda-feira, 19 de janeiro de 2009

Selecionando texto no modo visual

Esse modo permite que você colorize um bloco do texto e aplique um comando sobre
ele.
Existe 3 tipos de seleção visual.
Seleção visual de caracteres ('v'):
vllll
Seleção visual de linhas ('V'):
Vjjj
Seleção visual de blocos de texto (<Ctrl-V>):
ctrl-v
jjjlll
Estando no modo bloco-visual, voce pode mudar o cursor de lado diagonalmente :
o
Ou mudar o cursor de lado lateralmente:
O
Esses comandos são úteis para aumentar/diminuir o lado oposto do cursor de um bloco visual.

Para sair do modo visual use <Esc>

Repetindo a última mudança no texto

Para repetir a última mudança do texto use o comando:
.
Para repetir cinco vezes a mudança:
5.
Ele não repete comandos de linha de comando (':').

Deletando a palavra 'teste' usando o repetidor de pesquisa ('n') e o repetidor
de edição ('.').
Localize a 1ª ocorrência:
/teste
Delete a palavra:
dw
Repita a procura:
n
Repita a deleção:
.
Faça os dois comandos até o fim de ocorrências.

Deletando a tag <b> de um HTML.
Localize a 1ª ocorrência:
f<
Delete o resto da tag:
df>
Repita até o fim das ocorrências:
f<
.

Alterando texto com deleção e inserção

O vim pode alterar um texto através de deleção e inserção.

Deleta 2 palavras a partir do e entra em modo inserção:
c2wtexto
Deleta a linha toda e entra em modo inserção:
S
cc
respeita a indentação corrente.

Deleta do cursor até o final da linha e entra em modo inserção:
C
c$
2C