1. Lendo manpage
$ man assunto | col -b | vim -
No gvim (modo Ex)
:new|read!man tar|col -b
2. Abrir todos os arquivos que contenham uma determinada palavra
$ vim `fgrep -l <palavra> *.ext`
3. Mapeamento para inserir linha com repetição de char
:map - <Esc>o<Esc>78a-<Esc> :let @q="*"|normal i" ^[76"qp
4. Mapeamento para Ctrl-key
exemplo01: mapeando a tecla Ctrl-t
:map ^V^T iOla Mundo
exemplo02: mapeando a tecla Ctrl-a
:map ^V^A iOla Mundo
exemplo03: mapeando a tecla Ctrl-a
:map <c-a> iOla Mundo
exemplo04: mapeando a tecla Ctrl-a
:map <char-1> iOla Mundo
5. Filtrando comandos internos
Exemplo01:
1,10m$|g/Essas/ p
Exemplo02: move bloco de texto para última linha do arquivo e substitui 'Essas' por 'Aquelas' dentro do bloco.
1,10m$|s/Essas/Aquelas/g
6. Contando os padrões encontrados na edição
:let i=0|%g/{padrao}/let i=i+1 :echo i
7. Mapeamento
Qual o mapeamento de <F4> ?
:map <F4>
Quais os mapeamentos dos comandos que iniciam por ; ?
:map ;
mapea modo limpar exemplo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ map n unmap map <F5> :Ex<cr> +-----> map!/imap i unmap! imap ff File folder | iabb[rev] i una[bbreviate] iabbr oi oiMundo +-----> cmap lc cunmap cmap oi echo "oi mamae" | cab lc cuna cab oi echo "Oi" | -------------------------------------------------------- | +--------------- não é necessário <spaço> e/ou [enter] após comando. n/c - modo normal ou modo de comando i - modo de inserção lc - modo de linha de comando v - modo visual R - Reposição B - Busca sintaxe : comando-Mapeador {key[[key]...]} {comando[s]}
Formato define-mapeia ou mapeamento referenciado, sintaxe:
nnoremap \{nomeExterno} {comando[s]} {map-modo01} {combinação-tecla[s]02} \{nomeExterno} {map-modo02} {combinação-tecla[s]03} \{nomeExterno} {map-modo03} {combinação-tecla[s]04} \{nomeExterno}
exemplo:
nnoremap \key :let @m="oi gente"<cr>:put m<cr> nmap <F5> \key imap <F5> <c-o>\key
8. Abreviacoes
ab - mostra todas as abreviações abc[lear] - limpa todas as abreviações iab - mostra todas as abreviações do modo de inserção iabc[lear] - limpa todas as abreviações do modo de inserção cab - mostra todas as abreviações do modo de comando cabc[lear] - limpa todas as abreviações do modo de comand
9. Movimentação por links
movimentação '{char}
para linkar :<range> mark {char}
10. Lendo man page ou help de programas externos
read !man dc|col -b read !bc --h
11. Convertendo formato entre janelas
convertendo do formato horizontal para o vertical.
de
W|W|W
para
W W W
:windo wincmd K
convertendo do formato vertical para o horizontal.
de
W W W
para
W|W|W
:windo wincmd H
12. Numerando linhas selecionadas
usando um comando linux externo:
:'<,'>!cat -n :3,10!cat -n|tr '^I' '-'
usando Vim-Script:
- com variável
a) let i=0|'<,'>g/^/let i=i+1|s//\=i/g b) let i=0|'a,'eg/^/let i=i+1|s//\=i/g c) let i=0|2,200g/^/let i=i+1|s//\=i/g
- com registro
a) let @s=0|'<,'>g/^/let @s=@s+1|s//\=@s/g b) let @s=0|'a,'eg/^/let @s=@s+1|s//\=@s/g c) let @s=0|2,200g/^/let @s=@s+1|s//\=@s/g
- com funcoes do Vim
a) '<,'>s/^/\=(line('.') - line("'<") + 1)/g" b) 's,'qs/^/\=(line('.') - line("'s") + 1)/g" c) '20,46s/^/\=(line('.') - 20 + 1)/g"
- com minhas próprias funcoes
a) '<,'>s/^/\=INC(1)/g"
+====================+====================+====================+ | valor | :echo (valor) | :echo strlen(valor)| +====================+====================+====================+ | 987654321 % 10 | 1 | 1 | | 987654321 % 100 | 21 | 2 | | 987654321 % 1000 | 321 | 3 | | 987654321 % 10000 | 4321 | 4 | | 987654321 % 100000 | 54321 | 5 | | 987654321 % 1000000| 654321 | 6 | +--------------------+--------------------+--------------------+ :let c=3|let s=20|exec "normal i+^[ ".c."i".Espaco(s,'-')."+" insere a linha da tabele acima
13. invertendo linhas em arquivo
:'<,'>g/^/m '< :25,67g/^/m 25
14. Executando comando externo no modo de comando
a)
no modo de comando de linha
:let @a=".!seq 5"
executando o comando contido no registro a:
@a
b)
no modo de comando de linha
:let @s=":%!sort -u"
executando o comando contido no registro s:
@s
15. Metacaracteres especiais
meta exemplo Casamentos +~~~~~+~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ | | | | \@= | Buf\(Read\)\@= | BufReadPost, BufRead, BufReadPre,BufReadPost | | | | | | siguinificado:casa 'Buf' se 'Buf' sucedido | | | por 'Read' +-----+-----------------+------------------------------------------------+ | | | | \@! | Buf\(Read\)\@! | BufWritePost, BufNewFile, BufWritePre | | | | | | siguinificado:casa 'Buf' se 'Buf' não for | | | sucedido por 'Read' +~~~~~+~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ | | | |\@<! | \(Read\)\@<!Post| BufWritePost, FileWritePost, FileAppendPost | | | | | | siguinificado:casa 'Post' se 'Post' não for | | | precedido por 'Read' +-----+-----------------+------------------------------------------------+
16. Capturando saída de comando externo como string
let a=system('ls') echo matchstr(system('cygpath -m /'), "^.*\\ze\n") . '/' echo substitute(system('gcc -v'),'\s\+','\n','g')
17. Comandos duplos
- indentexpr, indentexpr:
setlocal indentexpr=GetPascalIndent() setlocal indentkeys+==end,=else,=type,=var,=Begin
- grepprg, grepformat:
setlocal grepprg=lid\ -Rgrep\ -s setlocal grepformat=%f:%l:%m
- makeprg, errorformats:
let &l:makeprg set makeprg=make\ #<.o set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} let &mp = 'latex \\nonstopmode \\input\{$*}' set makeprg=gcc\ -o\ $*\ $* set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
18. Fechando blocos de código
let &foldmarker="if,endif"|echo &foldmarker
19. Isere string em linha especifica
:call setline(5,strftime("%d.%m.%Y %X"))
20. Isere string em linha especifica
:let id="valor" :put =expand(id) :let @g="Eu amo o VIM" :exe 'normal 20"gp' :exe "normal 200\p" :exe "normal \iOi Caroline" :'<,'>s/^/\='U'.Espaco(9,'k')/g :'<,'>s/^/\='<'.Espaco(9,'-').'>'/g :let m="<right>"|exe 'normal '.10.'i'.m
21. Deletando
: {linha} delete {contador}
por exemplo
: n delete 5
irá deletar as linhas n,n+1,...,n+5
22. tipos de variáveis
aviso aos navegantes: &texwidth é o valor armazenado em texwidth
:set texwidth 78 :let b:a=texwidth ERRADO :let b:a=&texwidth CERTO echo (b:a) 78 :let &texwidth=25 CERTO :set texwidth 45 selecione 12 < colune < 18 e linha <10 exe '/\%>' . '12c' . '\&.*' . '\%<18c' . '\&.*' . '\%<10l'
23. gravando o histórico da linha de comandos em um arquivo
$fc -l cp > ultimos-comandos vi lastcommands$ source lastcommands | | +------ O comando fc edita o shell com seu editor preferido. um exemplo interessante é escrever na linha de comando `fc` $fc $fc -s -- executa o último comando editado na linha de comando $fc -s gcc -- executa o último comando `gcc` editado na linha de comando
24. salvando como
para tanto usamos o comando w (write)
exemplo:
:2,8w nome_noivo_Arquivo.txt
salvando da linha 2 a 8 no arquivo nome_noivo_Arquivo.txt
exemplo2:
:g/pattern/ .+2 !>> nome_noivo_Arquivo.txt
salva as linhas que casarem com a combinaço pattern, sendo assim as mesmas 2 pontos abaixo.
25. Alteração em tempo de execução
vi -c":%s/include/Bala da GOMA/g" max.c
26. codificando
map <F12> ggVGg?
27. Folding
Folding :
i. Folding Markers := <{ >} ii. Close One Fold := zc iii. Open One Fold := zv iv. Open All Fold := zn v. Close All Fold := zm
Move Around :
i. First Line := :0 ii. Last Line := :$ iii. Move To Line := :XX (XX is for Line Number)
28. para os espertos
nmap <c-s> :w<CR> vmap <c-s> <esc><c-s> imap <c-s> <esc><c-s>
The F2 series of mappings are different; they only write if needed (performing an update) AND return you to where you were: insert mode, visual selection etc.
nmap <f2> :update<cr> vmap <f2> <esc><f2>gv imap <f2> <c-o><f2>