В Emacs, как лишить CR (^M) и оставить символы LF (^J)?

StackOverflow https://stackoverflow.com/questions/1171609

  •  19-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать режим HEXL, чтобы вручную удалить некоторые специальные ChARS из текстового файла и не вижу, как что -либо удалить в режиме HEXL.

Что я действительно хочу, так это удалить возврат перевозки и сохранить символы линии. Правильный ли hexl -режим правильный способ сделать это?

Это было полезно?

Решение

Нет необходимости в Hexl-Mode для этого. Просто сделайте глобальный поиск и замену ^j ^m с ^J работает для меня. :) Затем сохраните файл, убейте буфер и верните файл, чтобы в окне показано новый режим файла (Unix VS DOS).

Другие советы

Нет необходимости находить замену. Просто используйте.

M-x delete-trailing-whitespace

Вы также можете установить кодирование файла через

C-x RET f unix

Упс. Это ^j ^m должно быть введено в виде двух буквальных символов. Использовать c-q c-j, c-q c-m и для строки смены используйте c-q c-j.

Есть также инструмент командной строки под названием Unix2dos/Dos2Unix Это существует специально для преобразования концов линии.

Предполагая, что вы хотите, чтобы файл, кодированный DOS, был изменен в кодировку UNIX, используйте Set-Buffer-File-File-File-System (CX RET F), чтобы установить систему кодирования в «UNIX» и сохранить файл.

Если вы хотите удалить возврат каретки (обычно отображается как ^Mи оставьте линию. Вы можете просто посетить файл с любым преобразованием:

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

Поскольку файл с возвратом каретки обычно отображается в режиме DOS (скрывая возврат перевозки). Линия режима, скорее всего, отобразит (DOS) с левой стороны.

Как только вы это сделаете, ^M появится, и вы сможете удалить их, как вы будете любого персонажа.

Вам не нужно использовать Hexl-Mode. Вместо:

  • Откройте файл таким образом, чтобы показать вам эти ^m. См. MX Find-File-Literally/Path/TO/File выше. В XEMacs вы также можете сделать Cu CX CF и выбрать двоичное кодирование.
  • Выберите строку, которую вы хотите заменить, и скопируйте ее, используя MW
  • Сделайте M-% (Замените запрос) и вставьте то, что вы хотите скопировать, используя CY
  • представьте Enter, когда будет предложено, чтобы заменить его на
  • Возможная пресса! Теперь заменить все случаи

Дело в том, что даже если вы не введете, как ввести то, что вы пытаетесь заменить, вы всегда можете выбрать/скопировать его.

(в режиме hexl) Я не уверен, что вы можете Удалить символы. Анкет Я всегда преобразовал их в пространства или какого -то другого персонажа, переключился на обычный текстовый редактор и удалял их там.

Из 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))))))

Добавьте это в свой .emacs и запустить это через M-x xsteve-remove-control-M или свяжите его с более легким ключом. Он лишит ^MS в AnyMode.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top