Erlend
Hamberg
ehamberg@gmail.com
José
Pires

    zepires@gmail.com

Tradução

# O Modo de Entrada do VI

## Modo de Entrada do VI

O objectivo do modo do VI não é ser um substituto perfeito do Vim e suportar todas as funcionalidades do mesmo. O seu objectivo é criar a abordagem do Vim na edição de texto - assim como os hábitos adquiridos - e disponibilizá-la para os programas que usam o editor de texto &kate; como editor interno.

O modo do VI pretende integrar-se convenientemente com os programas e desvia-se do comportamento do Vim onde fizer sentido. Por exemplo, o ``:w`` irá abrir uma janela de gravação no modo de VI do &kate;.

Para activar o modo de entrada do VI para todas as janelas novas, vá a Configuração Configurar o &kate;... Edição Modo de Entrada do VI. Nesta página, poderá definir opções para este modo e editar a associação de teclas no mesmo. O modo em questão também poderá ser activado ou desactivado com a opção Modo de Entrada do VI do menu Editar. (A combinação de teclas por omissão é Meta&Ctrl;V - onde o Meta normalmente é a tecla do Windows).

### Incompatibilidades com o Vim

Existem apenas algumas funcionalidades do modo de VI do &kate; que são incompatíveis com o Vim (sem contar com as funcionalidades em falta). Estas aparecem abaixo em conjunto com as razões respectivas.

- &kate;: o U e o &Ctrl;R são o 'Refazer'.

  Vim: &Ctrl;R é o 'refazer' normal, enquanto o U é usado para anular todas as últimas alterações numa linha.

  A razão para ter o U a comportar-se como o 'refazer' no modo de VI do &kate; é que o &Ctrl;R, por omissão, é capturado pela função de substituição do &kate; (procurar e substituir). Por omissão, o modo do VI não irá substituir os atalhos do &kate; (isto poderá ser configurado em Configuração Configurar o &kate;... Edição Modo de Entrada VI), como tal, é necessária uma acção para refazer como uma tecla normal da mesma forma. Para além disso, o comportamento do comando U do Vim não se associa bem ao sistema de anulações interno do &kate;, pelo que seria difícil de implementar à mesma.

- &kate;: O ``print`` mostra a janela para Imprimir.

  Vim: O ``print`` imprime as linhas d intervalo indicado, como acontecia com o seu avô 'ed'.

  Os comandos como o ``:print`` estão disponíveis não só no modo VI mas também para os utilizadores que usam o &kate; normal também - daí, o comando ``:print`` abre a janela de impressão - seguindo o princípio da mínima surpresa em vez de imitar o comportamento do Vim.

- &kate;: O Y copia até ao fim da linha.

  Vim: O Y copia a linha inteira, como acontece com o yy.

  O comportamento do VI para o comando Y é, na prática, um erro. Tanto para os comandos de modificação como de remoção, o cc/ dd irão fazer a sua acção para a linha actual e o C/D irão funcionar desde a coluna do cursor até ao fim da linha. Contudo, tanto o yy como o Y copiam a linha actual. No modo de VI do &kate;, o Y irá copiar até ao fim da linha. Isto é descrito como sendo mais lógico na documentação do Vim.

- &kate;: O O e o o abre [quantidade] linhas novas e coloca-o no modo de inserção.

  Vim: O O e o o abrem uma linha nova e insere o texto [quantidade] vezes ao sair do modo de inserção.

  Isto normalmente é feito em consequência de assistir a muitas pessoas a confundirem-se com este comportamento num canal de IRC do 'vim' (#vim no freenode).

### Mudar de Modos

- O Modo Normal permite-lhe introduzir comandos para navegar ou editar um documento, sendo o modo predefinido. Poderá voltar a ele a partir de qualquer modo se carregar em &Esc;.

- O Modo Visual permite-lhe realçar o texto num documento. A maioria dos comandos do Modo Normal também são válidos neste modo. Poderá entrar no mesmo se carregar em v para seleccionar os caracteres ou em V para seleccionar linhas.

- O Modo de Inserção permite-lhe editar directamente o documento. Poderá entrar nele se carregar em i ou num dos vários comandos indicados em baixo.

- O Modo de Comandos permite-lhe executar certos comandos. Carregue em :, introduza o comando e carregue em &Enter;.

### Comandos suportados no modo normal/visual

a | Entra no modo de Inserção; adiciona a seguir ao cursor
A | Entra no modo de Inserção; adiciona a seguir à linha
i | Entra no modo de Inserção; insere antes do cursor
v | Entra no modo Visual; selecciona os caracteres
V | Entra no modo Visual; selecciona as linhas
o | Abre uma linha nova abaixo da linha actual
O | Abre uma linha nova acima da linha actual
J | Junta as linhas
c | Modificar: seguido de um movimento para apagar ou entrar no modo de inserção
C | Modificar até ao fim da linha: Apaga até ao fim da linha e entra no modo de Inserção
cc | Modificar a linha: Apaga a linha e entra no modo de Inserção
s | Substitui o carácter
S | Substitui a linha
dd | Apaga a linha
d | Seguido de um movimento para apagar
D | Apaga até ao fim da linha
x | Apaga o carácter à direita do cursor
X | Apaga o carácter à esquerda do cursor
gu | Seguido de um movimento para converter para minúsculas
guu | Converte a linha actual para minúsculas
gU | Seguido de um movimento de conversão para maiúsculas
gUU | Converte a linha actual para maiúsculas
y | Seguido de um movimento de yank (cópia)
yy | Copia a linha
Y | Copia a linha
p | Cola a seguir ao cursor
P | Cola antes do cursor
r | Seguido e um carácter para substituir o carácter após o cursor
: | Entra no modo de Comandos
/ | Procurar
u | Desfazer
&Ctrl;r | Refazer
U | Refazer
m | Define uma marca (pode ser usado posteriormente nos movimentos)
n | Procurar o seguinte
N | Procurar o anterior
>> | Indenta a linha
<< | Remove a indentação da linha
> | Indenta as linhas
< | Remove a indentação das linhas
&Ctrl;f | Página abaixo
&Ctrl;b | Página acima
ga | Imprime o valor em ASCII do carácter
. | Repete a última alteração
== | Comando de alinhamento da linha
= | Comando de alinhamento das linhas
~ | Muda a capitalização do carácter actual

### Movimentos suportados

Estes poderão ser usados para mover-se por um documento no modo Normal ou Visual, ou ainda em conjunto com um dos comandos acima. Estes poderão ser antecedidos de uma dada quantidade, que indica quantos movimentos serão feitos.

h | Esquerda
Esquerda | Esquerda
&Backspace; | Esquerda
j | Baixo
Baixo | Baixo
k | Cima
Cima | Cima
l | Direita
Direita | Direita
Espaço | Direita
$ | Fim da linha
End | Fim da linha
0 | Primeiro carácter da linha (Coluna 0)
Home | Primeiro carácter da linha
^ | Primeiro carácter não-vazio de uma linha
f | Seguido do carácter a mover para a direita do cursor
F | Seguido do carácter a mover para a esquerda do cursor
t | Seguido do carácter a mover para a direita do cursor, colocando o cursor no carácter antes do mesmo
T | Seguido do carácter a mover para a esquerda do cursor, colocando o cursor no carácter antes do mesmo
gg | Primeira linha
G | Última linha
w | Palavra Seguinte
W | Próxima palavra separada por espaços
b | Palavra anterior
B | Palavra anterior separada por espaços
e | Fim da palavra
E | Fim da palavra separada por espaços
ge | Fim da palavra anterior
gE | Fim da palavra anterior separada por espaço
| | Seguido de um número de coluna para se mover para essa coluna
% | Seguido de um item para mover para o mesmo
` | Marcar
‘ | Primeiro carácter não-vazio da linha onde se encontra a marca
[[ | Parêntesis de abertura anterior
]] | Parêntesis de abertura seguinte
[] | Parêntesis de fecho anterior
][ | Parêntesis de fecho seguinte

### Objectos de texto suportados

Estes poderão ser usados para seleccionar certas partes de um documento.

iw | Palavra interior: palavra incluindo os espaços em branco
aw | Uma palavra: palavra excluindo os espaços em branco
i" | Aspas (`"`) anteriores ate às seguintes, incluindo as mesmas
a” | Aspas (`"`) anteriores ate às seguintes, excluindo as mesmas
i' | Plicas (`'`) anteriores ate às seguintes, incluindo as mesmas
a' | Plicas (`'`) anteriores ate às seguintes, excluindo as mesmas
i( | Parêntesis de abertura anteriores [`(`] até aos seguintes [`)`], incluindo os mesmos
a( | Parêntesis de abertura anteriores [`(`] até aos seguintes [`)`], excluindo os mesmos
i[ | Parêntesis rectos de abertura anteriores (`[`) até aos seguintes (`]`), incluindo os mesmos
a[ | Parêntesis rectos de abertura anteriores (`[`) até aos seguintes (`]`), excluindo os mesmos

### Comandos suportados no modo de inserção

&Ctrl;d | Remover a indentação
&Ctrl;t | Indentação
&Ctrl;e | Comando de inserção em baixo
&Ctrl;y | Apaga a palavra
&Ctrl;w | Apaga a palavra
&Ctrl;Home | Vai para o primeiro carácter do documento

### O Objecto de Texto de Vírgulas

Falta este objecto no Vim. O objecto de texto de vírgulas simplifica a modificação das listas de parâmetros em linguagens como o C e em listas separadas por vírgulas. É basicamente a área entre duas vírgulas ou entre uma vírgula e um parêntesis. Na linha que aparece à direita, os três intervalos que este objecto de texto pode cobrir estão realçados a vermelho.

Um exemplo do Objecto de Texto de Vírgulas
Um exemplo do Objecto de Texto de Vírgulas

Intervalos dos objectos de texto com vírgulas. Se o cursor estiver sobre &eg; arg2, ao carregar em ci, (mudar a vírgula interior) iria apagar o double arg2 e colocar o cursor entre as duas vírgulas no modo de inserção. Uma forma bastante conveniente de mudar os parâmetros de uma função.

### Funcionalidades em Falta

Como foi dito anteriormente, o objectivo do modo de VI do &kate; não é suportar a 100% as funcionalidades do Vim; contudo, existem algumas funcionalidades que fazem realmente falta:

- Modo de bloco visual - especialmente a capacidade de anteceder/adicionar texto à selecção do bloco visual.

- Ter os comandos do 'ex' disponíveis noutros programas que não a aplicação &kate;.

- O código de pesquisa necessita de melhorias e os comandos * e # deveriam ser apenas pesquisas normais.