Comentários no vim

Para esta pequena rotina que facilita na inclusão e remoção comentários em estilo C/C++ e PHP (com as duas barras a esquerda do texto), fiz uma razoável busca na listagem de scripts do vim e, não encontrando, parti pra “leitura” do famigerado :help, em busca de algo que me ajudasse. Nessas, acabei arranjando uma solução na família de tratamento de exceções (é, tem até isso!) que acabou servindo muito bem nesse caso:

" Função para comentar linhas em C/C++ e PHP
fu! ComenteCPHP()
try
execute 's/^\(\( \|\t\)*\)\/\//\1'
catch
execute 's/\(\( \|\t\)*\)/\1\/\/'
endtry
endfu
" Mapeando teclas de atalho
map <C-c> :call ComenteCPHP()<cr>

Basta acrescentar esse trecho acima ao seu .vimrc, encontrado em seu diretório de usuário. Na última linha, eu ainda mapeei a combinação ‘CTRL+c’ para executar a função de comentário, mas logicamente você pode trocar a combinação de acordo com a preferência.
E com pequenas alterações já se tem algo pra auxiliar no comentarios em estilo bash script e python (com o símbolo ‘#’ a esquerda do texto):

" Função para comentar linhas em bash
fu! ComenteBash()
try
execute 's/^\(\( \|\t\)*\)\#/\1'
catch
execute 's/\(\( \|\t\)*\)/\1\#'
endtry
endfu
" Mapeando teclas de atalho
map <C-x> :call ComenteBash()<cr>

Vale lembrar que você ainda pode comentar/descomentar várias linhas de uma só vez, fazendo a seleção da linha com ‘V’.

Publicidade

4 comentários sobre “Comentários no vim

  1. This is not a weblog? And this is not a comment?
    This is really interesting, i’ve seen this shit somewhere ‘round here in my job… someone who works here…don’t remember…

    echo “remember, remember the fifth of november”;

  2. Seria interessante usar as extensões de arquivo para que o Vim descobrisse sozinho qual função de comentários usar.

    " comentar bloco de código em C/C++ e PHP
    fu! ComentCPhp()
    try
    execute 's/^\(\( \|\t\)*\)\/\//\1'
    catch
    execute 's/\(\( \|\t\)*\)/\1\/\/'
    endtry
    endfu
    
    " comentar bloco de código em Python e shell script
    fu! ComentPySh()
    try
    execute 's/^\(\( \|\t\)*\)\#/\1'
    catch
    execute 's/\(\( \|\t\)*\)/\1\#'
    endtry
    endfu
    
    " aplicar a função correta de comentários para  +  dependendo do tipo de arquivo
    autocmd BufRead,BufNewFile *.c,*.cpp,*.h,*.php,*.php*,*.thtml map  :call ComentCPhp()
    
    autocmd BufRead,BufNewFile *.py,*.sh map  :call ComentPySh()
    
  3. Olá Henrique,

    ótima informação adicional. Cheguei a utilizar o ‘autocmd BufRead’ por um tempo mas não tinha certeza do modo de funcionamento.

    Obrigado por enriquecer o conteúdo do post.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s