質問

HEXLモードを使用して、テキストファイルからいくつかの特別なcharを手動で削除し、HEXLモードで何かを削除する方法を見ないようにしています。

私が本当に欲しいのは、キャリッジの返品を削除してラインフィードのキャラクターを維持することです。 hexlモードはこれを行う正しい方法ですか?

役に立ちましたか?

解決

これにはhexl-modeが必要ありません。 ^jを使用して ^j ^mのグローバルな検索と描写を行うだけです。 :)次に、ファイルを保存し、バッファを殺し、ファイルを再訪して、ウィンドウに新しいファイルモード(UNIX対DOS)が表示されるようにします。

他のヒント

交換を見つける必要はありません。使用するだけです。

M-x delete-trailing-whitespace

ファイルをエンコードすることもできます

C-x RET f unix

おっとっと。その ^j ^mは、2つの文字通りの文字として入力する必要があります。使用する c-q c-j, c-q c-m 交換用の文字列には、使用します c-q c-j.

呼ばれるコマンドラインツールもあります unix2dos/dos2unix これは、ラインエンディングを変換するために特に存在します。

DOSエンコードされたファイルをUNIXエンコードに変更すると仮定すると、MX Set-Buffer-File-Coding-System(CX RET F)を使用して、コーディングシステムを「UNIX」に設定してファイルを保存します。

キャリッジリターンを削除する場合(通常はとして表示されます ^M)そして、ラインフィードを残します。お客様のコンバージョン付きファイルにアクセスできます。

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

キャリッジリターンを備えたファイルは通常、DOSモードで表示されるためです(キャリッジリターンを隠す)。モード行が表示される可能性があります (DOS) 左側。

あなたがそれをしたら、 ^M 表示され、キャラクターのように削除できます。

hexl-modeを使用する必要はありません。その代わり:

  • それらの ^mを表示する方法でファイルを開きます。上記のmx find-file-ritally/path/to/fileを参照してください。 Xemacsでは、CU CX CFを実行して、バイナリエンコードを選択することもできます。
  • 交換したい文字列を選択し、MWを使用してコピーします
  • M-%(クエリの交換)を実行し、Cyを使用してコピーするものを貼り付けます
  • プレゼントは、それを置き換えるものに促されたときに入力します
  • 可能なプレス!次に、すべての発生を置き換えます

ポイントは、交換しようとしているものを入力する方法がなくても、いつでも選択/コピーできるということです。

(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のs。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top