vimrc - como bloquear um comentário?

14

Não quero comentar linhas de texto em um arquivo ou código de texto. Estou procurando inserir comentários de bloco em um arquivo .vimrc . Para inserir uma única linha, "é usado um comentário , por exemplo:

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

Agora, tenho uma quantidade relativamente grande de configurações / configurações / plugins coletadas ao longo dos anos após navegar na Internet para adicionar recursos interessantes. Eu estou olhando para adicionar alguns blocos de comentários grandes para o meu arquivo .vimrc. Adicionar "a cada linha é uma opção, mas estou procurando uma sintaxe de comentário de bloco. Semelhante a /**/C.

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

Pesquisando em Unix.SE, SO e pesquisando no Google não ajudou muito.

mtk
fonte
1
Suspeito que o recurso de comentários de várias linhas não exista nos arquivos vim-config.
Dilawar

Respostas:

5

Eu não acho que isso seja possível. O melhor que você poderá fazer é selecionar um texto em bloco e fazer uma pesquisa / substituição no primeiro caractere s/^/"/no vim para inserir "a no início de cada linha.

O plugin NIMD Commenter do vim também pode ajudar a tornar isso mais fácil.

slm
fonte
1
Eu uso a solução alternativa:, + 3s / ^ / "/ onde ponto representa a linha atual e +3 representa quantidade de linhas consecutivas (após a linha de ponto)..
Dago
6

Minha solução é quebrar o código dentro de um function.

Isso funciona bem no vimrc, por exemplo, para testes de destaque de sintaxe heredoc no local , que também exigem comentários de bloco reais sem caracteres iniciais . No meu vimrc, eu uso esse bloco diretamente depois de configurar meus heredoc SyntaxRanges .

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 

Essa solução é semelhante ao if 0truque de @ Stéphane , que não funcionou para mim. Apenas certifique-se de nunca chamar esta função!

Juve
fonte
1

Um truque:

  • coloque o cursor no primeiro caractere da primeira linha para comentar
  • pressione Ctrl-V para entrar no modo Visual Block
  • abaixe o cursor até a última linha para comentar
  • pressione I (shift + i) para entrar no modo de inserção condicional
  • pressione '"' para comentar (uma citação e um espaço)
  • pressione Esc para sair do modo de inserção

Todas as suas linhas selecionadas agora são anexadas pela sequência digitada no modo de inserção.

lgeorget
fonte
Obrigado, mas eu estava procurando o que exatamente é o estilo de comentário de bloco no vimrc .
mtk
Eu não acho que exista esse recurso no vim. A propósito, não é tão comum. Em muitas linguagens de script, é mais comum usar comentários de linha única em várias linhas.
precisa saber é o seguinte
1

Use o tCommentplug - in para o Vim: http://www.vim.org/scripts/script.php?script_id=1173

Sim, ele suporta Python (adicionado em 2011).

description: O TComment funciona como uma alternância, ou seja, ele comenta o texto que contém linhas não comentadas e o comentário já comentado (ou seja, texto que não contém linhas não comentadas).

Se o tipo de arquivo estiver definido corretamente,: TComment descobrirá qual sequência de comentários usar com base nos valores de & commentstring ou & comments. Para alguns tipos de arquivos, a definição de comentário é definida explicitamente. Você pode | comentar # DefineType () | para adicionar suas próprias definições.

O TComment sabe como lidar com código incorporado de um tipo de arquivo diferente do tipo de arquivo principal, por exemplo, regiões ruby ​​/ python / perl em scripts vim, HTML ou JavaScript em código php etc.

Como operador (o prefixo pode ser personalizado via g: tcommentMapLeaderOp1 e g: 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 de chave primária:

<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 

Há também um conjunto secundário de mapas principais com _ como líder (mais preferível em terminais).

laebshade
fonte
1

Existe esse plugin de mudança de vida tpopechamadovim-commentary

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

Este plugin fornece :

  • Sanidade
  • Comentários devidamente recuados
  • Não comenta linhas vazias / desnecessárias

Uso :

  • Instale via Vundle (ou Pathogen, eu acho).
  • Destaque seu texto e pressione, :que será exibido como:<,'>
  • Digite Comentário aqui :<,'>Commentarye pressione Enter.
  • Bom. Seu broto feito.
Weston Ganger
fonte