Función de comentario de línea Vim C

Función de comentario de línea Vim C

La siguiente función ~/.vimrces comentar la línea C y funciona perfectamente.

function CLC()
    execute "normal ^i/*\<ESC>$a*/\<ESC>"
endfunction

Pero tengo dos preguntas...
1. ¿Cómo hago para comentar unrangode líneas.
2. ¿Cómo puedo hacer que los comente así?

/*  
 * multiline   
 * comment   
 *   
 */

Conozco el complemento NERDCommenter que haría ambas cosas por mí, pero una de las asignaciones entra en conflicto con la asignación de otro complemento que tengo.

Respuesta1

:help NERDComMappingsle dice cómo cambiar las asignaciones predeterminadas de NERDCommenter. Por ejemplo, ponga esto en su ~/.vimrcpara cambiar el prefijo de mapeo a <Leader>C:

nmap <Leader>Cc <Plug>NERDCommenterComment
xmap <Leader>Cc <Plug>NERDCommenterComment
nmap <Leader>C<Space> <Plug>NERDCommenterToggle
xmap <Leader>C<Space> <Plug>NERDCommenterToggle
nmap <Leader>Cm <Plug>NERDCommenterMinimal
xmap <Leader>Cm <Plug>NERDCommenterMinimal
nmap <Leader>Cs <Plug>NERDCommenterSexy
xmap <Leader>Cs <Plug>NERDCommenterSexy
nmap <Leader>Ci <Plug>NERDCommenterInvert
xmap <Leader>Ci <Plug>NERDCommenterInvert
nmap <Leader>Cy <Plug>NERDCommenterYank
xmap <Leader>Cy <Plug>NERDCommenterYank
nmap <Leader>Cl <Plug>NERDCommenterAlignLeft
xmap <Leader>Cl <Plug>NERDCommenterAlignLeft
nmap <Leader>Cb <Plug>NERDCommenterAlignBoth
xmap <Leader>Cb <Plug>NERDCommenterAlignBoth
nmap <Leader>Cn <Plug>NERDCommenterNest
xmap <Leader>Cn <Plug>NERDCommenterNest
nmap <Leader>Cu <Plug>NERDCommenterUncomment
xmap <Leader>Cu <Plug>NERDCommenterUncomment
nmap <Leader>C$ <Plug>NERDCommenterToEOL
xmap <Leader>C$ <Plug>NERDCommenterToEOL
nmap <Leader>CA <Plug>NERDCommenterAppend
xmap <Leader>CA <Plug>NERDCommenterAppend

nmap <Leader>ca <Plug>NERDCommenterAltDelims

Respuesta2

Modo de comentarios sexy C

Los rangos de líneas simplemente funcionan de forma predeterminada con la selección visual + <leader>cc, probado en 2.5.2.

Pero, sobre todo, quiero resaltar en esta respuesta los comentarios en "modo sexy" <leader>cs, que generan bonitos comentarios multilínea en C.

Por ejemplo, si comienzas con:

This is a c style sexy comment
So there!

luego <leader>csa partir de la selección visual lo transforma en:

/* This is a c style sexy comment
 * So there! */

Y también puedes cambiar al modo no compacto agregando a tu .vimrc:

let g:NERDCompactSexyComs = 0

que funciona de la siguiente manera:

------------------------------------------------------------------------------

                                                         *'NERDCompactSexyComs'*
Values: 0 or 1.
Default 0.

Some people may want their sexy comments to be like this: >
    /* Hi There!
     * This is a sexy comment
     * in c */
<
As opposed to like this: >
    /*
     * Hi There!
     * This is a sexy comment
     * in c
     */

Otro formato relacionado que podría ser de interés es el "Mapa de comentarios mínimos" al que se puede acceder <leader>cmy que produce:

/* Hi There!
   This is a sexy comment
   in C */

Lamentablemente no pude encontrar mi estilo preferido:

/* Hi There!
 * This is a sexy comment
 * in c
 */

entonces abrí:https://github.com/scrooloose/nerdcommenter/issues/379

información relacionada