سؤال

أحاول استخدام وضع Hexl لإزالة بعض الأحرف الخاصة يدويا من ملف نصي ولا أرى كيفية حذف أي شيء في وضع Hexl.

ما أريده حقا هو إزالة إرجاع النقل والحفاظ على أحرف LETFEED. هل وضع Hexl الطريقة الصحيحة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

لا حاجة لوضع Hexl لهذا. فقط قم بعمل البحث العالمي - واستبدال ^ 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، استخدم نظام ترميز الملفات المزدوج MX (CX Ret F) لتعيين نظام الترميز إلى "UNIX" وحفظ الملف.

إذا كنت ترغب في إزالة عودة النقل (عادة ما يتم عرضها ^M) واترك تغذية الخط. يمكنك فقط زيارة الملف مع أي تحويل:

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

لأنه يتم عرض ملف مع إرجاع النقل بشكل عام في وضع DOS (إخفاء إرجاع النقل). سيعرض خط الوضع من المرجح (DOS) على الجانب الأيسر.

بمجرد القيام بذلك، ^M سوف تظهر ويمكنك حذفها وكأنك حرفا.

لا تحتاج إلى استخدام وضع Hexl. في حين أن:

  • فتح الملف بطريقة تعرض لك تلك ^ م. انظر MX Find-file-file - حرفيا / المسار / إلى / ملف أعلاه. في XEMACS، يمكنك أيضا القيام CU CX CF وتحديد الترميز الثنائي.
  • حدد السلسلة التي تريد استبدالها ونسخها باستخدام MW
  • هل M-٪ (استبدال الاستعلام) ولصق ما تريد نسخه باستخدام Cy
  • الحاضر أدخل عند المطالبة بما استبداله به
  • ممكن الصحافة! الآن لاستبدال جميع الحوادث

النقطة هي أنه حتى لو كنت لا تدخل ما تحاول استبداله، فيمكنك دائما تحديد / نسخه.

(في وضع Hexl) لست متأكدا من ذلك حذف الأحرف. وبعد لقد قمت دائما بتحويلها إلى مسافات أو بعض الأحرف الأخرى، بتسجيلها إلى محرر النصوص العادية، وحذفها هناك.

من عند http://www.xsteve.at/prg/emacs/xsteveve-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