سؤال

إلى الأمام:أفعل لا تريد أن تبدأ حربا دينية.

لقد استخدمت السادس بقدر ما أستطيع أن أتذكر، والمرات القليلة التي حاولت التقاطها ايماكس لقد كنت ضائعًا جدًا لدرجة أنني استسلمت بسرعة.ومع ذلك، يجد الكثير من الأشخاص أن Emacs قوي جدًا.قابليتها للبرمجة أسطورية إلى حد ما.أنا أقوم في المقام الأول بتطوير Solaris+Java، وأود أن أطرح سؤالاً بسيطًا:هل ستزداد إنتاجيتي إذا استثمرت الوقت في التعرف على Emacs؟هي الوظيفة التي تقدمها أكثر همة هل سيتم تسديد زيادات الإنتاجية في إطار زمني معقول؟

يكرر:لا أريد إجابة "محرري أفضل من محررك".أريد فقط إجابة بنعم أو لا حول ما إذا كان الأمر يستحق استثمار الوقت أم لا.هل ستزداد إنتاجيتي حقًا؟

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

المحلول

أفضّل emacs على vi، لكني مرتاح في كليهما.

هناك بعض الأشياء التي يمكنك القيام بها في emacs والتي تجعله أقوى من vi، ولكن ليست جميعها ذات صلة بالبرمجة.(هل يمكنك إرسال بريد إلكتروني أو قراءة الأخبار من داخل vi؟لا، ولكن من يهتم؟) إذا كنت مرتاحًا مع lisp (وأنا لست كذلك)، فقد تكون قادرًا على كتابة إضافات وأوضاع وأشياء لجعل حياتك أسهل، ولكن من المحتمل أن يكون ذلك مجرد تلوين نحوي وتقويم مطابقة وحلوى العين من هذا القبيل.

سأتوقف عن التجول الآن.كن نفسك إنتاجية زيادة باستخدام إيماكس؟لا.

تحديث:انظر تعليقي أدناه.منذ أن نشرت هذا، أنا يملك تعرفت على طرق جعلني استخدام emacs أكثر إنتاجية من استخدام vi.

نصائح أخرى

[تنصل: شخصيا, ، أنا أفضل فيم.إخلاء المسؤولية:واصل القراءة.]

فيم يتفوق في الأمور الصغيرة:من خلال جعل الحركة والحركة مفهومين منفصلين وتوفير تسهيلات للتكرار المعقد، يمكنك إجراء عمليات تحرير قوية بشكل لا يصدق في تسلسل قصير من ضغطات المفاتيح.يمكنك بسهولة القيام بأشياء في Vim في المسار العادي للتحرير والتي تتطلب منك الانتقال إلى البرمجة النصية في Emacs.أيضًا، معظم الطاقة التي تستخدمها تأتي من الصندوق، لذلك حتى لو كان لديك طاقة واسعة النطاق .vimrc من المحتمل أنك ستتمكن من العمل بشكل منتج مع التخصيصات أي تركيب فيم.

تتفوق إيماكس على نطاق واسع:من خلال تعيين جميع مفاهيم واجهة المستخدم الخاصة به مباشرة إلى البنيات والمفاهيم الأساسية في Elisp، يصبح من السهل جدًا تقديم ميزات عالميًا لأنواع معينة من الملفات أو الظروف، مما يجعل Emacs يشبه نموذج Excel القائم على النص والأكثر تنظيمًا وقابل للبرمجة.يفترض هذا أنك ستقضي الكثير من الوقت في تخصيص بيئتك بما يتناسب مع احتياجاتك وتفضيلاتك الشخصية.بالطبع، تبذل Emacs قصارى جهدها لتسهيل البقاء داخل تلك البيئة الواحدة لكل شيء وأي شيء قد ترغب في القيام به.

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

السادس هو سكين المطبخ.

vim عبارة عن سكين طاهٍ لطيف وحاد ومتوازن.

إيماكس هو سيف خفيف.

في أغلب الأحيان، عملي يتطلب مني تقطيع الخضار.في بعض الأحيان، يجب أن أواجه جيشًا كاملاً من الروبوتات.

لقد كنت أستخدم Emacs لمدة 20 عامًا.أنا أكتب في Emacs الآن باستخدام عنصر واجهة مستخدم يسمى "كل هذا نص" يتيح لي امتصاص النص داخل وخارج مربعات النص في Firefox.يمكنني أن أذهب بسرعة كبيرة في إيماكس.أنا أقل إنتاجية بكثير بدونها.

هذا أمر مثير للجدل إلى حد كبير، لكنني أعتقد أيضًا أن تعلم Emacs يمكن أن يعلمك قدرًا مدهشًا عن البرمجة.

اعتمادًا على كيفية البرمجة، يمكنك يمكن رؤية زيادة الإنتاجية.بالنسبة للخلفية، أنا أيضًا من مستخدمي vim منذ فترة طويلة، لكنني تعلمت emacs منذ عامين تقريبًا، والآن أستخدمها بالتبادل.

ما دفعني إلى مرحلة تعلم برنامج emacs هو قدرته المفيدة على فتح عدد كبير من الملفات في وقت واحد، والتبديل بينها بسهولة.لقد كنت في منتصف تقديم ميزة أضافت وأثرت على عدد كبير من الفصول الدراسية.(كان هذا هو C++، لذلك كان هناك عادةً ملفان لكل فصل.) وبما أنني كنت لا أزال أقوم بتعزيز الواجهة، فقد أكون عادةً في منتصف تحديث ملف واحد عندما أدرك أنني بحاجة إلى تغيير ملف آخر.

مع gvim، كان من الأسهل فتح نافذة جديدة لكل ملف، الأمر الذي بدأ يصبح غير عملي.ومع ذلك، باستخدام Emacs، كان من السهل فتح ملف جديد في نفس النافذة (Ctrl-x، Ctrl-f).بمجرد فتح ملف Emacs، يكون من السهل جدًا التبديل ذهابًا وإيابًا بين المخازن المؤقتة المفتوحة (Ctrl-x، Ctrl-b).

ولأخذ هذه الخطوة إلى الأمام، قد تؤدي جلسة emacs واحدة إلى فتح العديد من النوافذ، لذلك بالإضافة إلى تقسيم النافذة عموديًا، يمكنني أن أقرر، دون مقاطعة العمل على ملف، فتح نافذة أخرى بجواره، مما يسمح لي بالعمل بفعالية جنبًا إلى جنب- الجانب مع الاستمرار في الاحتفاظ بكل نافذة بالعرض الافتراضي البالغ 80 حرفًا.

لا تزال هناك بعض الأشياء التي أجدها أسهل في vim (على سبيل المثال.وضع تحديد الكتلة، وتسجيل الماكرو البسيط، ووضع الفرق)، والأشياء الأسهل في Emacs (محاذاة الخط، وإدارة الملفات/المخزن المؤقت، وإدارة النوافذ/الشاشة).لذلك، أجد نفسي أتناوب بين الاثنين (وأحيانًا أستخدم كليهما في وقت واحد)، اعتمادًا على مهمة التحرير التي أتوقعها.

إذا كنت لا تزال غير متأكد، أقترح عليك تجربتها.قم بتشغيل البرنامج التعليمي لـ Emacs ثم استخدمه لكتابة التعليمات البرمجية لصباح أو ليوم واحد، مع الاعتماد بشكل كبير على المساعدة.إذا كنت لا تزال لا تحب ما تراه، فابق مع فيم.بغض النظر عما يقدمه المحرر، فإن معرفتك ومعرفتك بالأداة ستكون إلى حد بعيد العامل الأكثر أهمية في إنتاجيتك.

لا أريد حربًا مقدسة، لكن من فضلك أجب على سؤال شخصي للغاية بإجابة نعم أو لا.

نعم، قد ترى زيادة في الإنتاجية بسبب الوظائف القوية.

لا، لن ترى زيادة في الإنتاجية لأن الأنماط والاستعارات المستخدمة في إيماكس قد لا تتوافق مع عقلك.

الإجابة المختصرة على سؤالك هي "نعم".مزيد من التفاصيل أدناه.

لقد استخدمت vi بشكل حصري تقريبًا من عام 1980 إلى عام 1991.المرة الوحيدة التي لم أستخدم فيها vi كانت عندما كنت أتعامل مع الحد الأدنى من تثبيت Unix الذي كان صغيرًا جدًا بحيث لا يشمل vi، لذلك اضطررت إلى العودة إلى ed وهو الحد الأدنى من وظائف التحرير التي تم إنشاءها في vi الأصلي في قمة ال.

منذ عام 1985 تقريبًا، كان المبرمجون الآخرون الذين عملت معهم يغنون باستمرار في مدح إيماكس.لكن في كل مرة أحاول أن أتعلمها، لا أتمكن من الوصول إلى مسافة بعيدة.كنت أقضي ساعة في تصفح برنامج emacs turrial (C-h t) وفي النهاية كل ما أعرفه هو كيفية إدراج النص وتعديله والتحرك حول الشاشة.يمكنني أن أفعل الكثير مع vi أكثر مما تعلمته في تلك الساعة مع emacs لدرجة أنني لم أتمكن من إجراء التبديل.وبعد ثلاثة أشهر كنت أجد وقتًا لقضاء ساعة أخرى، وينتهي بي الأمر بدراسة نفس المادة.لدى Emacs منحنى تعليمي بحرف كبير "L".لم يكن الأمر كذلك إلا عندما كنت أبرم عقدًا يستخدم فيه الجميع برنامج emacs، حتى قررت في النهاية أنني بحاجة إلى تخصيص أكثر من ساعة في كل مرة لتعلمه.بعد قضاء أكثر من يوم بقليل في عدم القيام بأي شيء سوى العمل على البرنامج التعليمي والوثائق المضمنة، وصلت أخيرًا إلى النقطة التي يمكنني فيها القيام بأشياء باستخدام emacs لم أتمكن من فعلها باستخدام vi.ومنذ ذلك الحين، لم أرغب أبدًا في العودة.لا يزال بإمكاني كتابة الأوامر vi أثناء نومي، ولكن يمكنني فعل الكثير باستخدام emacs.

افهم أنني أقارن بين emacs و vi، وليس vim.لم أتعلم مطلقًا الامتدادات التي أضافها vim إلى vi، ومن المحتمل أن يكون العديد منها عبارة عن ميزات منسوخة من emacs.إذا كان الأمر كذلك، وإذا كنت ماهرًا بالفعل في استخدام vim، فقد لا يحمل لك emacs العديد من المزايا.

من بين الأشياء التي أعتمد عليها طوال الوقت في إيماكس هي:

  1. عند استخدام emacs، يتم التعامل مع كل شيء كنص.هذا يعني أنه يمكنك معالجة أي بيانات في أي مخزن مؤقت بنفس الأوامر تقريبًا.وفي الحالات التي يكون فيها المخزن المؤقت في وضع لا تتوفر فيه بعض الأوامر القياسية، يمكنك نسخ النص إلى مخزن مؤقت آخر يعمل في الوضع الأساسي واستخدام الأوامر القياسية هناك.

  2. يوفر Emacs بيئة متعددة "النوافذ" يمكن عرضها على محطة خلية الأحرف.في الأيام التي سبقت الرسومات النقطية والنوافذ الحقيقية، تمت كتابة emacs لمحاكاة السلوك الشبيه بالنافذة باستخدام أحرف ascii وتحديد موضع المؤشر.ربما تفكر، "هذا تاريخ قديم.لماذا يجب أن يهتم أي شخص بذلك اليوم؟" ما زلت أستخدم هذه الإمكانية كل يوم.أستخدم شركة استضافة ويب تتيح لي الوصول إلى SSH.حتى أتمكن من تسجيل الدخول إلى مضيف Linux عبر الإنترنت وتشغيل أوامر shell.على الرغم من أن هذا قوي جدًا، إلا أنه من الأقوى بكثير أن أتمكن من تقسيم المحاكي الطرفي الخاص بي إلى "نوافذ" باستخدام emacs، وتشغيل الأصداف في العديد من هذه "النوافذ"، وتحرير الملفات في نوافذ أخرى، وعرض الدلائل وتحريرها في نوافذ أخرى. شبابيك".

    في الواقع، عندما قلت "نافذة" في الفقرة السابقة، كنت أقصد حقًا "المخزن المؤقت".تعد محاكاة خلية الأحرف الخاصة بـ Emacs للنوافذ طريقة لتقسيم العقارات المعروضة على الشاشة.يرتبط مخزن emacs المؤقت بالمحتوى (ملف، أو bash shell، أو دليل، أو نص عشوائي غير مرتبط بملف، وما إلى ذلك) والذي قد يتم عرضه أو لا يتم عرضه حاليًا.لعرض ما يوجد في المخزن المؤقت، يمكنك اختيار نافذة وإخبارها بالمخزن المؤقت الذي تريد رؤيته.لذا، يمكنك العمل على أشياء أكثر بكثير مما لديك من مساحة على الشاشة لعرضها.إنه مشابه تقريبًا لما تفعله في واجهة المستخدم الرسومية الحديثة ذات الرسومات النقطية عندما تقوم بأيقونات/إلغاء أيقونات النافذة.

  3. لقد أشرت بالفعل إلى حقيقة أنه يمكنك تشغيل Shell داخل مخزن مؤقت لـ emacs.يمكنك الحصول على العديد من المخازن المؤقتة التي تقوم بتشغيل الأصداف كما تريد.يمكنك نسخ النص ولصقه ذهابًا وإيابًا بين المخزن المؤقت للصدفة وملف نصي، أو مقارنة جزء من النص بين المخزن المؤقت للصدفة وملف نصي باستخدام نفس تسلسل ضغطات المفاتيح التي قد تستخدمها لنسخ النص أو مقارنة النص بين نصين مختلفين ملفات نصية.في الواقع، هذا ينطبق على معظم أنواع المخازن المؤقتة، وليس فقط المخازن المؤقتة الصدفية والمخازن المؤقتة المرتبطة بالملفات.

  4. عندما تستخدم أمر emacs لفتح ملف، ولكن ما حددته هو في الواقع دليل، فإن المخزن المؤقت يعمل في وضع dired (محرر الدليل).في هذا الوضع، ستفتح ضغطة مفتاح واحدة كل ما يشير إليه المؤشر حاليًا، سواء كان ملفًا أو دليلًا فرعيًا.المخزن المؤقت في الوضع المتجه هو مدير ملفات - وهو عبارة عن محطة تناظرية موجهة لخلية الأحرف لـ Finder على Mac أو Windows Explorer.

  5. إحدى وظائف emacs التي أستخدمها بشكل مستمر تقريبًا هي "Compare-windows".أفضّل هذا كثيرًا على أدوات مقارنة سطر الأوامر "diff" أو واجهة المستخدم الرسومية مثل ما هو مضمن في Eclipse.يقوم Diff أو Eclipse بمقارنة الملفات بأكملها، ويوضح لك الخطوط المختلفة.ولكن ماذا يحدث عندما يكون لديك سطرين مختلفين يبدوان متشابهين جدًا؟خذ بعين الاعتبار ما يلي:

    ما الفرق بين هذا الخط والآخر؟

    ما الفرق بين هذا الخط والآخر؟

    كم من الوقت سوف يستغرق اكتشاف الفرق؟(تَلمِيح:تبدو الفاصلة العليا ASCII وUnicode متشابهة إلى حد كبير.)

    على عكس diff وEclipse، اللذين يعرضان الخطوط المختلفة فقط، فإن وظيفة "مقارنة النوافذ" الخاصة بـ emacs تفاعلية.يمكنك وضع المؤشر على كل نافذتين متجاورتين عند نقطة تكون فيها محتويات النافذة متماثلة.قم بتشغيل "مقارنة النوافذ"، وسينتقل المؤشر في كل نافذة إلى الحرف الأول الذي يختلف.قم بتغيير موضع المؤشر في إحدى النوافذ إلى النقطة التي يكون فيها مماثلاً للنافذة الأخرى، ثم أعد تشغيل "مقارنة النوافذ" للعثور على الفرق التالي.وهذا يجعل من السهل مقارنة الأجزاء الفرعية من الملفات.

    شيء آخر أستخدمه بانتظام "نوافذ المقارنة" هو مقارنة المجاميع الاختبارية.تقوم العديد من المشاريع البرمجية بتوزيع كرة القطران الخاصة بالتطبيق على صفحة تتضمن أيضًا تجزئة MD5 لكرات القطران.إذًا، كيف يمكنك مقارنة تجزئة MD5 الموجودة على صفحة التوزيع مع تجزئة MD5 المحسوبة من الملف الذي تم تنزيله.إيماكس يجعل هذا تافهة.

    قم أولاً بنسخ تجزئة MD5 من صفحة الويب إلى مخزن emacs المؤقت الجديد.ثم، بعد تنزيل ملف .tar.gz، قم بتشغيل:

    md5sum downloadfile.tar.gz

    في المخزن المؤقت قذيفة.مع عرض هذين المخزنين المؤقتين في نوافذ emacs جنبًا إلى جنب، ضع المؤشر في كل نافذة في بداية المجموع الاختباري وقم بتشغيل "نوافذ المقارنة".إذا كانت هي نفسها، فسيتم وضع المؤشر في كل نافذة في نهاية كل مجموع اختباري.

  6. في النقطة السابقة، أعطيت مثال تشغيل "compare-windows" على السطور:

    ما الفرق بين هذا الخط والآخر؟

    ما الفرق بين هذا الخط والآخر؟

    ستؤدي "نوافذ المقارنة" إلى ترك المؤشر موضوعًا على الفاصلة العليا في كل سطر.الآن أنت تعرف أي الشخصيات تختلف.لكن ما هي الشخصيات؟اكتب أمر الضغط على المفتاحين CTRL-x =، وسيعرض emacs الحرف وقيمة ascii الخاصة به بالأشكال الثماني والعشري والست عشري، وإزاحة الحرف من بداية الملف، وإزاحة الحرف من بداية السطر.نظرًا لأن ASCII عبارة عن ترميز 7 بت، فإن كافة أحرف ASCII تم إيقاف البت عالي الترتيب الخاص بها.بمجرد أن ترى أن قيمة الفاصلة العليا الأولى هي 0x27 والثانية هي 0x92، فمن الواضح أن الأولى موجودة في مجموعة أحرف ASCII والثانية ليست كذلك.

  7. كان Emacs أحد أوائل بيئات التطوير المتكاملة، وربما الأول على الإطلاق.لديها أوضاع للغات محددة.أجدها مفيدة لفرض مسافة بادئة متسقة على الكود الخاص بي لجعله أكثر قابلية للقراءة.هناك أيضًا وظيفة مدمجة لتجميع التعليمات البرمجية وتصحيح الأخطاء.لا أستخدم وظيفة الترجمة كثيرًا لأنني عندما كنت أكتب للغة مترجمة مثل لغة C، كنت معتادًا على القيام بذلك في موجه الصدفة.كانت وظيفة تصحيح الأخطاء رائعة جدًا بالنسبة لـ C وC++.لقد قام بدمج gdb مع المحرر بطريقة تحصل على نفس الوظيفة تقريبًا مثل إمكانات تصحيح الأخطاء الموجودة الآن في Eclipse، ولكن لم تهدر عقارات الشاشة بالطريقة التي تعمل بها بيئة التطوير المتكاملة الحديثة المستندة إلى واجهة المستخدم الرسومية.من الناحية النظرية، يجب أن يكون تكامل مصحح الأخطاء سهلاً لجعله قابلاً للتطبيق على أي لغة أخرى تقريبًا، لكنني لم أتحقق لمعرفة اللغات الأخرى التي يعمل بها هذه الأيام.

  8. يتيح لك Emacs إنشاء وحدات ماكرو عن طريق إخباره متى تبدأ في تذكر ما تكتبه ومتى تتوقف.هذا قوي للغاية بالنسبة للمهام التي تقوم بها بشكل متكرر.

  9. Emacs قابل للتوسعة بشكل لا نهائي إذا كنت تعرف Lisp.ولكن على الرغم من أنني لم أتعلم برنامج Emacs Lisp مطلقًا، إلا أنني مازلت أجد أن برنامج Emacs هو أحد أقوى الأدوات التي استخدمتها على الإطلاق.

  10. روابط مفاتيح Emacs.سأكون أول من يعترف بأن روابط مفاتيح Emacs سيئة.لكنه أقوى بكثير من أي شيء آخر استخدمته، وأنا على استعداد لتحمل روابط المفاتيح.

  11. وعلى نحو فكاهي، منذ سنوات مضت، قام مؤلف كتاب إيماكس، ريتشارد ستالمان (وهو أيضًا منشئ رخصة GPL، ومؤسس مشروع GNU ومؤسس FSF) بالسخرية من أولئك الذين يعالجون السادس مقابل السادس.emacs كحرب مقدسة.اخترع شخصية "القديس إجنوسيوس" لكنيسة إيماكس.وبهذا المظهر، علق ستالمان قائلاً: "أحيانًا يسألني الناس عما إذا كان استخدام محرر النصوص الآخر هو خطيئة في كنيسة إيماكس.حسنًا، صحيح أن vi vi vi هو محرر الوحش، لكن استخدام نسخة مجانية من vi ليس خطيئة، بل كفارة." (انظر http://stallman.org/saint.html.هناك أيضًا صورة لطيفة له، ولكن نظرًا لأنني جديد في StackOverflow، فلن يسمح لي بنشر أكثر من عنوان URL واحد.لذا انتقل إلى نفس النطاق، ولكن قم بإحضار الملف saintignucius.jpg)

لقد استخدمت Vim لمدة 10 سنوات قبل الخوض في Emacs منذ عامين.لدي ذكريات جديدة إلى حد ما عن كيفية تغير منحنى الإنتاجية الخاص بي بمرور الوقت.

نقاطي كلها مشروطة، YMMV حسب نقاط قوتك وخبرتك.

إذا كنت قد استخدمت Unix وسطر الأوامر لفترة كافية بحيث تكون على دراية بـ C-a، وC-e، وC-n، وC-p، وC-k، وC-y، وما إلى ذلك أثناء عملها على الصدفة، فلن يستغرق الأمر وقتًا طويلاً للانتقال إلى استخدام نفس الارتباطات (الرابط الافتراضية) في إيماكس.لقد اكتشفت مؤخرًا أن XCode يستخدم هذه الارتباطات أيضًا.

إذا كنت مرتاحًا لمحرر يعمل دائمًا، وتعتني بالمخازن المؤقتة (مثل علامات تبويب المتصفح) وبالتالي تعيش في التطبيق (كما تفعل مع تطبيقات Web2.0 في المتصفح)، فمن المحتمل أن يُظهر Emacs تحسينات فورية في الإنتاجية.

إذا كنت تعمل بشكل عام في مشاريع تحتوي على العديد من الملفات ذات الصلة، فإن هذا الاستمرار يحقق بعض الفوائد الإضافية في الحفاظ على سياق هذا المخزن المؤقت.يتم وضع كل مخزن مؤقت في ملفه المفتوح مما يسمح بالاستخدام المريح لأدوات تعزيز الإنتاجية المتنوعة لمشروعك (مثل grep-find وeshell وrun-python وslime).يبدأ هذا إلى جانب إكمال النص وyasnippets وما إلى ذلك في الظهور كجزء صغير مثل IDE على الرغم من أنه مخصص ومخصص بشكل كبير من خلال التكوين الخاص بك.هذا بصرف النظر عن الخدمات المشابهة لـ Emacs IDE الأكثر تحضرًا مثل البنك المركزي الأوروبي.

لقد تأثرت إنتاجيتي في البداية عندما كتبت "jjjkkkk" باستمرار Esc-Esc-Esc-Esc للأسبوع الأول أو نحو ذلك.في الأسبوع التالي، بدأت بحذر في استخدام مفاتيح التنقل الصحيحة.ثم اكتشفت ملف التكوين ...بصراحة، لو كان لدي مجموعة إيماكس المبتدئة منذ البداية، كنت سأقول إن إنتاجيتي عادت ببطء إلى مستوى التكافؤ خلال الأسبوع الثالث إلى الرابع، لكني تعثرت في ملف التكوين.ومع ذلك، فقد انتقل أحد زملائي في العمل للتو من vim إلى emacs وقد حصل للتو على مجموعة الأدوات المبتدئة وهو في طريقه.في الأسبوع الأول يبدو مرتاحًا ويستمتع بكل المزايا المفاجئة (من المحتمل أن يستمر هذا الإحساس لعقد من الزمن).

أخيرًا، إذا ارتكبت أخطاء، فسوف تكتسب على الفور الإنتاجية (والثقة) من حلقة القتل/السحب الدائرية وحلقة التراجع.أنا أيضًا من المعجبين شخصيًا بالتراجع عن منطقة معينة.

إجابتي المختصرة هي نعم، من المفيد قضاء 3-4 أسابيع من انخفاض الإنتاجية لتعلم Emacs.حتى إذا قررت أنك تفضل مجموعة أدوات Unix المبسطة على Emacs للتطوير، فسوف تستمد منها تعليمًا قابلاً للتطبيق على نطاق واسع خارج نطاق المحرر.

وثائق Emacs عبارة عن غابة.لقد جئت من Emacs إلى Vim عندما أدركت مدى تنظيم وثائق Vim، ومدى سهولة العديد من الميزات.لا أعرف ما الذي يكمن في طريق خبير Emacs، لكنني سأحذرك من أن تعلم القيام بأي شيء مفيد فيه يستغرق وقتًا طويلاً، ولن يجعلك أفضل في اختراق الشبكة.العصا مع فيم.

زميل النص هو Emacs أفضل لأجهزة Mac، على الرغم من أن ذلك لن يساعدك مع Solaris.يعد Eclipse رائعًا نوعًا ما، ويحتوي على الكثير من المكونات الإضافية.

سيوفر Emacs مكاسب إنتاجية إذا كنت على استعداد للتعلم وتخصيصه ليناسب احتياجاتك.معظم الناس ليسوا كذلك.لزيادة إنتاجيتك، يجب عليك استخدام الأداة لأكثر من مجرد تحرير بسيط - فمعظم الأشخاص لا يتقدمون أبدًا إلى ما هو أبعد من التحرير البسيط.

إليك اختبار سريع:هل قمت بتخصيص مدير النوافذ الخاص بك لجعل بيئتك أكثر كفاءة (مصممة لتناسب احتياجاتك)؟إذا كانت الإجابة "لا"، فمن المحتمل أنك لن تحصل على عائد الاستثمار من خلال تعلم emacs.

ومع ذلك، إذا كنت تقوم بتطوير Java، فإن Eclipse هو الإجابة القياسية، لذا فإن سؤالك موضع نقاش كبير.

لقد كنت سعيدًا جدًا بـ Vim الخاص بي، لكن بمجرد أن سمعت عنه وضع المؤسسة, لقد بدأت في تعلم إيماكس.قد يكون وضع org-mode أحد الأسباب القوية لتعلم Emacs.

أنا أحب إيماكس وأستخدمه كل يوم.

ومع ذلك، لا أعتقد أن تكلفة التعلم سيتم تعويضها من خلال مكاسب الإنتاجية في المستقبل.

إذا كنت تقوم ببرمجة Java، فأنت بحاجة إلى IDE جيد.تسير Emacs بطريقة عادلة نحو أن تكون واحدة، ولكن دعونا نواجه الأمر، لقد تغلبت عليها IDEA وآخرون.(ربما ألهمت emacs الكثير من بيئات التطوير المتكاملة هذه، لكن هذه قصة أخرى).

لقد حاولت مرتين أن أتعلم إيماكس.إنه لا يتناسب مع طريقة عمل عقلي، ولذلك لا أستخدمه.

Emacs (أو vim) ليس أفضل بكثير من vim (أو Emacs).كلاهما لديه العديد من الخيارات التي يمكن إضافتها إليهما والتي تتيح لهما القيام بأشياء مذهلة.ليس لدي أدنى شك في أن أي شيء يمكنك إنجازه في Emacs يمكنك إنجازه أيضًا في Vim، لكن هذا ليس معيارًا.

جرب إيماكس.معرفة ما إذا كان يناسب بشكل أفضل.إنها حالة لا خسارة فيها.

أريد أن ألقي نظرة على emacs بشكل أكبر، لكن لا يمكنني استخدامه لفترات طويلة من الوقت؛يؤلمني يدي.هل أفعل شيئًا خاطئًا بشكل فظيع؟

vim وemacs، هما المحرران الأكثر قدرة وقد ظلا كذلك لبعض الوقت.إذا كنت تعرف واحدًا جيدًا، فأنا أشك في أنك ستكسب الكثير في هذه العملية...

ومع ذلك ، من الجيد دائمًا النظر إلى المكون الإضافي المتاح لأن اثنين من الإضافات الجديدة يمكن أن تفعل العجائب للإنتاجية.

/جوهان

لا (ولقد استخدمت كليهما).

على نفس المنوال المتمثل في عدم البحث عن حرب دينية (لكن تفضل بالتصويت ضدي إذا كنت تشعر أنه يجب عليك ذلك)، لماذا تشعر أن الخيار الوحيد للسادس هو emacs؟هل هو نظام التشغيل الذي تقوم بتطويره أم مجرد الخيارات التي استكشفتها؟

يتمتع مشهد تطوير Java ببعض من أفضل بيئة تطوير متكاملة (IDEs) هذه الأيام (المجانية والمدفوعة)، إن لم تكن الأفضل عندما يتعلق الأمر بتحرير التعليمات البرمجية ودعم إعادة البناء. كما أن IntelliJ IDEA يحتوي على مكون إضافي vi يمكن أن يساعدك على الشعور وكأنك في بيتك، على سبيل المثال (لست متأكدًا مما إذا كان هناك شيء مشابه متاح لـ Eclipse).في حين أن تغيير الأدوات ينطوي على منحنى تعليمي، فإن الوقت الذي تقضيه في القيام بذلك قد يكون يستحق العناء إذا كانت القفزة كبيرة بما فيه الكفاية.

ما مدى سرعة الكتابة؟إذا كنت تصطاد وتنقر، فإن إيماكس ليس مناسبًا لك.إذا كنت سريعًا، فقد يساعدك عدم الاضطرار إلى الإمساك بالماوس طوال الوقت.

بشكل عام، emacs أقوى من السادس.يمكنك أن تفعل الكثير من الأشياء في إيماكس.

ستزداد إنتاجيتك إذا قررت تخصيص الوقت لبرمجة محرر النصوص الخاص بك.من بين المحررين، يقدم emacs إطارًا أفضل أو تخصيصًا مستمرًا.إذا لم تقم ببرمجة محرر النصوص الخاص بك، فما عليك سوى البقاء مع ما هو مريح لك.

أحد الأسباب الجيدة لتعلم Emacs هو أن البرامج الأخرى تستخدم روابط مفاتيح Emacs أيضًا.يمكنك استخدام روابط مفاتيح Emacs في موجه bash، على سبيل المثال، أو أي شيء آخر باستخدام GNU readline.من الجيد أن تتعلم الحركة الأساسية وحذف الكلمات/السطور والتراجع عن/إعادة الكوردات في Emacs حتى تتمكن من استخدامها في برامج أخرى.ستزداد إنتاجيتك في تلك الأدوات الأخرى حتى لو لم تستخدم Emacs مرة أخرى.

أنا أعرف Vim وEmacs، وVim يناسب ذهني وعاداتي بشكل أفضل.لكن أشخاصًا آخرين يدعون الشيء نفسه بالنسبة إلى Emacs.أنت لا تعرف بنفسك إلا إذا حاولت.لا يستغرق الأمر وقتًا طويلاً لتعلم Emacs جيدًا بما يكفي لمعرفة ما إذا كنت ستحبه أم لا.

هل ستزداد إنتاجيتي حقًا؟

في الأيام/الأسابيع القليلة الأولى، لا على الإطلاق.

بعد أن تتوقف عن قراءة البرنامج التعليمي في كل مرة تريد فيها تعديل شيء ما - بالتأكيد..

ايماكس يكون أكثر "قوة" من vim، ومحرك البرمجة النصية الخاص به أكثر مرونة بكثير، وهناك عدد أكبر بكثير من البرامج النصية والأوضاع وما شابه ذلك المبنية على emacs.

ومن قال أن العكس هو الصحيح..إذا قضيت نفس القدر من الوقت في تحسين معرفتك بـ vim، فقد تكون منتجًا بنفس القدر.

ربما لا تكون منتجة بنفس الطريقة - أود أن أقول إن vim أسرع في تحرير الملفات، أما emacs فهو أفضل في القيام بكل شيء آخر (مرة أخرى، أود شخصيًا أن أقول أشياء مثل flymake-mode, تعتبر روابط VCS أسرع في الاستخدام من مكافئات vim)

وأنا أتفق مع آلان ستورم:"لأن الأنماط والاستعارات المستخدمة في إيماكس قد لا تتوافق مع عقلك"

وهذا عامل مهم جدا.تتكيف العقول المختلفة بشكل مختلف مع الواجهات المختلفة.

بعض الميزات الرئيسية - والمتاحة بسهولة - التي أحب Emacs حقًا، وأعتبرها معززات للإنتاجية:
1.منشأة "yank-pop" - يتم حفظ كل قطع/نسخة في مكدس حتى تتمكن لاحقًا من اختيار ما تريد لصقه (لا أعرف ما إذا كان vi / Vim يحتوي على هذا ولكن معظم Java IDEs لا تحتوي عليه)
2.تعيين التنقل باستخدام مفتاح Ctrl - يتيح لك ذلك التنقل في ملفك دون تحريك يديك لاستخدام مفاتيح الأسهم.(يساعد ربط المفاتيح في المحررين الآخرين بالطبع)
3.متاح على كل نظام أساسي تقريبًا (ينطبق ذلك على vi/Vim أيضًا بالطبع) - سواء كان مستندًا إلى واجهة المستخدم الرسومية أو مستندًا إلى النص (تتوفر Java IDEs على معظم الأنظمة الأساسية أيضًا ولكن فقط في وضع واجهة المستخدم الرسومية، وهي أكبر بكثير وتحتاج إلى التثبيت بشكل منفصل بينما Emacs متاح بشكل عام على نطاق أوسع - أنظمة BSD / *nix / Linux / Mac
4.أفضّل أن يظل المحرر بعيدًا عن الطريق حتى أحتاج إليه - فالعرض المتقن لـ Emacs يجبرني على التفكير قبل أن أكتب.
5.تعد مفاتيح التنقل الأساسية في Emacs متاحة عالميًا نوعًا ما - على نظام التشغيل Mac OS الخاص بي، يمكنني استخدام هذه المفاتيح في المحطة الطرفية، وبريد Mac، وما إلى ذلك.

في النهاية، إذا كانت فلسفة إيماكس تروق لك، فسوف تبذل جهدًا إضافيًا لتعلمها.وسوف يكافئك.

نظرًا لأن vi/Vim وEmacs قريبان جدًا من حيث ما يمكنهم فعله وما لا يمكنهم فعله، فإن الإنتاجية مع هذين المحررين تأتي من الخبرة في استخدامه.

في رأيي، كونك مبرمجًا، لن يستغرق الأمر وقتًا طويلاً للحصول على فكرة عامة عن Emacs بمجرد البدء في استخدامه.يمكن للآخرين أن يقولوا الكثير فقط، عليك أن تجرب ذلك بنفسك لتعرف ذلك.

بالنسبه لي انا استخدم الاثنينإن الأمر أشبه بأخذ أكثر من سلاح إلى الحرب، استخدم السلاح المناسب في الظروف المناسبة.;)

أنا أحب Emacs، يمكنك توسيعه وفقًا لاحتياجاتك - في نظري، أي نظام يمكنك توسيعه بنفسك هو نظام يستحق الجائزة.

تنصل: أنا جاهل.لقد كنت مستخدمًا لـ emacs منذ حوالي 4 سنوات، ومستخدمًا لـ vim لمدة 6 أشهر تقريبًا، وربما أكثر من 15 عامًا إذا حسبت كل المرات التي حاولت فيها تعلمها وكرهتها.(يقتلني التمييز بين وضع الكتابة والحركة.كل مرة.لذا، إذا لم يقتلك، فقد يكون رأيي عديم القيمة تمامًا.) ومع ذلك، أعتقد أن رأيي مختلف بشكل مثير للاهتمام عن الآراء الـ 26 الأخرى التي رأيتها هنا، لذلك سأعبر عنها.:إخلاء المسؤولية

رأيي:

  • يعد Emacs أفضل للكتابة، خاصة على نطاق واسع "أنا أكتب ميزة جديدة وسوف يستغرق الأمر بعض الوقت قبل أن أتمكن من ذلك يحاول لمعرفة ما إذا كان يعمل ".
  • يعد Vim أفضل في التحرير، وخاصة التعديلات السريعة.

عندما أحتاج إلى فهم 8 ملفات واختراقها في وقت واحد، فإن خصائص Emacs كمدير نوافذ متبلط مع مخازن مؤقتة متعددة (تحتوي المخازن المؤقتة على توافق 1.2:1 مع الملفات، وغالبًا ما تكون نفس الشيء، ولكنها ليست بالضرورة) regexp -البحث (والاستبدال) أمر لا يصدق.

إذا كنت لا أحب بعض الأشياء الصغيرة بسبب git diff في الصدفة (لا أستخدم ميزات VC الخاصة بـ emacs كثيرًا، على الرغم من أنني أحبها عندما أستخدمها) أفتحها باستخدام vim وأخرجها بشكل أسرع مما أستطيع فعله Alt-TAB.

حقيقة أن أوامر التحرير الخاصة بـ Emacs متاحة بسهولة أكبر أثناء الكتابة تجعل الكتابة كثيراً أسرع مما هو عليه في فيم. Ctrl+a يكون كثيراً اسرع من ESC ^ i, ، وليس لديك العبء المعرفي لـ "هل أريد". a أو i أو o أو O..." يا إلهي، أنا أكره التفكير فيه.ونفس الشيء بالنسبة لجميع أوامر أوامر الحركة الأخرى.

أنا أكتب بشكل أسرع، أسرع بكثير، في إيماكس.وهذا يعني أشياء مثل الوضع التنظيمي (الذي أستخدمه في كل شيء:قوائم المهام، وتتبع الأخطاء، والملاحظات، ورسائل البريد الإلكتروني الطويلة، والوثائق...) أكثر منطقية (بالنسبة لي) في Emacs مما كانت عليه في Vim.

و Elisp أمر لا يصدق، على الرغم من أنه سيئ.إنه يعوض تمامًا عن التعبيرات العادية المعطلة لـ Emacs:يمكنك استخدام القوة الكاملة لـ emacs في كل مكان, ، بما في ذلك استبدال regexp متعدد الملفات.و في مقتطفات نصية.

إذا كنت تشعر بالقلق إزاء صحة يديك اختر فيم.

لقد عانيت من نوبة من مؤشر القوة النسبية في الماضي، ووجدت أن أحد الأسباب الرئيسية هو "العزف على الأوتار" أي.الضغط باستمرار على العديد من المفاتيح في نفس الوقت.يستخدم Emacs التآلف على نطاق واسع بينما يستخدم VIM أوامر من حرف واحد متسلسلة في تتابع سريع.وهذا يضع ضغطًا أقل على يديك حيث لا تحتاج العضلات إلى الالتواء والالتواء لتنفيذ الأوامر في المحرر.يمكن أن تؤدي الإصابة بسبب مؤشر القوة النسبية (RSI) إلى تدمير إنتاجيتك، لذا تأكد من مراعاة ذلك في حساباتك.

أنا حقا لا أرى أي سبب للتبديل.لقد استخدمت vi لفترة طويلة وأنا مرتاح جدًا له؛كنت أقوم بتثبيت برنامج emacs كل ستة أشهر تقريبًا لتجربته، ثم أعود سريعًا مرة أخرى.نعم، كانت هناك أشياء فضلتها كثيرًا بشأن vi، ولكن السبب الرئيسي الذي جعلني لا ألتزم بها أبدًا هو أن استثمار الوقت لتعلم محرر آخر بشكل كامل بينما أعرف بالفعل محررًا يتمتع بقدرات كبيرة لا يستحق كل هذا العناء.
أتذكر هذا دراسة مؤرخة إلى حد ما.

في رأيي، SLIME هو السبب الوحيد للتبديل إلى emacs إذا كنت ماهرًا بالفعل في vi.

لا

أنا أستخدم emacs منذ سنوات، وأنا متحول من VIM، وأحبه كثيرًا.

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

وحتى عندما تتقنها بشكل كامل، سيتم التعبير عن إنتاجيتك الإضافية بشكل أساسي في لثغة emacs الإضافية التي يمكنك كتابتها.

من يهتم؟إنها متعة عظيمة، واللثغة هي الكلاب!إذا كنت تريد "إنجاز الأمور"، فنسى أمر البرمجة.يمكنك دائمًا استئجار مبرمجين للقيام بالأشياء.

الظرف الوحيد الذي أوصي فيه بتعلم إيماكس لأسباب إنتاجية هو إذا كنت مبرمجًا lisp/scheme/clojure.إنها تخلق بيئة لثغة جيدة بحيث أن الثواني القليلة التي ستوفرها لك في كل مرة تريد فيها القيام بأي شيء ستضيف سريعًا إلى مكسب حقيقي.وستبدو elisp (التي تقف بالنسبة إلى lisp مثل وحدات ماكرو Excel إلى ALGOL) أقل غرابة بكثير إذا كنت تستخدم بالفعل lisp حقيقيًا.

إذا قمت بتجربتها، فاستخدمها على وحدة تحكم افتراضية حيث تبدو وكأنها طريقة عقلانية لترتيب المحرر.فقط عندما يكون ذلك منطقيًا، حاول استخدامه ضمن نظام النافذة، والذي سيتقاتل معه.

في إجابة سابقة، كتب أرسطو باجالتزيس:"فيم يتفوق في الأمور الصغيرة...يمكنك بسهولة القيام بأشياء في Vim أثناء عملية التحرير العادية والتي تتطلب منك الانتقال إلى البرمجة النصية في Emacs."

لقد تحولت إلى EMACs بعد أكثر من عقد من استخدام VI بشكل حصري ، وفي البداية كنت قد وافقت على المطالبة ، "يمكنك بسهولة القيام بالأشياء في VIM في سياق التحرير العادي الذي يتطلب منك الانخفاض في البرمجة النصية في EMACs." ولكن بعد ذلك اكتشفت أنه باستخدام قدرة الكلي emacs وعدد التكرار الكبير ، كان بإمكاني جعل emacs يفعل كل ما جعلته VI بسهولة ، وأكثر من ذلك بكثير.

تتضمن وظيفة الماكرو الخاصة بـ Emacs ثلاثة أوامر:

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

على سبيل المثال، في السادس إذا أردت العثور على كل شيء <a> العلامات في ملف HTML وأضف أ target السمة، قد أفعل شيئًا مثل ما يلي:

:g/^<a/s/>/ target="_blank">/

هذا المثال ليس مثاليا، لأنه يفترض أن كل شيء <a> العلامات على الخط في حد ذاتها.لكنها جيدة بما يكفي لتوضيح كيفية إنجاز المهمة المكافئة في محررين مختلفين.

لتحقيق نفس التأثير بسهولة في إيماكس، إليك ما أفعله:

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

فيما يلي وصف لما تفعله كل ضغطة مفتاح أعلاه:

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" after the "a" is not HTML.  It's emacs regex notation for end-of-word.
3.  back up one character - as a side-effect this gets you out of search mode
4.  search for the next ">"
5.  back up over the ">"
6.  enter space as an attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

يبدو الأمر معقدًا، لكن في الواقع من السهل جدًا كتابته.ويمكنك استخدام هذا الأسلوب للقيام بالكثير من الأشياء التي لا يستطيع vi القيام بها، دون الرجوع إلى كود Lisp.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top