Vim/Hábitos para edição efetiva

< Vim

Introdução editar

Um dos grandes problemas relacionados com os softwares é sua subutilização. Por inércia o usuário tende a aprender o mínimo para a utilização de um programa e deixa de lado recursos que poderiam lhe ser de grande valia. O mantenedor do Vim Bram Moolenaar recentemente publicou vídeos e manuais sobre os "7 hábitos para edição efetiva de textos", este capítulo pretende resumir alguns conceitos mostrados por Bram Moolenaar.

Mova-se rapidamente no texto editar

  • Use marcas
  ma ................ em modo normal cria uma marca a
  'a ................ move o cursor até a marca a
  d'a ............... deleta até a marca a
  y'a ............... copia até a marca a

Além das marcas o vim permite a movimentação por outros métodos

  gg ................ vai para a linha 1 do arquivo
  G ................. vai para a última linha do arquivo
  0 ................. vai para o início da linha
  $ ................. vai para o fim da linha
  fx ................ pula até a próxima ocorrência de x
  dfx ............... deleta até a próxima ocorrência de x
  g, ................ avança na lista de alterações 
  g; ................ retrocede na lista de alterações 
  p ................. cola o que foi deletado/copiado abaixo
  P ................. cola o que foi deletado/copiado acima
  H ................. posiciona o cursor no primeiro caractere da tela
  M ................. posiciona o cursor no meio da tela
  L ................. posiciona o cursor na última linha da tela
  • Use asterisco * para localizar a palavra sob o cursor
  • Use o percent % serve para localizar fechamento de parêntese chaves etc
    '.  apostrofo + ponto retorna ao último local editado
    '' retorna ao local do ultimo salto

Suponha que você está procurando a palavra 'argc':

/argc

Digita 'n' para buscar a próxima ocorrência

n 

Um jeito mais fácil seria:

"coloque a linha abaixo no seu vimrc
:set hlsearch

Agora use asterisco para destacar todas as ocorrências do padrão desejado e use a letra 'n' para pular entre ocorrências, caso deseje seguir o caminho inverso use 'N'.

Use quantificadores editar

Em modo normal você pode fazer

10j ............. desce 10 linhas
5dd ............. apaga as próximas 5 linhas
:50 ............. vai para a linha 50
50gg ............ vai para a linha 50

Veja também: movendo

Não digite duas vezes editar

  • O vim complementa com tab
  • Use macros veja na seção repetição de comandos
  • Use abreviações coloque abreviações como abaixo em seu ~/.vimrc

as abreviações fazem o mesmo que auto-correção e auto-texto em outros editores

 iab tambem também
 iab linux GNU/Linux
  • No modo insert você pode usar
 Control + y  ......... copia caractere a caractere a linha acima
 Control + e  ......... copia caractere a caractere a linha abaixo
  • Para um trecho muito copiado coloque o seu conteúdo em um registrador
 "ayy  ........... copia a linha atual para o registrador a
 "ap   ........... cola o registrador a

Crie abreviações para erros comuns no seu arquivo de configuração (~/.vimrc)

iabbrev teh the
syntax keyword WordError teh

As linhas acima criam uma abreviação para erro de digitação da palavra 'the' e destaca textos que você abrir que contenham este erro.

Edite vários arquivos de uma só vez editar

O Vim pode abrir vários arquivos que contenham um determinado padrão. Um exemplo seria abrir dezenas de arquivos html e trocar a ocorrência

 bgcolor="ffffff" 

Para

 bgcolor="eeeeee"

Usaríamos o seguinte comando

 vim *.html
 :bufdo :%s/bgcolor="ffffff"/bgcolor="eeeeee"/g
 :wall
 :qall

Ainda com relação à edição de vários arquivos poderia-mos abrir alguns arquivos txt e mudar de um para o outro assim:

:wn 

O w significa gravar e o 'n' significa next, ou seja gravaria-mos o que foi modificado no arquivo atual e mudaríamos para o próximo.

Use folders 'dobras' editar

O vim pode ocultar partes do texto que não estão sendo utilizadas permitindo uma melhor visualização do conteúdo. Veja a seção usando folders

Use autocomandos editar

No arquivo de configuração do vim ~/.vimrc você pode criar comandos automáticos que serão executados diante de uma determinada circunstância

O comando abaixo será executado em qualquer arquivo existente, posicionando o cursor no último local editado

  autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal g`\"" |
    \ endif

Grupo de comandos para arquivos do tipo html/htm. Observe que o autocomando carrega um arquivo de configuração do vim exclusivo para o tipo html/htm e no caso de arquivos novos "BufNewFile" ele já cria um esqueleto puxando do endereço indicado

  augroup html
   au! <--> Remove all html autocommands
    au!
    au BufNewFile,BufRead *.html,*.shtml,*.htm set ft=html
    au BufNewFile,BufRead,BufEnter  *.html,*.shtml,*.htm so ~/docs/vim/.vimrc-html
    au BufNewFile *.html 0r ~/docs/vim/skel.html
    au BufNewFile *.html*.shtml,*.htm /body/+  " coloca o cursor após o corpo <body>
    au BufNewFile,BufRead *.html,*.shtml,*.htm set noautoindent
  augroup end


Documentação on-line sobre autocomandos do vim http://www.vim.org/htmldoc/autocmd.html

Use o file explorer editar

O vim pode navegar em pastas com o comando

  vim .

Você pode usar 'j' e 'k' para navegar e Enter para editar o arquivo selecionado

Torne as boas práticas um hábito editar

Para cada prática produtiva procure adquirir um hábito e mantenha-se atento ao que pode ser melhorado. Imagine tarefas complexas, procure um meio melhor de fazer e torne um hábito.

Referências editar