Como comentar várias linhas de uma só vez? [duplicado]

62

Como posso selecionar um monte de texto e comentar tudo?

Atualmente eu vou para a primeira linha, vou para o modo de inserção então digite # seta para a esquerda seta para baixo e então eu repito essa sequência, talvez salvando uma alguns pressionamentos de teclas usando o recurso . repeat para fazer cada linha.

Existe alguma maneira que eu poderia (por exemplo) selecionar várias linhas no modo visual ou usando um intervalo de linhas e um comando ex ('dois pontos') e para esse intervalo comentar todas as linhas com # to faça deles um "comentário de bloco".

A capacidade de rapidamente "comentar" (remover o # ) para um comentário de bloco também seria interessante.

    
por Michael Durrant 20.03.2014 / 17:14

6 respostas

85

intervalos:

Você pode fazer isso com o seguinte comando:

:66,70s/^/#

para comentar e para descomentar:

:66,70s/^#/

obviamente, aqui estamos comentando linhas de 66 a 70 (inclusive).

    
por 20.03.2014 / 17:27
104

Modo de bloqueio visual

Primeiro, mova o cursor para o primeiro caractere da primeira linha no código de bloco que deseja comentar e digite:

CTRL + V                                    

então o vim entrará no modo VISUAL BLOCK . Use j para mover o cursor para baixo até chegar à última linha do seu bloco de código. Então digite:

Shift + I

agora o vim vai para o modo INSERT e o cursor está no primeiro caractere da primeira linha. Por fim, digite # then ESC e o bloco de código agora é comentado.

Para decompor, faça as mesmas coisas, mas, em vez de digitar Shift + I , basta digitar x para remover todos os # depois de destacá-los no modo VISUAL BLOCK .

    
por 20.03.2014 / 17:26
14

Substituir

Para completar, aqui está outra maneira:

  1. Entre no modo visual pressionando v
  2. selecione as linhas que você deseja comentar ( up / down arrow ou j / k )
  3. insira :s/^/# / , o que significa: na seleção ( : ) substitui o início da linha ( ^ ) por '#'
por 20.03.2014 / 18:34
7

Marcadores:

Os seguintes passos são feitos no modo de comando:

  1. vá para a primeira linha e defina o marcador com mt
  2. vá para a linha até a qual você deseja intervalo
  3. emita o comando :'t,.s/^/#/

Explicação

  • m# , onde # denota qualquer letra, coloca um marcador na sua localização atual. Posteriormente, o local pode ser consultado usando '# , em que # é a mesma letra de antes. No nosso caso, usamos a letra t
  • O comando :'t,.s/^/#/ é o seguinte:
    • : o prefixo para comandos complexos
    • 't,. define o intervalo no qual o comando a seguir deve ser aplicado. No nosso caso, é do marcador 't até a linha atual .
    • s/^/#/ é uma fórmula de substituição, substituindo todo o início de linha ^ pelo caractere literal #
por 20.03.2014 / 17:31
4

Plugin

Existe um plug-in , que oferece uma maneira eficiente de comentar com base no arquivo sistema sendo usado.

Além disso, este answer discute como usar o NERD commenter para vim . Mais algumas instruções básicas sobre como usar o plug-in são discutidas aqui .

    
por 20.03.2014 / 17:32
0

Use NERDCommenter como mencionado, mas se isso não estiver disponível para mim, eu uso os modos visuais. Eu entro no modo Visual Line, faço minha seleção, frequentemente seus blocos de espaço em branco, então eu vou V { então mudo para o modo Visual Block com Ctrl + Q e então insiro o comentário símbolo no início das linhas com eu , então para comentar um bloco de texto, eu faria

V{<C-Q>I#<Esc>
    
por 20.03.2014 / 19:27