sábado, 23 de maio de 2009

Colando texto do registrador com indentação no modo normal

Se você tem algum texto em um registrador, você usaria no modo normal:
"registradorp
"registradorP
para colar. Mas se o registrador já estiver indentado e a auto-indentação estiver ligada o resultado poderá ser confuso (dupla-indentação).
O comando:
"registrador]p
"registrador]P
faz a mesma coisa, mas também ajusta a indentação conforme o local.

Colando texto do registrador com indentação no modo inserção

Normalmente, no modo inserção, para inserir o conteúdo de registradores se usa:
<Ctrl-R>registrador
Mas isso, especialmente em código de programas, pode causar problemas.

Se o conteúdo do registrador é uma cópia de um código já indentado, ao inserir, o
Vim usa essa indentação e mais a indentação automática, causando uma dupla
indentação. Isso produz um layout errado.

Uma alternativa é usar:
<Ctrl-R><Ctrl-O>registrador
isso insere o conteúdo do registrador mas sem fazer a auto-indentação. O problema é que o conteúdo já tem a indentação original e pode não ser coerente com o local
aonde está sendo inserindo.

Para inserir com o Vim recalculando a indentação correta use:
<Ctrl-R><Ctrl-P>registrador

Removendo a indentação automática temporariamente

Suponha que você está editando um programa com 'autoindent' gerando indentações automáticas.
Num certo ponto você deseja colocar um bloco de comentários sem ser afetado pela
indentação automática.

Um modo é usar
<Ctrl-D>
repetidamente.
Outra é digitar:
 0<Ctrl-D> 
Isso faz com que o editor remova toda indentação automática e coloque o cursor
na coluna 1, enquanto estiver no modo inserção.

Agora, você quer digitar um label ou uma diretiva '#ifdef' na coluna 1, mas
somente em uma linha e depois volta para a autoindentação.
Use:
 ^<Ctrl-D> 
quando você entrar na linha seguinte volta a autoindentação.

Evitando a repetição de uma seleção no modo seleção

Após a execução de um mapeamento e menu a seleção do modo seleção é restaurada (a não ser que a área tenha sido deletada).

Para evitar, especialmente em macros que selecionam, fazem algum coisa e depois
se quer que a seleção desapareça, use o comando:
gV

Mudando do modo seleção para o modo visual

Se você estiver no modo seleção, use o comando:
<Ctrl-O>
para executar um único comando no modo visual. Após isso, volta ao modo seleção.
Para mudar para o modo visual sem retornar para o modo seleção use:
<Ctrl-G>

Alterando e deletando texto com o modo seleção

O modo seleção é semelhante ao modo visual, porém mais limitado.
No modo seleção você só pode usar <Backspace> para deletar e caracteres visíveis
para substituir.
Isso é mais rápido que a seleção visual porque você não precisar entrar um
comando no final para fazer a mudança. Mas o repertório é bem menor.

Para selecionar use:
gh    inicie uma seleção caractere por caractere.
gH inicie uma seleção linha a linha.
gCtrl-H inicie uma seleção de bloco.
Mova o cursor com teclas de direção (flechas) para completar a seleção.

Para deletar use:
<BS> ou <Ctrl-H>

Para substituir:
Digite o primeiro caractere visível, o editor entra em modo
inserção.
Continue a entrar o texto.
<Esc>

sexta-feira, 22 de maio de 2009

Codificando um bloco de texto

Com um texto selecionado, use o comando:
g?
para codificar (tornar incompreensível) ou para retirar a codificação.
É usado o esquema de codificação Rot13.
Para descodificar, chame de novo o comando.

Abrindo uma janela com o primeiro arquivo que contenha uma palavra

Se você posicionar o cursor sob uma palavra e pressionar:
<Ctrl-W><Ctrl-I>
o vim pesquisará no arquivo corrente e nos includes, retornando a primeira
ocorrência na nova janela.

Abrindo uma janela com o arquivo alternado

Para dividir a janela e editar o arquivo alternado use:
<Ctrl-W><Ctrl-^>

quarta-feira, 20 de maio de 2009

Movendo o cursor no modo inserção

No modo inserção não se pode usar as teclas tradicionais de movimento (hjkl).
Use ao invés:
<Left>
<Right>
<Up>
<Down>
Pressionando ao mesmo tempo a tecla
<Ctrl>
o movimento é por palavra.
<Home>
move para o início e <End> para o fim da linha.
Para mover para o início:
<C-Home>
para o fim da linha:
 <C-End>
Para mover uma tela para frente e para trás:
<PageUp> e <PageDown>

terça-feira, 19 de maio de 2009

Abrindo um arquivo com a execução de um comando

Você pode iniciar o Vim executando um comando logo no início.
Para posicionar o cursor numa linha use:
gvim +87 file.c
Para pesquisar um string e posicionar o cursor :
gvim +/include file.c
Para executar um comando logo após abrir um arquivo:
gvim +/set\ dir=/tmp file.c
Se houver espaços na expressão regular e no comando eles deve ser escapados (\).