| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

vim

Page history last edited by PBworks 16 years, 6 months ago

Vim editor


"        ( O O )
" ====oOO==(_)==OOo=====

"             °v°
"            /(_)
"             ^ ^



 

Uma excelente referência para quem quer aprender a usar o vim pode ser acessado neste link:

 

Dica inicial

 

Definindo o vim como editor padrão

coloque dentro do seu arquivo .bashrc

  export EDITOR=vim
  export VISUAL=vim

 

 

Tabela de dicas

atalho ação
:w salva o arquivo atual
^wq fecha arquivo salvo
gUiw torna maiúscula uma palavra
gUU torna maiúscula uma linha
^r^a coloca a palavra sob o cursor no comando

 

Deletando

atalho ação
dd deleta uma linha
3dd deleta 3 linhas
3dw deleta 3 palavras

 

Copiando

atalho ação
yy copia uma linha
2yy copia duas linhas
yip copia o parágrafo atual
"+y copia para a área de transferência
^y repete a linha superior

 

Usando registros

"ayy copiaa linha atual para o registro a
"ap cola o conteúdo do registro a na posição atual
"*yy leva para a área de tranferência

 

Movendo-se

atalho ação
gg vai para a primeira linha do arquivo
G vai para a última linha
:23 vai para a linha 23
ma cria uma marca 'a'
`a vai para a marca 'a'
^f coloca o cursor no topo da tela - avança
^b coloca o cursor na base da tela - recua
control-o retrocede na lista de saltos
control-i avança na lista de saltos
g, vai para a modificação mais recente
g; vai para a modificçaão mais antiga
gf abre o arquivo sob o cursor
'0 abre o último arquivo editado
'1 abre o penúltimo arquivo editado

 

Indentando

>> .......... indenta a linha atual

>ip ......... indenta o parágrafo atual

^t .......... indenta em "modo insert"

^d .......... remove indentação em "modo insert"

 

Trabalhando com janelas

Atalho Ação
^wn nova janela
^wv abre nova janela na vertical
^wc fecha a janela atual
^wk janela acima
^wj janela abaixo
^w+ aumenta o tamanho da janela atual
^wq fecha janela atual
^wo torna janela atual a única na tela
^wr troca janelas de posição

 

Editando multiplos arquivos

vim * abre todos os arquivos do diretório atual
:bufdo %s/caza/casa/e substitui caza por casa em toso os arquivos abertos
:wall salva todos os arquivos abertos
:qall fecha todos os arquivos abertos
:bn vai para o próximo arquivo (buffer)
:bp vai para o arquivo anterior
:wn salva o arquivo atual e vai para o próximo
:wp salva o arquivo atual e vai para o anterior

 

Modos de operação

Atalho Ação
^[ sai do modo insert
^L sai do modo insert

 

Buscas

Atalho Ação
/palavra busca 'palavra'
// repete a última busca
/palavra/e busca palavra e vai para o final da mesma
n (modo normal) repete a última busca
. (modo normal) repete a última ação

 

Regex para validar IP

postarei a expressão em breve!

 

Exibindo o valor decimal/hexadecimal do caractere sob o cursor

Pressione ga em modo normal

 

/forum(_.)*pent   busca em possível multilinha
/fred_s*joe/i    : qualquer espaço em branco incluindo nova linha
/fred|joe        : busca por FRED OU JOE 

v or very magic (usually) reduces backslashing
/codes(n|s)*where  : normal regexp
/vcodes(n|s)*where   : very magic 

 

File explorer

" atalho para o gerenciador de janelas :Vex
" Abrir com explorer em nova janela
let g:netrw_altv = 1
map <F2> <esc>:vne .<cr><bar>:vertical resize -40<cr><bar>:set nonu<cr>

 

Imprimindo

 :ha
 :ha!

 

Remover duas ou mais linhas vazias entre parágrafos diminuindo para uma só linha vazia.

 :%s/(^n{2,})/r/g 

 

Removendo tags html

  :%s/<[^>]*>//g

 

Mapeamento para limpar o buffer de buscas

É um mapeamento muito bom pois ao invés de desabilitar o destaque colorido ele apenas

limpa o buffer de buscas

nno <S-F11> <esc>:let @/=""<CR>

 

Inserindo a ultima busca, comando ou nome do arquivo no texto

<c-r>/

Para inserir o nome do arquivo faça:
<c-r>%

Para inserir o último comando no texto:
<c-r>:

Para repetir exatamente a última inserção
<c-a>

Para complementar a inseração de linhas
<c-x><c-l>

Para complementar com palavras
<c-x><c-p>


Para complementar à partir do dicionário
<c-x><c-k>

Para repetir linha acima caractere por caracte
<c-y>

Para repetir linha abaixo caractere por caractere
<c-e>

 

Repetindo a última substituição

 &

 

Inserindo um registrador em modo normal

Para criar um registrador em modo normal faça:
"ayy ........... copia a linha atual para o registrador a
"ayiw .......... copia a palavra atual para o registrador a

em modo insert faça:

  Control + r  + a

 

Procurando padrões e inserindo em outro arquivo:

  :'a,'b/^Padrão/ . w! >> ~/tmp/busca.txt

 

Tornando maiúsculo todo o texto

  gggUG

Para tornar maiúsculo apenas um trecho faça

 

:5,25 normal gUU

 

Ou

:5,25/./U&/g

 

Contando ocorrências de um padrão

fonte: http://aurelio.net/doc/vim/vim-dicas-ivan.html

:let i=0|%g/{padrao}/let i=i+1
:echo i

 

Usando comandos externos no vim

Para ordenar alfabeticamente todas as linhas de um arquivo:

  :%!sort

Para ordenar as linhas de um arquivo, com múltiplos campos separados pelo caractere ":", pelo terceiro campo:

  :%!sort -t ":" -k2

   3. Para ordenar as linhas de um arquivo, com múltiplos campos separados pelo caractere ":", pelo segundo campo, em ordem reversa: 

  :%!sort -r -t ":" -k2


 

7 hábitos para edição efetiva de textos

Mova-se rapidamente

Use /padrão ics hls % marcas saltos

Não digite duas vezes

Use macros, comandos de substituição :%s/isto/aquilo/g * . n N

Corrija o que está errado

Use abreviações iab slas Sérgio Luiz Araújo Silva

Detecte ineficiência

Encontre um jeito melhor de fazer

Faça disto um hábito

Produza textos estruturados

 

Exemplos:

usando o comando bufdo, macros e asterisco as coisas acontecem mais rápido no vim

 

Hábito 1 - Moverse rapidamente no documento

  • user marcas
  • use buscas /
  • use o 'n' next

 

  • use o asterisco (muito) e hls (busca com cores)
  • use os folders
  • use o autocomplemento 'tab' ou seja não digite duas vezes
  • use as abreviações no vimrc

 

Versão 7

O vim em sua mais nova versão agora suporta abas, basta fazer

:tabnew ~/arquivo

:tabnext

:tabprevious

:tabclose

 

Como executar uma macro em vários arquivos no vim?

Volta e meia alguém pergunta como editar vários arquivos

no vim, mas se a pergunta fosse:

Como executar uma macro em vários arquivos no vim?

 

Resposta:

1º Obviamente gravar a macro (help complex-repeat)
2º :bufdo exe "normal @q" | w

:wall .......... salva todos
:qall .......... fecha todos

 

Segredos úteis do vim

O comando abaixo procura por /teste/ deleta
e cola na linha 9

 :g/teste/d | 9 normal p

O comando abaixo procura um padrão, adiciona um outro padrão ao fina 
da referida string e deleta as 15 linhas subsequentes.
  
   :g/(ISOE456A1)$/ | s/(ISOE456A1)$/1teste/ | normal 16J | 0elD

 

Removendo os finais de linha do DOS/Windows ^M

 :%s/r//g

 

Comandos globaix

:rg/p/c↵  .... executa comando  Ex 'c' na faixa 'r' onde padrão 'p' combinar

 

 

Folders - dobras

O recurso de folding do editor Vim, serve para organizar melhor um texto ou código fonte de um programa, pois com ele cria-se um "resumo" de partes do texto.

Vim folding commands

zf#j creates a fold from the cursor down # lines.
zf/string creates a fold from the cursor to string .
zj moves the cursor to the next fold.
zk moves the cursor to the previous fold.
zo opens a fold at the cursor.
zO opens all folds at the cursor.
zm increases the foldlevel by one.
zM closes all open folds.
zr decreases the foldlevel by one.
zR decreases the foldlevel to zero -- all folds will be open.
zd deletes the fold at the cursor.
zE deletes all folds.
[z move to start of open fold.
]z move to end of open fold.

 

 

Para que o vim preserve os folders use no seu ~/.vimrc

au BufWinLeave * mkview

au BufWinEnter * silent loadview

 

Vim tips

Gostaria de saber como posso fazer para o seguinte conteúdo:

texto
texto
texto
 
fique:
 
001_texto
002_texto
003_texto

Marque a regiao desejada e:

:let i=1 | '<,'>g/^/s//=printf("%03d_",i)/ | let i=i+1

 

 

 

If you're finding that 'zo' and 'zc' are hard to type or remember, you could use <spacebar> and <backspace> to open and close folds:

nnoremap <space> zo
nnoremap <backspace> zc

Or, you could just use the <spacebar> to do both:

nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> 

 

Referências

Comments (0)

You don't have permission to comment on this page.