এইগুলি কি এম এম যা আমার ফাইলগুলিতে ইম্যাকগুলিতে প্রদর্শিত থাকে?


157

সুতরাং আমি মনে করি এটি টেক্সটমেটটির সাথে থাকতে পারে তবে আমরা একটি ছোট দলে কাজ করি এবং প্রায় একরকম ফাইলের সম্পূর্ণ ফাইলের দ্বন্দ্ব নিয়ে কিছু সমস্যা রয়েছে কারণ একটি শাখার প্রতিটি লাইনে একটি এম app এম যুক্ত থাকে।

এই রহস্যময় ^Mচরিত্রটি কী করার কথা ছিল এবং এটি কোথা থেকে আসতে পারে?

আমাদের বিকাশকারীরা উইন্ডোজ / ম্যাকে ইম্যাকস, ম্যাকের টেক্সটমেট, ম্যাকের উপর কোডা এবং মাঝে মাঝে ডাব্লুপি-অ্যাডমিন পাঠ্য সম্পাদক ব্যবহার করেন।

কারও কি কখনও এই সমস্যাটির মধ্যে একটি থেকে উদ্ভূত হয়েছে?


3
এটির মূল্য কীসের জন্য:
c

3
সবচেয়ে বড় বিষয়টি হ'ল আপনি এটি সম্পর্কে কী করতে যাচ্ছেন? সম্ভাবনা রয়েছে, ইমাকস সেগুলি প্রবর্তন করছে না। আপনার টিমের সিদ্ধান্ত নেওয়া উচিত যে ফাইলগুলি ডস ফর্ম্যাট (^ এম) থাকতে হবে বা ইউনিক্স ফর্ম্যাট (কোনও ^ এম) নয় এবং প্রয়োগ করা উচিত।
ট্রে জ্যাকসন

উত্তর:


111

ইন Git-কনফিগ সেট core.autocrlfকরতে trueGit স্বয়ংক্রিয়ভাবে উদাঃ আপনার প্ল্যাটফর্মের জন্য সঠিকভাবে লাইন শেষা w শ রূপান্তর একটি বিশ্বব্যাপী সেটিং এর জন্য এই কমান্ড রান করতে হবে:

git config --global core.autocrlf true

6
আমি মনে করি এটি সেরা উত্তর কারণ এটি ও পি, যেমন গিটের প্রসঙ্গে প্রশ্নের উত্তর দেয়।
নিওন্টাপির

আমার 'core / .gitconfig' ফাইলে আমি ইতিমধ্যে "[কোর] aut n অটোক্রোল্ফ = সত্য" ছিলাম তবে এটি এখনও আমাকে 'গিট ক্লোন কোড. google.com/p/pytomtom ' দিয়ে '^ এম' অক্ষর দিয়ে ??? ??
বড় সমৃদ্ধ

11
আপনার প্ল্যাটফর্মটি যদি উইন্ডোজ হয় তবে এই উত্তরটি কেবলমাত্র প্রয়োগ হয়! আপনি যদি ম্যাক / লিনাক্সে কাজ করেন তবে "সত্য" এর "ইনপুট" হওয়া উচিত! দেখুন help.github.com/articles/dealing-with-line-endings : এখানে এবং stackoverflow.com/questions/9225599/...
কে-মাইকেল আয়ে

সতর্কতা: এই উত্তরটি তখন অন্য অনেকগুলি ফাইলকে দূষিত করে যখন গিট ভুলভাবে "অনুমান" করে যে লাইন-এন্ডিংগুলি গুরুত্বহীন এবং পরিবর্তিত হওয়া দরকার। এটি সফ্টওয়্যার প্রকল্পগুলির জন্য মারাত্মক যেখানে এই অক্ষরগুলি একটি ডেটা ফাইলের মধ্যে উপস্থিত রয়েছে (হ্যাঁ, আমি এটি দ্বারা জ্বালিয়েছি, বিরতিতে বেদনাদায়ক)। এটি একটি ভয়াবহ সমাধান আইএমএইচও।
অ্যাডাম

@ অ্যাডাম লাইনের শেষের সঠিক পরিবর্তন কি? ডেটা নিয়ে কাজ করার সময় আপনার কোথায় সমস্যা হয়েছে? এটি কোনও কিছুর উপর প্রভাব ফেলবে না, সারির শেষ চিহ্নিত করতে এটি কেবল ভিন্ন উপায়। আমি অবাক.
এমবিআই

97

কেউ তাদের লাইন-শেষের অক্ষরগুলি সঠিকভাবে রূপান্তর করছে না

আমি ধরে নিলাম এটি উইন্ডোজ লোকেরা তাদের সিআরএলএফকে পছন্দ করে। ইউনিক্স এলএফকে পছন্দ করে এবং ম্যাক সিআরকে পছন্দ করে যতক্ষণ না এটি ইউনিক্স উপায়ে প্রদর্শিত হয়।


12
স্পষ্টতার জন্য: ম্যাক সংস্করণ 10 (ওএস এক্স) পর্যন্ত সিআর ব্যবহার করেছে, এখন এটি এলএফ ব্যবহার করে।
মিকেল এস

34
আমি অনুভব করি যে উইন্ডোজ উপায়টি আরও যুক্তিযুক্ত, যেহেতু সিআর এবং এলএফ শব্দটি টাইপরাইটারদের দিন থেকে এসেছে। আপনার উভয়টিই করতে হয়েছিল: লাইনের শুরুতে টাইপিং পয়েন্ট পেতে একটি ক্যারেজ রিটার্ন এবং একটি লাইন নীচে স্ক্রোল করার জন্য একটি লাইন ফিড। টাইপ রাইটারে ম্যাক ওএস ক্লাসিক উপায় (সিআর) কেবল একই লাইনটি ওভাররাইট করাতে থাকবে। আপনি পৃষ্ঠার পুরো প্রস্থে পৌঁছানো অবধি টাইপ রাইটারে ইউনিক্স ওয়ে (এলএফ) অচল পাঠ্য আউটপুট দেয়। :)
অন্যদিকে 15

114
@ অন্যদিকে: কেবলমাত্র "আমরা একটি টাইপরাইটার অনুকরণ করতে চাই" অর্থে আরও যৌক্তিক। এটি কেন এখন থেকে দূরবর্তী অবস্থান থেকে কেন কার্যকর তা বুঝতে শুরু করতে পারছি না।
ব্রায়ান ওকলে

29
@ অন্যদিকে যখন কোনও চরিত্রের সাথে উপস্থাপন করা যায় আপনি কেন দুটি চরিত্রের সাথে প্রতিনিধিত্ব করবেন?
ম্যাথু জি

13
@ ম্যাথেজ জি: যতক্ষণ না আমাদের মধ্যে অনেকগুলি এতে সম্মত হয় ততক্ষণ সমস্ত কিছুকে একটি চরিত্রে উপস্থাপন করা যায়। তার মানে কি আমাদের করা উচিত? আমরা আমাদের সমস্ত বার্তা বিরামচিহ্ন, মূলধনগুলি এবং একটি নতুন লাইনে কেবল প্রতিটি বাক্য ছাড়াই টাইপ করতে পারি এবং প্রত্যেকে এটি বুঝতে পারে। তার মানে কি আমাদের করা উচিত? এটি "কিছু করার কারণ আমরা পারি" এর বিষয়ে নয়। বলেছিল, আমি এলএফকেও পছন্দ করি।
জাফোগ

33

^Mযেমন 0x0d, গাড়ি চালানোর অক্ষর। যদি আপনার ডিসপ্লেটি দেখতে ভালো লাগে

লাইন 1 ^ এম
লাইন 2। এম

তারপরে ফাইলটি অবশ্যই উইন্ডোজ থেকে এসেছিল কারণ উইন্ডোজে স্ট্যান্ডার্ড নিউলাইন সিকোয়েন্সটি CR LF( 0x0d 0x0a) অন্যদিকে স্ট্যান্ডার্ড নিউলাইন সিকোয়েন্সটি সম্পূর্ণ LFইউনিসিতে থাকে।

ফাইলটি যদি কোনও ম্যাক ওএস 9 বা পূর্ববর্তী সিস্টেম থেকে আসে তবে আপনি এটি দেখতে পাবেন

লাইন 1 ^ Mline 2 ^ এম

কারণ গাড়ীর ফেরার পরে কোনও লাইন ফিড থাকবে না।


28

It এম গিটে অদৃশ্য হয়ে যেতে টাইপ করুন:

git config --global core.whitespace cr-at-eol

ক্রেডিট: https://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/


1
কিছুই পরিবর্তন করে না।
ভিভেক্স

3
এটি কেবলমাত্র গিটটি ব্যবহার করার সময় ^ এম প্রদর্শন থেকে অদৃশ্য হয়ে যায় তবে এটি এখনও রয়েছে
ফার্নান্দোজ

1
প্রকৃতপক্ষে, এটি কেবল ^ এমকে হোয়াইটস্পেস হিসাবে প্রদর্শন করে তবে git diffফাইলগুলির সাথে তুলনা করার সময় still এমটিকে অ্যাকাউন্টে নেয়। git config --global --unset core.whitespace( এই থ্রেড থেকে ) দিয়ে এই সেটিংটি সরান ।
মাইগুয়েলমোরিন

1
আপনি --globalকেবল বর্তমান রেপো কনফিগার করতে বাদ দিতে পারেন।
ডেরেক ভাইট

8

ডস স্টাইল লাইন শেষ এবং ইউনিক্স শৈলীর মধ্যে পার্থক্য সহ তাদের করতে হবে। পরীক্ষা করে দেখুন Wikipedia নিবন্ধটি । আপনি সাহায্য করার জন্য একটি ডস 2 ইউনিক্স সরঞ্জাম পেতে বা এগুলি নিজেই ঠিক করার জন্য একটি ছোট স্ক্রিপ্ট লিখতে সক্ষম হতে পারেন।

সম্পাদনা : আমি নীচের পাইথনের নমুনা কোডটি এখানে পেয়েছি :

string.replace( str, '\r', '' )

3
ইমাক্সে, এটি <কোড> এম-: হবে (প্রতিস্থাপনের স্ট্রিং "\ r" "") </ কোড>।
হুইয়ুয়ান

7

আমি ব্যবহার করছি অ্যান্ড্রয়েড স্টুডিও (JetBrains IntelliJ আইডিয়া দিকে) ম্যাক OS এবং আমার সমস্যা হলো ^ এম উপর আমার টান অনুরোধে কিছু ফাইল দেখা শুরু করে ছিল GitHub । আমার জন্য যা কাজ করেছিল তা ছিল একটি ফাইলের জন্য লাইন বিভাজক পরিবর্তন করা।

সম্পাদক কাঙ্ক্ষিত ফাইলটি খুলুন যান ফাইল Go to লাইন সেপারেটর তারপর আপনার জন্য সবচেয়ে ভাল বিকল্প চয়ন (আমার জন্য এটি ছিল এলএফ - ইউনিক্স এবং ওএস এক্স (\ ঢ) )

পরবর্তী নিবন্ধ অনুসারে এই সমস্যাটি অপারেটিং সিস্টেমগুলির মধ্যে বিভ্রান্ত লাইনের শেষের ফল: http://jonathonstaff.com/blog/issues-with-line-endings/

এবং আরও তথ্য আপনি এখানে পেতে পারেন: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48

এখানে চিত্র বর্ণনা লিখুন


6

ক্যোয়ারী-প্রতিস্থাপনের পরিবর্তে আপনি এমএক্স মোছা-ট্রেলিং-হোয়াইটস্পেসও ব্যবহার করতে পারেন


এটি আমার পক্ষে কার্যকর হয়নি ... আমি সমস্ত পাঠ্য নির্বাচন করে কমান্ডটি চালিয়েছি।
ri দেব্রিম্বারিস

এটি আমার জন্য কাজ করেছে। ধন্যবাদ। @ দেব্রিম্বারিস, আপনার কোনও কিছু নির্বাচন করার দরকার নেই, আপনি কেবল কমান্ডটি চালান। 'এম' হ'ল মেটা কী বা পালানোর কী। সুতরাং এমএক্স পালাতে হবে তবে এক্স। তারপরে আপনি মুছুন-পিছনে-সাদা স্থান টাইপ করুন এবং রিটার্ন হিট করুন।
অ্যাস্ট্রোম্যাক্স

5

আপনার ~/.emacs(বা একিউভ্যালেন্ট) এ নিম্নলিখিত পট করুন

(defun dos2unix ()
  "Replace DOS eolns CR LF with Unix eolns CR"
  (interactive)
    (goto-char (point-min))
      (while (search-forward "\r" nil t) (replace-match "")))

এবং তারপরে আপনি কেবল ব্যবহার করতে সক্ষম হবেন M-x dos2unix


4

^Mইমাসে লাইনের শেষে একটি লাইন ফিড (\ n) এর পরে একটি ক্যারেজ রিটার্ন (\ r) নির্দেশ করছে। আপনি প্রায়শই এটি দেখতে পাবেন যদি কোনও ব্যক্তি উইন্ডোজে ফাইলগুলি সম্পাদনা করে (যেখানে লাইনের শেষটি ক্যারেজ রিটার্ন এবং নিউলাইন চরিত্রগুলির সংমিশ্রণ হয়) এবং আপনি ইউনিক্স বা লিনাক্সে সম্পাদনা করেন (যেখানে লাইনের শেষটি কেবল একটি নতুন লাইনের চরিত্র)।

চরিত্রগুলির সংমিশ্রণটি সাধারণত ক্ষতিকারক নয়। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করে থাকেন তবে আপনি টেক্সট ফাইল চেকইন ফর্ম্যাটটি কনফিগার করতে সক্ষম হবেন যাতে আপনার জন্য লাইনগুলি যাদুতে অ্যাডজাস্ট করা যায়। বিকল্পভাবে, আপনি চেকইন এবং চেকআউট ট্রিগারগুলি ব্যবহার করতে সক্ষম হতে পারেন যা স্বয়ংক্রিয়ভাবে আপনার জন্য ফাইলগুলি "ঠিক" করে দেবে। অথবা, আপনি ম্যানুয়ালি জিনিসগুলিকে সামঞ্জস্য করতে ডস 2 ইউনিক্সের মতো একটি সরঞ্জাম ব্যবহার করতে পারেন ।


2

যেমনটি সবাই উল্লেখ করেছেন। এটি ভিন্ন লাইন শেষ শৈলী। ম্যাকোসএক্স ইউনিক্স লাইন সমাপ্তি ব্যবহার করে - যেমন এলএফ (লাইন ফিড)।

উইন্ডোজ সিআর (ক্যারেজ রিটার্ন) এবং এলএফ (লাইন ফিড) উভয়ই লাইন শেষ হিসাবে ব্যবহার করে। যেহেতু আপনি উইন্ডো এবং ম্যাক উভয়ই ব্যবহার করছেন যেখানে সমস্যাটি দেখা দিয়েছে।

আপনি যদি উইন্ডোতে কোনও ফাইল তৈরি করেন এবং তারপরে ম্যাকের উপরে আনেন তবে আপনি লাইনগুলির শেষে এই ^ এম অক্ষরগুলি দেখতে পাবেন।

আপনি যদি এগুলি সরাতে চান তবে আপনি এটি ইম্যাক্সে খুব সহজেই করতে পারেন। কেবল ^ এম অক্ষরটি হাইলাইট করুন এবং অনুলিপি করুন এবং query এম এর সাথে একটি ক্যোয়ারী-প্রতিস্থাপন করুন এবং আপনি সম্পন্ন করেছেন।

সম্পাদনা: অন্য কিছু লিঙ্ক যা সহায়ক হতে পারে। http://xahlee.org/emacs/emacs_adv_tips.html

এটি আপনাকে নির্দিষ্ট ধরণের লাইন-এন্ডিং শৈলী ব্যবহার করতে ইম্যাক্স কনফিগার করতে সহায়তা করে। http://www.emacswiki.org/emacs/EndOfLineTips


2

আমি কিছুক্ষন আগে এই ইস্যুতে দৌড়েছি। ^ এম একটি ক্যারিজ রিটার্ন উপস্থাপন করে এবং অনুসন্ধান Ctrl-Q Ctrl-M(এটি একটি আক্ষরিক creates এম তৈরি করে) আপনাকে ইম্যাক্সের মধ্যে এই চরিত্রটিতে একটি হ্যান্ডেল পেতে দেয়। আমি এই লাইনের সাথে কিছু করেছি:

M-x replace-string [ENTER] C-q C-m [ENTER] \n [ENTER]

2

আপনার সিস্টেমে ডস 2 ইউনিক্স ইউটিলিটি ইনস্টল না থাকলে আপনি উইন্ডোজ এন্ডলাইন অক্ষরগুলি থেকে মুক্তি পেতে নিজের তৈরি করতে পারেন:

vi ~/dos2unix.bash:

নিম্নলিখিত বিষয়বস্তু সহ

#!/bin/bash
tr -d '\r' < $1 > repl.tmp
mv -f repl.tmp $1

আপনার ~ / .bashrc- এ লাইনটি যুক্ত করুন:

alias 'dos2unix=~/dos2unix.bash'

প্রয়োগ করা হচ্ছে

dos2unix file_from_PC.txt

file_from_PC.txt এ লাইন প্রান্তে ^ এম অক্ষর সরিয়ে ফেলবে। আপনার কাছে বিড়াল ব্যবহার করে তা আছে কিনা তা আপনি পরীক্ষা করতে পারেন:

cat -v file_from_PC.txt

1

আরো দেখুন:

ইমাসে ^ এম লুকানো হচ্ছে

সতর্কতা অবলম্বন করুন যদি আপনি এম characters এম অক্ষরগুলি সরিয়ে এবং আপনার দলে পুনরায় জমা দিতে চান। তারা পরে গাড়ি ছাড়া কোনও ফাইল দেখতে পাবে।


0

আমার সমাধান ছিল এই ইমাস উইকি নিবন্ধে পাওয়া নিম্নলিখিত এলিস্প ফাংশনটি ব্যবহার করা ।

 (defun dos2unix ()
      "Not exactly but it's easier to remember"
      (interactive)
      (set-buffer-file-coding-system 'unix 't) )

M-x dos2unixবাফারে ফাংশনটি সম্পাদন করুন এবং ফাইলটি সংরক্ষণ করুন, সমস্ত ^Mঅদৃশ্য হয়ে যাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.