Pergunta

Estou tentando usar o modo Hexl para remover manualmente alguns caracteres especiais de um arquivo de texto e não vejo como excluir nada no modo hexieloso.

O que eu realmente quero é remover o retorno do carro e manter os caracteres de feed de linha. É o modo hexl da maneira certa de fazer isso?

Foi útil?

Solução

Não há necessidade de modo hexieloso para isso. Basta fazer uma pesquisa global e reposição de ^j ^m com ^j funciona para mim. :) Então salve o arquivo, mate o buffer e revisite o arquivo para que a janela mostre o novo modo de arquivo (Unix vs DOS).

Outras dicas

Não há necessidade de encontrar substituir. Apenas use.

M-x delete-trailing-whitespace

Você também pode definir o arquivo que codifica

C-x RET f unix

Opa. Isso precisa ser inserido como dois caracteres literais. Usar c-q c-j, c-q c-m e para a sequência de substituição, use c-q c-j.

Há também uma ferramenta de linha de comando chamada Unix2DOS/DOS2UNIX Isso existe especificamente para converter finais de linha.

Supondo que você deseja que um arquivo codificado do DOS seja alterado na codificação do UNIX, use MX Set-Buffer-File-Coding-System (CX RET F) para definir o sistema de codificação como "Unix" e salve o arquivo.

Se você deseja remover um retorno de carro (geralmente exibido como ^M) e deixe a linha feed. Você pode simplesmente visitar o arquivo sem qualquer conversão:

M-x find-file-literally /path/to/file

Porque um arquivo com retornos de transporte geralmente é exibido no modo DOS (ocultando as devoluções do carro). A linha de modo provavelmente será exibida (DOS) no lado esquerdo.

Depois de fazer isso, o ^M Vai aparecer e você pode excluí -los como faria com qualquer personagem.

Você não precisa usar o modo hexlido. Em vez de:

  • Abra o arquivo de uma maneira que mostre esses ^m's. Consulte MX Find-File-File Literal/Path/to/Arquivo acima. Em Xemacs, você também pode fazer CU CX CF e selecionar a codificação binária.
  • Selecione a string que você deseja substituir e copiá -la usando MW
  • Faça m-% (Substitua de consulta) e cole o que você deseja copiar usando CY
  • Presente entrar quando solicitado ao que o substitua por
  • Pressione Pressione! agora para substituir todas as ocorrências

O ponto é que, mesmo que você não seja como inserir o que está tentando substituir, sempre pode selecioná -lo/copiá -lo.

(no modo hexieloso) Não tenho certeza se você pode excluir caracteres. Eu sempre os converti em espaços ou algum outro personagem, mudei para o editor de texto regular e os excluí lá.

A partir de http://www.xsteve.at/prg/emacs/xsteve-functions.el:

;02.02.2000
(defun xsteve-remove-control-M ()
  "Remove ^M at end of line in the whole buffer."
  (interactive)
  (save-match-data
    (save-excursion
      (let ((remove-count 0))
        (goto-char (point-min))
        (while (re-search-forward (concat (char-to-string 13) "$") (point-max) t)
          (setq remove-count (+ remove-count 1))
          (replace-match "" nil nil))
        (message (format "%d ^M removed from buffer." remove-count))))))

Adicione isso ao seu .emacs e executá -lo via M-x xsteve-remove-control-M ou vincule -a a uma chave mais fácil. Vai despir o ^Ms em AnyMode.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top