vimrc: ¿cómo bloquear el comentario?


14

No quiero comentar líneas de texto en un archivo de texto o código. Estoy buscando insertar comentarios de bloque en un archivo .vimrc . Para insertar un comentario de una sola línea "se utiliza, por ejemplo:

" remove spaces and tabs as well  at the end of line automatically while saving
autocmd BufWritePre * :%s/\s\+$//e

Ahora tengo una cantidad relativamente grande de configuraciones / configuraciones / complementos recopilados a lo largo de los años después de navegar por Internet para agregar características interesantes. Estoy buscando agregar algunos bloques de comentarios grandes a mi archivo .vimrc. Agregar "a cada línea es una opción, pero estoy buscando una sintaxis de comentario de bloque. Similar a /**/en C.

//es idéntico a "
/* */es idéntico a _ ____ ?

Buscar en Unix.SE, SO y buscar en Google no ayudó mucho.


1
Sospecho que la función de comentarios de varias líneas no existe en los archivos vim-config.
Dilawar

Respuestas:


5

No creo que esto sea posible. Lo mejor que podrá hacer es seleccionar un bloque de texto y realizar una búsqueda / reemplazo en el primer carácter s/^/"/en vim para insertar un "al comienzo de cada línea.

El plugin vim NERD Commenter también podría ayudar a facilitar esto.


1
Uso la solución alternativa:., + 3s / ^ / "/ donde el punto representa la línea actual y +3 representa la cantidad de líneas consecutivas (después de la línea de puntos).
daGo

6

Mi solución es envolver el código dentro de a function.

Esto funciona bien en vimrc, por ejemplo, para pruebas de resaltado de sintaxis heredoc in situ , que también requieren comentarios de bloque reales sin caracteres iniciales . En mi vimrc, utilizo dicho bloque directamente después de configurar mis rangos de sintaxis heredoc .

function! _blockcomment()

    " free text comment
    You can write free text here,
    but vim will try to highlight it as vimscript!

    " markdown heredoc
    test <<MD
    ### Nevertheless ###
    * for testing my fuzzy SyntaxRange heredocs
    * having no leading chars is essential
    * and the blockcomment function does the trick
    MD  

endfunction 

Esta solución es similar al if 0truco de @ Stéphane , que no funcionó para mí. ¡Solo asegúrate de nunca llamar a esta función!


1

Un truco:

  • coloque el cursor en el primer carácter de la primera línea para comentar
  • presione Ctrl-V para ingresar en modo Visual Block
  • baje el cursor hasta la última línea para comentar
  • presione I (shift + i) para ingresar en modo de inserción condicional
  • presione '"' para comentar (una cita y un espacio)
  • presione Esc para salir del modo de inserción

Todas las líneas seleccionadas ahora están precedidas por la cadena que escribió en el modo de inserción.


Gracias pero estaba buscando qué es exactamente el estilo de comentario de bloque en vimrc .
mtk

No creo que haya tal característica en vim. Por cierto, no es tan común. En muchos lenguajes de script, es más habitual usar comentarios de una sola línea en un rango de líneas.
lgeorget

1

Use el tCommentcomplemento para Vim: http://www.vim.org/scripts/script.php?script_id=1173

Sí, es compatible con Python (agregado en 2011).

descripción: TComment funciona como una palanca, es decir, comentará el texto que contiene líneas no comentadas, y comentará el texto ya comentado (es decir, texto que no contiene líneas no comentadas).

Si el tipo de archivo se define correctamente,: TComment determinará qué cadena de comentarios utilizar en función de los valores de & commentstring o & comments. Para algunos tipos de archivo, la definición de comentario se define explícitamente. Puede | tcomment # DefineType () | para agregar tus propias definiciones.

TComment sabe cómo tratar con código incrustado de un tipo de archivo diferente al tipo de archivo principal, por ejemplo, regiones ruby ​​/ python / perl en scripts vim, HTML o JavaScript en código php, etc.

Como operador (el prefijo se puede personalizar mediante g: tcommentMapLeaderOp1 yg: tcommentMapLeaderOp2):

gc{motion}   :: Toggle comments (for small comments within one line 
                the &filetype_inline style will be used, if 
                defined) 
gcc          :: Toggle comment for the current line 
gC{motion}   :: Comment region 
gCc          :: Comment the current line 

Mapas clave principales:

<c-_><c-_>   :: :TComment 
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END> 
<c-_>b       :: :TCommentBlock 
<c-_>a       :: :TCommentAs <QUERY COMMENT TYPE> 
<c-_>n       :: :TCommentAs &filetype <QUERY COUNT> 
<c-_>s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE> 
<c-_>i       :: :TCommentInline 
<c-_>r       :: :TCommentRight 
<c-_>p       :: Comment the current inner paragraph 

También hay un conjunto secundario de mapas clave con _ como líder (más preferible en terminales).


1

Existe este complemento que cambia la vida tpopellamadovim-commentary

https://github.com/tpope/vim-commentary

Este complemento proporciona :

  • Cordura
  • Comentarios correctamente sangrados
  • No comenta líneas vacías / innecesarias

Uso :

  • Instalar a través de Vundle (o patógeno, supongo).
  • Resalta tu texto y presiona :que aparecerá como:<,'>
  • Escriba Comentario aquí :<,'>Commentaryy presione Entrar.
  • Bom. Tu amigo hecho.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.