# Ferramentas Avançadas de Edição

## Comentar/Descomentar

Os comandos Comentar e Descomentar, disponíveis no menu Ferramentas, permitem a você adicionar ou remover marcadores de comentários para a seleção, ou remover a linha atual, se nenhum texto for selecionado; os comentários são suportados pelo formato de texto que você está editando.

As regras de como o comentário é feito são feitas nas definições de sintaxe; assim, se o realce de sintaxe não é usado, as ações de comentar/descomentar não são possíveis.

Alguns formatos definem marcadores de comentário de uma linha, alguns de múltiplas linhas, e outros com ambas. Se marcadores de múltiplas linhas não estiver disponível, não é possível comentar uma seleção que não estiver completamente incluída.

Se um marcador de linha única estiver disponível, é preferível comentar linhas simples onde for aplicável, pois isto ajuda a evitar problemas com comentários aninhados.

Ao remover marcadores de comentários, textos sem comentários devem ser selecionados; ao remover marcadores de comentários de múltiplas linhas de uma seleção, qualquer espaço em branco fora do marcador é ignorado.

Para colocar comentários, use o item de menu Ferramentas Comentário ou o atalho de teclado relacionado, sendo que o padrão é&Ctrl;#.

Para remover comentários, use o item de menu Ferramentas Descomentar ou o atalho de teclado relacionado, sendo que o padrão é&Ctrl;&Shift;#.

## Editar Comando

Esta ferramenta, disponível no item de menu Ferramentas Editar Comando , fornece um pequeno conjunto de comandos parecidos com o vi/vim, para a edição de texto. É uma ferramenta que faz sentido para usuários avançados e experientes, e não deixa que você mantenha guardado seus poderes!

Atualmente, os seguintes comandos estão disponíveis:

`tempo`

- Este comando colocará na saída a hora atual como é conhecida por seu computador, no formato HH:MM:SS

  Para usá-lo, abra o Diálogo de Edição de Comando e digite na caixa de entrada a palavra `time` (tempo).

`caractere`

- Este comando permite que você insira caracteres literais através de suas identificações numéricas, em decimal, octal ou hexadecimal. Para usá-lo, abra o diálogo de Edição de Comando e digite `char: [número]` na caixa de entrada e clique em

  ### exemplos do comando `char`

  Entrada: `char:234`

  Saída: `ê`

  Entrada: `char:0x1234`

  Saída: `ê`

  Entrada: `char:1232`

  Saída: `ê`

`s///[ig]` `%s///[ig]`

- Este comando faz um sed como operação de procura/substituição na linha atual, ou em um arquivo inteiro (`%s///`).

  Em resumo, é procurado o texto que combine com o padrão de busca , a expressão regular entre a primeira e a segunda barra, e quando é encontrado, a parte que combina com o texto é substituída pela expressão entre a metade e a última parte da string. Os parênteses no padrão de busca criam referências anteriores, isto é, o comando lembra qual parte procurada combinou no parênteses; estas strings podem ser reutilizadas no padrão de substituição, referidas como `\1` para o primeiro conjunto de parênteses, `\2` para o segundo e assim por diante.

  Para procurar por um caractere literal `(` ou `)`, você precisa usar o caractere de escape, que é o caractere de barra invertida: `\(\)`

  Se você colocar `i` no final da expressão, a busca se não diferenciará maiúsculas de minúsculas.

  ### Substituindo texto na linha atual

  Seu compilador parou, dizendo a você que a classe `minhaClasse`, mencionada na linha 3902 do seu arquivo fonte, não está definida.

  "Droga!" você pensa, é claro que é `MinhaClasse`. Você vai para a linha 3902, e em vez de tentar encontrar a palavra no texto, você lança o Diálogo de Edição de Comando, digita `s/minhaclasse/MinhaClasse/i`, clica no botão OK, salva o arquivo e compila – com sucesso, sem erros.

  ### Substituindo texto no arquivo inteiro

  Imagine que você tem um arquivo, onde está mencionado a string Senhorita Jensen várias vezes, quando alguém vem e lhe diz que ela casou com o Senhor Jones. Você quer, é claro, substituir toda ocorrência de Senhorita Jensen por Senhora Jones.

  Abra o diálogo de Edição de Comando e digite na caixa de entrada: `%s/Senhorita Jensen/Senhora Jones/` e então clique na tecla Enter, que a modificação está feita.

  ### Um Exemplo Mais Avançado

  Este exemplo faz uso das referências de volta, bem como de uma classe de palavras (se você não sabe o que é isso, por favor, procure a documentação relativa, mencionada abaixo).

  Suponha que você possui a seguinte linha:

      void MinhaClasse::DoStringOps( String      &foo, String &bar String *p, int  &a, int &b )

  Agora, você pode perceber que este não é um código bom, e decidir que deseja usar a palavra-chave `const` para todos os argumentos address of, aqueles caracterizados pelo operador & em frente ao nome do argumento. Você poderia também simplificar o espaço em branco, pois assim existiria somente um caractere de espaço em branco entre cada palavra.

  Abra o Diálogo de Edição de Comando, e digite `s/\s+(\w+)\s+(&)/ const \1 \2/g` e clique no botão OK. O caractere `g` no final da expressão faz com que a expressão regular recompile cada combinação, para recuperar as referências de volta.

  Saída `void MinhaClasse::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b )`

  Missão completa! Agora, o que aconteceu? Bem, procuramos por espaços em branco (`\s+`) seguidos por um ou mais caracteres alfabéticos(`\w+`) seguidos por mais espaços em branco (`\s+`) seguidos por um E comercial, e no processo é salvo o pedaço alfabético e o E comercial para reutilização na operação de substituição. Quando substituímos a parte relacionada da nossa linha, com um espaço em branco, seguido por const, seguido por um espaço em branco, seguido por nosso pedaço alfabético (`\1`) seguido por um espaço em branco, em por fim, seguido por nosso E comercial salvo (`\2`)

  Em alguns casos, a parte alfabética foi String, em alguns int, assim, usar a classe de caractere `\w` e o quantificador `+` provê uma vantagem considerável.

Isto é extremamente poderoso, e embora as ações possam ser desfeitas várias vezes, através do comando Desfazer , é recomendado a você praticar um pouco antes de usar este comando para edições difíceis, se ainda não estiver familiarizado com expressões regulares em sed ou perl.