utils:ed
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
| utils:ed [2025/01/10 01:50] – [Interagindo com o sistema] detalhamento do alerta sobre cd hrcerq | utils:ed [2025/08/09 19:21] (atual) – [Abrindo e trocando de arquivos] formatação monoespaçada hrcerq | ||
|---|---|---|---|
| Linha 39: | Linha 39: | ||
| * **Dispensa combinações de teclas** | * **Dispensa combinações de teclas** | ||
| - | Por ser um editor multimodal, não é preciso utilizar combinações de teclas usando | + | Por ser um editor multimodal, não é preciso utilizar combinações de teclas usando |
| * **Não possui dependências** | * **Não possui dependências** | ||
| - | Por ser um editor minimalista, | + | Por ser um editor minimalista, |
| Não possuir dependências significa que mesmo em modo monousuário do UNIX ele pode ser utilizado. Não por acaso ele geralmente fica no diretório __/bin__ e não em __/ | Não possuir dependências significa que mesmo em modo monousuário do UNIX ele pode ser utilizado. Não por acaso ele geralmente fica no diretório __/bin__ e não em __/ | ||
| Linha 206: | Linha 206: | ||
| Ufa! Agora você já sabe encerrar o editor, quando precisar. Mas vou além: o comando '' | Ufa! Agora você já sabe encerrar o editor, quando precisar. Mas vou além: o comando '' | ||
| - | É importante frisar que digitar '' | + | É importante frisar que digitar '' |
| Agora, um outro ponto que é importante aprender desde cedo é sobre a configuração e uso de um //prompt//. Como falei antes, ele é um meio de evitar a confusão entre o modo de comandos e o modo de entrada. Para iniciar o editor já com o uso de um //prompt// você deve usar o parâmetro '' | Agora, um outro ponto que é importante aprender desde cedo é sobre a configuração e uso de um //prompt//. Como falei antes, ele é um meio de evitar a confusão entre o modo de comandos e o modo de entrada. Para iniciar o editor já com o uso de um //prompt// você deve usar o parâmetro '' | ||
| Linha 241: | Linha 241: | ||
| ===== Abrindo e trocando de arquivos ===== | ===== Abrindo e trocando de arquivos ===== | ||
| - | Já vimos como o editor pode ser aberto e fechado, mas e quanto à seleção dos arquivos que serão editados? Como isso é feito? Existem duas possibilidades: | + | Já vimos como o editor pode ser aberto e fechado, mas e quanto à seleção dos arquivos que serão editados? Como isso é feito? Existem duas possibilidades: |
| A título de exemplo, consideremos um arquivo de texto, contendo o texto: | A título de exemplo, consideremos um arquivo de texto, contendo o texto: | ||
| Linha 264: | Linha 264: | ||
| Logo em seguida o //prompt// aparece, e você pode inserir comandos para ler ou editar o arquivo. Mas calma, ainda chegaremos lá. Por hora, vamos ver mais algumas questões relacionadas ao carregamento do arquivo. | Logo em seguida o //prompt// aparece, e você pode inserir comandos para ler ou editar o arquivo. Mas calma, ainda chegaremos lá. Por hora, vamos ver mais algumas questões relacionadas ao carregamento do arquivo. | ||
| - | Digamos que você iniciou o editor com um //buffer// vazio. Você pode então usar o comando | + | Digamos que você iniciou o editor com um //buffer// vazio. Você pode então usar o comando |
| < | < | ||
| Linha 277: | Linha 277: | ||
| " | " | ||
| - | Ao iniciar o editor com um //buffer// vazio, essa informação não existe. Porém, ao iniciar com um arquivo, ou ao carregar um arquivo, como feito nos exemplos anteriores, essa informação é preenchida, com o nome do arquivo carregado (neste exemplo, | + | Ao iniciar o editor com um //buffer// vazio, essa informação não existe. Porém, ao iniciar com um arquivo, ou ao carregar um arquivo, como feito nos exemplos anteriores, essa informação é preenchida, com o nome do arquivo carregado (neste exemplo, |
| - | Para visualizar o nome memorizado, usamos o comando | + | Para visualizar o nome memorizado, usamos o comando |
| < | < | ||
| Linha 292: | Linha 292: | ||
| </ | </ | ||
| - | O sinal de interrogação nesse caso indica que houve algum erro (deixemos a interpretação disso para depois). Mas note que depois de carregado o arquivo, o nome passou a existir (ficou memorizado). Podemos a qualquer momento usar esse mesmo comando | + | O sinal de interrogação nesse caso indica que houve algum erro (deixemos a interpretação disso para depois). Mas note que depois de carregado o arquivo, o nome passou a existir (ficou memorizado). Podemos a qualquer momento usar esse mesmo comando |
| Retomaremos esse assunto quando tratarmos sobre a operação de escrita. | Retomaremos esse assunto quando tratarmos sobre a operação de escrita. | ||
| - | Você pode, a qualquer momento, usar o comando | + | Você pode, a qualquer momento, usar o comando |
| < | < | ||
| Linha 316: | Linha 316: | ||
| Apenas lembre-se: se houver quaisquer alterações não salvas, um alerta será emitido. Você pode ignorá-lo e reexecutar o comando, para prosseguir, perdendo as alterações. | Apenas lembre-se: se houver quaisquer alterações não salvas, um alerta será emitido. Você pode ignorá-lo e reexecutar o comando, para prosseguir, perdendo as alterações. | ||
| - | Caso já tenha certeza de que não quer salvar nada, pode usar o comando | + | Caso já tenha certeza de que não quer salvar nada, pode usar o comando |
| - | Tanto o comando | + | Tanto o comando |
| < | < | ||
| Linha 373: | Linha 373: | ||
| - | ==== Uma nota sobre alertas ==== | + | <note important> |
| - | + | **Atenção**\\ | |
| - | No __ed__, há uma diferença sutil entre erros e alertas. Os alertas são emitidos quando você pode perder dados do //buffer// por fechar o editor ou carregar algum outro arquivo. Como mostrei no exemplo anterior, se você insistir em uma ação desse tipo, o __ed__ entenderá que você sabe o que está fazendo e não entrará no seu caminho. | + | \\ |
| - | + | No __ed__, há uma diferença sutil entre erros e alertas. Os alertas são emitidos quando você pode perder dados do //buffer// por fechar o editor ou carregar algum outro arquivo. Como mostrei no exemplo anterior, se você insistir em uma ação desse tipo, o __ed__ entenderá que você sabe o que está fazendo e não entrará no seu caminho.\\ | |
| - | Mas há uma detalhe que pode te pegar de surpresa: depois que o __ed__ emite o alerta de que o //buffer// foi alterado, ele considera que o alerta já foi dado. Se você continuar a editar o //buffer// depois disso e mais tarde resolver fechar o editor, ele não emitirá outro alerta e encerrará. | + | \\ |
| + | Mas há uma detalhe que pode te pegar de surpresa: depois que o __ed__ emite o alerta de que o //buffer// foi alterado, ele considera que o alerta já foi dado. Se você continuar a editar o //buffer// depois disso e mais tarde resolver fechar o editor, ele não emitirá outro alerta e encerrará.\\ | ||
| + | \\ | ||
| Portanto, é uma boa prática salvar as modificações feitas logo depois do alerta, caso realmente queira salvar. Mais à frente veremos como modificar um arquivo e como salvar modificações. Quando você salva o conteúdo do //buffer// o __ed__ volta a considerar que precisa te alertar, se houver mais modificações e você tentar executar outra ação que possa ocasionar perda. | Portanto, é uma boa prática salvar as modificações feitas logo depois do alerta, caso realmente queira salvar. Mais à frente veremos como modificar um arquivo e como salvar modificações. Quando você salva o conteúdo do //buffer// o __ed__ volta a considerar que precisa te alertar, se houver mais modificações e você tentar executar outra ação que possa ocasionar perda. | ||
| + | </ | ||
| ===== Indo e voltando ===== | ===== Indo e voltando ===== | ||
| Linha 1132: | Linha 1134: | ||
| Há um limite, porém. Só podemos usar até 9 capturas dessa forma. Não que seja muito confortável abusar desse recurso. | Há um limite, porém. Só podemos usar até 9 capturas dessa forma. Não que seja muito confortável abusar desse recurso. | ||
| - | Se no lugar de capturar apenas parte da pesquisa, quiser capturar a pesquisa inteira para reutilizar no texto de substituição, | + | Se no lugar de capturar apenas parte da pesquisa, quiser capturar a pesquisa inteira para reutilizar no texto de substituição, |
| < | < | ||
| Linha 1149: | Linha 1151: | ||
| ==== Reutilizando pesquisas e substituições ==== | ==== Reutilizando pesquisas e substituições ==== | ||
| - | Do mesmo modo que usar o endereçamento de pesquisa ('' | + | Do mesmo modo que usar o endereçamento de pesquisa (**/**) sem informar o termo pesquisado repete a última pesquisa, podemos também reutilizar a última pesquisa feita dentro de um comando de substituição e novos comandos de substituição (ou novas pesquisas também). O que ocorre é que independente de onde você fizer a pesquisa, ela fica salva para reuso posterior. |
| < | < | ||
| Linha 1164: | Linha 1166: | ||
| </ | </ | ||
| - | Além da pesquisa, podemos reaproveitar também o último termo substituto utilizado. Para isso, basta usar um sinal de porcentagem ('' | + | Além da pesquisa, podemos reaproveitar também o último termo substituto utilizado. Para isso, basta usar um sinal de porcentagem (**%**) como termo substituto. |
| Linha 1178: | Linha 1180: | ||
| Veja que nesse caso reaproveitei as duas coisas: a pesquisa e a substituição. | Veja que nesse caso reaproveitei as duas coisas: a pesquisa e a substituição. | ||
| - | Outro ponto importante a destacar sobre o reaproveitamento de pesquisas é que se a pesquisa utilizava grupos de captura (expressões entre '' | + | Outro ponto importante a destacar sobre o reaproveitamento de pesquisas é que se a pesquisa utilizava grupos de captura (expressões entre **\(** e **\)**), então as referência a esses grupos também podem ser reaproveitadas na substituição. |
| ===== Desfazendo e refazendo ===== | ===== Desfazendo e refazendo ===== | ||
| Vez ou outra, você pode executar alguma alteração no //buffer// e logo em seguida perceber que não era aquilo que queria. Isso é especialmente comum em comandos de substituição. Basta uma expressão regular mal formulada para substituir o trecho errado, por exemplo. | Vez ou outra, você pode executar alguma alteração no //buffer// e logo em seguida perceber que não era aquilo que queria. Isso é especialmente comum em comandos de substituição. Basta uma expressão regular mal formulada para substituir o trecho errado, por exemplo. | ||
| - | Por esse motivo, existe um comando que desfaz a última alteração, | + | Por esse motivo, existe um comando que desfaz a última alteração, |
| - | O comando | + | O comando |
| < | < | ||
| Linha 1201: | Linha 1203: | ||
| </ | </ | ||
| - | Perceba que o comando | + | Perceba que o comando |
| - | Essa forma de funcionar do comando | + | Essa forma de funcionar do comando |
| - | Recapitulando, | + | Recapitulando, |
| < | < | ||
| Linha 1227: | Linha 1229: | ||
| </ | </ | ||
| - | Isso será útil, se você de tempos em tempos salvar as modificações que for fazendo. Dessa forma, poderá sempre retornar ao estado do último salvamento. Mas tenha em mente que usar o comando | + | Isso será útil, se você de tempos em tempos salvar as modificações que for fazendo. Dessa forma, poderá sempre retornar ao estado do último salvamento. Mas tenha em mente que usar o comando |
| - | Se por um lado, você não pode gradualmente desfazer várias alterações, | + | Se por um lado, você não pode gradualmente desfazer várias alterações, |
| ===== Deletando ===== | ===== Deletando ===== | ||
utils/ed.1736473859.txt.gz · Última modificação: (edição externa)