উইন্ডোজে ইমাসে গিট বাশ


9

উইন্ডোজের জন্য গিটের সাথে আসা বাশ শেলটি আমি চালাতে পারি। আমি এটি আমার মধ্যে রাখি .emacs:

(defun git-bash () (interactive)
  (let ((explicit-shell-file-name "D:/Program Files/git/bin/bash"))
    (call-interactively 'shell)))

তারপরে M-x git-bashএবং ভয়েলা, বাশ চলছে তবে কিছুটা অদ্ভুততার সাথে:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
^[]0;MINGW64:/c/Users/M??rton^G
MĂĄrton@Marci MINGW64 /c/Users/MĂĄrton
$ 

এবং এটি সেই লাইনটি মুদ্রণ ^[]করে, আমি চালানো প্রতিটি কমান্ডের পরে শুরু করে। এছাড়াও এনকোডিং বিভ্রান্ত হয়। আমি কীভাবে এটি ঠিক করতে পারি .emacs?

উত্তর:


10

^[]গোলমাল আপনার শেল প্রম্পটে বিভিন্ন টার্মিনাল নিয়ন্ত্রণ অক্ষর থেকে আসছে। echo $PS1সম্পূর্ণ ক্রমটি দেখার চেষ্টা করুন , এবং উদাহরণস্বরূপ চেষ্টা করুন export PS1='$ 'যে কোনও সাধারণ প্রম্পট স্ট্রিং সেই নির্দিষ্ট সমস্যাটিকে সরিয়ে দেয়।

এনকোডিংয়ের জন্য আপনি নিজের পছন্দসই এনকোডিংটি utf-8 বানানোর চেষ্টা করতে পারেন:

(prefer-coding-system 'utf-8)

প্রম্পট সেট আপ করা হচ্ছে

ইম্যাকস INSIDE_EMACS ভেরিয়েবল সেট করে যাতে আপনি একটি .bash_profile তৈরি করতে পারেন যা কেবল ইম্যাক্সে চলার সময় PS1 সেট করে।

আমার মেশিনে পরীক্ষা করা হচ্ছে, প্রম্পটের প্রথম লাইনে সমস্যাযুক্ত নিয়ন্ত্রণের অক্ষর রয়েছে। আমি এটি দিয়ে একটি। / .বাশ_ প্রোফাইল তৈরি করেছি।

if [ -n "$INSIDE_EMACS" ]; then
    export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
fi

এটি ডিফল্টরূপে গিট-ব্যাশটি কী সেট করছে তার উপর ভিত্তি করে প্রম্পট সেট করে, তবে আমি প্রথম লাইনটি (line n লাইন ব্রেক পর্যন্ত) সরিয়েছি। আমি সেই $ MSYSTEM কেও সরিয়ে দিয়েছি যা প্রম্পটে MINGW64 রাখে - আমার এটি দেখার দরকার নেই। ব্যবহারকারী @ হোস্ট, বর্তমান ডিরেক্টরি এবং গিট রেপো যা অবশেষ রয়েছে। নিয়ন্ত্রণ অক্ষরগুলি এমন রঙ সেট করে যা ইমাস আমার জন্য সঠিকভাবে প্রদর্শিত হয়। (আপনার প্রম্পট সেট আপ সম্পর্কে বিশদ জন্য, ব্যাশ ম্যানুয়াল পড়ুন ।)

ইমাসে আমি শিটটি গিট-ব্যাশে সেট করেছি:

(setq explicit-shell-file-name "C:/git-for-windows/bin/bash.exe")
(setq explicit-bash.exe-args '("--login" "-i"))

এই সেটআপের সাথে আমি এখনও প্রাথমিক আইওএসটিএল ত্রুটি বার্তাটি দেখতে পাচ্ছি, তবে অন্যথায় জিনিসগুলি প্রত্যাশা অনুযায়ী কাজ করে এবং এনকোডিংটি utf-8 হয়।


কাজ করে, ধন্যবাদ! এটি (আমার কাছে ক্রিপ্টিক) পিএস 1 লাইন কী করে? আপনি শেল বাফার এনকোডিংটি utf-8 এ স্বয়ংক্রিয়ভাবে সেট করতে সহায়তা করতে পারেন? ( MĂĄrtonপড়তে হবে Márton)
মারকজেলেম

আমার উদাহরণের PS1 ডিফল্ট একটি গিট-ব্যাশ সেট করেছে from আমি স্রেফ লাইন ব্রেক () n) পর্যন্ত সমস্ত কিছু মুছে ফেলেছি। এটি প্রদর্শিত বিভিন্ন বিট - বর্তমান ব্যবহারকারী, হোস্ট, গিট রেপো ইত্যাদির রঙ পরিবর্তন করতে এই নিয়ন্ত্রণ ক্রমগুলি ব্যবহার করছে আমাকে বিশদ বিবরণের জন্য আমাকে ব্যাশ পিএস 1 ডকটি সন্ধান করতে হবে। UFF-8 এর জন্য, default-process-coding-systemআপনার ইমাসগুলিতে কি সেট করা আছে?
গ্লুকাস

আমি এটি ইম্যাক্স ম্যানুয়ালটিতে পেয়েছি: "শেলের জন্য একটি কোডিং সিস্টেম নির্দিষ্ট করতে আপনি এমএক্স শেলের আগেই Cx RET c কমান্ডটি ব্যবহার করতে পারেন the বাফার। " ( gnu.org/software/emacs/manual/html_node/emacs/… দেখুন )
গ্লুকাস

এর মান (undecided-dos . undecided-unix)। আমি বাফার এনকোডিংটি স্বয়ংক্রিয়ভাবে সেট করার জন্য একটি উপায় খুঁজছি যা প্রতিবার কী-স্ট্রোকটি খোলার সময় অন্য সেটটি মনে রাখার পরিবর্তে। আমার নতুন প্রশ্ন জিজ্ঞাসা করা উচিত
marczellm

খনিটি ইউটিএফ -8 ডস এবং ইউনিক্স। আমি এটা স্পষ্টভাবে সেট না কিন্তু আমি এই সেটিংস আছে: (পছন্দ করা-কোডিং-সিস্টেম 'UTF-8) (setq-ডিফল্ট বাফার ফাইল-কোডিং-সিস্টেম' UTF-8-UNIX)
glucas

1

এই ত্রুটিটি একটি মিলছে না এমন স্যুইচকে নির্দেশ করে। এটি সম্ভবত সেট করা আছে -icএবং আপনার কেবল প্রয়োজন -c:

(setq shell-command-switch "-c")

অন্য বিকল্পটি হ'ল গিট-ব্যাশকে অনুরূপ একটি কমান্ড (উইন্ডোজ সমতুল্য) এর সাথে টিটিটি সরবরাহ করা:

/sbin/getty -l bash -n 38400 tty0

আপনার প্রথম পরামর্শটি কোনও পরিবর্তন করে না। তদতিরিক্ত, M-x list-processesএটি দেখায় যে এটির কোনও প্রভাব নেই: প্রক্রিয়া কমান্ডটি D:/Program Files/git/bin/bash --noediting -i। আপনার দ্বিতীয় পরামর্শ আমি বুঝতে পারি না।
মার্জজেলম

1
কারণ আপনি -i স্যুইচটি সরাননি।
ইমাক্স ব্যবহারকারী 13

ঠিক আছে, তাহলে আমি কীভাবে এটি সরিয়ে দেব?
marczellm

1
আপনি ব্যবহার করছেন explicit-shell-file-nameতাই আমি বিশ্বাস করি আপনি উদাহরণ স্থাপন করতে চাইবেন (setq explicit-bash-args '("--login" "-i"))
গ্লুকাস

1

আমি জানি এটি ঠিক ওপির মতো নয়, তবে আমি মনে করি এটি একটি আকর্ষণীয় বিকল্প। আপনি গিট-ব্যাশ কমান্ড-লাইন থেকে ইমাস শুরু করতে পারেন। এটি ইমাসকে শিট হিসাবে গিট-ব্যাশ ধরে নেবে।

আপনার ব্যাশ প্রম্পট থেকে নীচের মতো কিছু প্রবেশ করুন

bla@host MINGW64 ~/ $ emacs .&

তারপরে, ইমাসে, এমএক্স "শেল"

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