O documento fornece uma introdução ao editor de texto Vim, descrevendo seus principais modos de funcionamento e comandos para navegação, edição, remoção, colagem e pesquisa de texto no modo normal, visual e de linha de comando. É apresentada a sintaxe dos comandos Ex internos e as definições de configuração mais comuns no arquivo .vimrc.
1. Perl from Vi - Part I
Luciano Rocha
Braga.pm http://braga.pm.org/
26 de Outubro de 2006
2006 Perl from Vi - Part I
2. Vim
Introdução
Vim
Vim (“Vi IMproved”) é um editor de texto configurável e programável,
desenhado para edição de texto rápida e eficiente.
Suporta colorização por sintaxe, escrita inteligente, compilação e
navegação por erros, funções, variáveis e tipos.
Url: http://www.vim.org/
Diferentes modos de funcionamento:
normal: introdução de comandos (o modo inicial);
visual: introdução de comandos e extensão de área de acção;
command-line: comandos ex/filtragem/procura;
insert: inserção de texto;
...
2006 Perl from Vi - Part I
3. Vim
Introdução
Quickref
:help
voltar para o modo normal: Escape
sair e gravar: ZZ ou :wq
sair sem gravar: :q!
definições: ~/vimrc
modeline (definições por ficheiro): #vim:opcao opcao:opcao
2006 Perl from Vi - Part I
4. Vim Modo Normal
Deslocamento
Formato
[vezes]comando[deslocamento]
Comandos
gg, G: início e fim do documento;
Ctrl+u, Ctrl+d: página;
h, j/+, k/-, l: deslocamento ←, ↓, ↑, →;
0, $: início e fim da linha;
b, e: início e fim da palavra actual;
w, ge: início da próxima palavra; fim da palavra anterior;
Exemplos
20G: ir para a linha 20
5-: retroceder 5 linhas
2w: avançar 2 palavras
2006 Perl from Vi - Part I
5. Vim Modo Normal
Deslocamento, cont.
Comandos, cont.
B, E, W: b/e/w, mas considerando o espaço como separador de
palavra;
f, F, t, T[carácter]: próximo ou anterior carácter especificado,
inclusivo/exclusivo (na mesma linha);
%: início ou fim do bloco actual (), {};
Exemplos
f}: ir para próximo }
F{: ir para anterior {
%: trocar entre as duas posições dos
dois exemplos anteriores
2006 Perl from Vi - Part I
6. Vim Modo Normal
Deslocamentos adicionais
Deslocamentos adicionais
prefixo a/i: "a"/"inner": texto interior, excluindo ou incluindo o
delimitador;
delimitadores {,[,(,<,",’,‘ e correspondentes: texto entre esses
dois limitadores;
delimitador t: entre tags correspondentes (<b>...</b>)
Exemplos
if ($true) { print "<p>ola</p>"; }
a( -> ($true)
i{ -> { print "<p>ola</p>"; }
it -> ola
2006 Perl from Vi - Part I
7. Vim Modo Normal
Remoção
Comandos - remoção
x: apagar carácter;
d[deslocamento]: eliminar selecção;
c[deslocamento]: substituir selecção;
dd/cc: eliminar/substituir linha;
D/C: substituir até final da linha;
Exemplos
/usr/bin/bc
2dt/ -> /bc
2df/ -> bc
3x -> r/bin/bc
ct//local<ESC> -> /local/bin/bc
2006 Perl from Vi - Part I
8. Vim Modo Normal
Colagem/Marcação
Colagem
["a-z]y[deslocamento]: copiar para o registo especificado;
["a-z]p: colar conteúdo do registo na linha/caractér seguinte;
["a-z]P: colar conteúdo do registo na linha/caractér actual;
yy/Y: copiar linha completa
Marcação
ma-z: marcar registo especificado;
’/‘/g’/g‘: ir ou referir marca especificada;
2006 Perl from Vi - Part I
9. Vim Modo Normal
Alteração
Comandos
«/»: alterar “indent”;
J: juntar linhas;
gq/gw: reformatar;
i: inserir na posição actual;
a: inserir na posição seguinte;
A: inserir no final da linha;
I: inserir no início da linha (ignorando espaços);
r: substituir carácter actual;
R: modo de substituição;
s: eliminar carácter actual, ir para modo de substituição;
S: substituir linha actual;
o: adicionar nova linha;
O: inserir nova linha;
u, Ctrl-R: undo/redo;
2006 Perl from Vi - Part I
10. Vim Modo Visual
Modo visual
Activar
v: modo visual linear, começando no carácter actual;
V: modo visual por linha, começando na linha actual;
Ctrl+V: modo visual por blocos, começando na posição actual;
gv: selecção antiga;
Comandos
O/o: movimentação na selecção (início/fim);
...: comandos especificados anteriormente com acção sobre a
selecção;
: trocar maiúsculas/minúsculas;
u/U: tornar maiúsculas/minúsculas;
I/A: inserir no início/final do bloco. A alteração é propagada por
todas as linhas do bloco;
2006 Perl from Vi - Part I
11. Vim Command-line
Command-line
Pesquisa
*, #: pesquisa (avançando/retrocedendo) da palavra actual;
/, ?: introdução de expressões regulares (normais) de pesquisa;
Filtragem
!: executa o comando introduzido, com input a linha ou selecção
actual, e substitui o original pelo resultado.
Ex
: -> Introdução de comandos Ex.
2006 Perl from Vi - Part I
12. Vim Ex
Formato
Formato
[intervalo]comando[argumentos]
Intervalo
.: linha actual;
0, $: início e fim do ficheiro;
%: todo o ficheiro;
0-9: número da linha;
’a-z: marca;
’<, ’>: início e fim de selecção actuais;
/pesquisa/, ?pesquisa?: primeira linha encontrada que satisfaz a
expressão de pesquisa;
+0-9, -0-9: critério anterior, mais ou menos número de linhas
especificadas;
criterio,criterio: desde primeiro critério até ao seguinte;
2006 Perl from Vi - Part I
13. Vim Ex
Comandos
Comandos
d: apagar;
!: filtrar;
r: ler de ficheiro;
y: copiar;
s: /search/replace/gi; / é seleccionável;
Exemplos
:%s/old/new/g
-> substituir old por new em todo o ficheiro
:?^diff?,/^diff/-1d
-> eliminar ficheiro actual no patch
:’<,’>!sort -n -k2
-> ordenar pela segunda coluna, numericamente
2006 Perl from Vi - Part I
14. Vim Ex
Comandos, cont.
Comandos
w, e: gravar/editar, com nome de ficheiro facultativo;
g: efectuar comando globalmente;
earlier/later: voltar à situação existente na altura especificada;
Exemplos
:e!
-> reeditar ficheiro, ignorando alterações
:,$w /tmp/tail
-> criar /tmp/tail com o conteúdo do ficheiro
desde a linha actual
:g/^#/d
-> eliminar todas as linhas começadas por #
:earlier 10m
-> voltar à situação 10m atrás
2006 Perl from Vi - Part I
15. Vim Ex
Comandos, cont.
Comandos
syntax on: activar colorização de sintaxe;
filetype indent plugin on: detecção de sintaxe/indent;
make: compilar e analisar os erros;
cnext, cprev: saltar entre os erros de compilação;
tag: procurar por tag (ctags/cscope);
tnext, tprev: saltar entre tags encontradas;
n, N: próximo ou anterior ficheiro especificado na linha de
comandos;
retab: reconstruir tabs;
set: alterar definições;
2006 Perl from Vi - Part I
16. Vim Ex
Definições
Definições
syntax=tipo: definir tipo de sintaxe (perl, C, sh, java, ...);
autoindent, cindent, copyindent: activar autoindentação;
noai, nocin, noci: desactivar;
filetype=tipo: definir tipo de ficheiro, definindo syntax e
autoindent;
fileencoding=tipo: enconding do ficheiro: latin1, utf-8, ...;
fileformat=tipo: formato de delimitador de linhas: dos, unix, mac;
tw=número: tamanho máximo de linhas esperado;
et: expand tabs, tabs são transformadas em espaços;
sw=número: número de espaços para » e «;
ts=número: número de espaços que um tab ocupa;
2006 Perl from Vi - Part I
17. Vim Exmplo
.vimrc
set tw=76
syntax on
set nocompatible
set bs=2
set nocindent
set noautoindent
set ruler
set showmatch
set history=50
set incsearch
set nohlsearch
set nobackup
set showcmd
2006 Perl from Vi - Part I
18. Vim Exmplo
.vimrc
set grepprg=grep -nH $*
filetype indent plugin on
if has("autocmd")
autocmd BufReadPost *
if line("’"") > 0 && line ("’"") <= line("$") |
exe "normal g’"" |
endif
endif
let c_comment_strings=1
let is_bash=1
cmap NOAI set noai nocin noci
2006 Perl from Vi - Part I