انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: emacs, vi و نسل بعدی  (دفعات بازدید: 4014 بار)

0 کاربر و 5 مهمان درحال مشاهده موضوع.

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
emacs, vi و نسل بعدی
« : 06 اردیبهشت 1395، 11:18 ق‌ظ »
سلام به همه
اول بگم که نمی خوام جنگ ویرایشگرها رو دوباره شروع کنم
من خودم تازه دارم به ‌vim عادت می کنم و خیلی ازش راضی هستم

یه بار گفتم یه سری هم به emacs بزنم ببینم چطوریه وقتی اولین بخش راهنمای emacs رو مطالعه کردم متوجه شدم که emacs تمرکزی بیش از حد رو Ctrl و Meta یا همون Alt داره در واقعه از کاربر توقع داره که مرتب دستش رو از روی کلید های حروف برداره و اون کلید ها رو نگه داره

در مقابل vim با مود کامند که داره در واقع خودش اون کلیدها رو برای کاربر نگه میداره اگرچه کاربر باز هم مجبوره برای رفتن به مود کامند مرتب دکمه Esc رو بزنه

داشتم فکر می کردم آیا راحی هست که کاربر مجبور نباشه دستش رو از روی کلیدهای حروف برداره در عین حال ویرایشگر متن بفهمه کدوم کلید ها رو باید توی متن وارد کنه و کدوم کلید های در واقع دستور هستند و باید بر اساس اون دستور ها یک کاری انجام بده - غیر از تایپ کردن کارکترهای مربوط -

و به یک نتیجه باحالی هم رسیدم
کلمه جادویی
همونطوری که توی vim توی مد کامند اگر : رو وارد کنیم وارد یه بخشی دیگه ای از کامند ها میشه
میشه توی emacs یا حتی توی خود vim یه کلمه ای باشه که هرچیزی بعد از اون تایپ شد به عنوان دستور اجرا بشه

حالا این کلمه جادویی می تونه هرچیزی باشه - حتی میشه انتخابش رو به خود کاربر واگذار کرد -

مثلا من این کلمه رو برای کلید Ctrl پیشنهاد می کنم cdo و برای Meta می گم mdo که حتی Shift هم نخواد
حالا اگر یه همچین emacs فرضی وجود داشته باشه بخواهیم ازش خارج بشیم بجای
C-x C-cکه دوستان خودشون خبر دارند که چطوری - پدر انگشت کوچکه در میاد بعد از یه مدتی -
فقط باید تایپ کنید
cdoxcشاید حتی بخش اولی کلمه جادویی توی متن تایپ هم بشه ولی وقتی که برنامه متوجه شد که این یک کلمه جادویی هست میشه خیلی راحت اون رو از توی متن پاک کنه

حتی کاربر های vim می تونن کلمه جادویی داشته باشند برای مد کامند مثلا همون cdo یا قشنگترش cmo
برای خروج به جای این که Esc بزنن بعد وارد کنن
:wqیه راست همونجا بنویسند
cmo:wq
حالا یه سؤالی هست
اگر یه کسی بخواد خود کلمه جادویی رو تایپ کنه باید چی کار کنه؟
خیلی ساده همون کلمه رو دوبار تایپ کنه تا برنامه بفهمه که منظور کاربر اینکه باید همون کلمه رو تایپ کنه و این دستور نیست
cdocdo
این نظر من بود حالا اگر کسی از سواد و وقتش رو داره - که من ندارم - می تونه این برنامه ها رو توسعه بده شروع کنه خدا هم خیرش بده

اگر کسی فکر می کنه بهتره که این نظر رو به توسعه دهندگان اصلی بگیم یا خودش به اونها بگه یا بگه خودم بگم

اگر کسی هم نظری به ذهنش می رسه که بشه این ایده رو بهتر کرد بگه تا با هم روش فکر کنیم
ET

آفلاین HSN6

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • یک راَکتیست اسپرانتیست پایتونیست گودوئیست!
    • بلاگ شخصی
پاسخ : emacs, vi و نسل بعدی
« پاسخ #1 : 06 اردیبهشت 1395، 12:54 ب‌ظ »
پس از نوشتن اون واژه تا کی باید منتظر دستور باشه؟ لابد باید یک واژهٔ پایان هم باشه!

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #2 : 06 اردیبهشت 1395، 01:05 ب‌ظ »
پس از نوشتن اون واژه تا کی باید منتظر دستور باشه؟ لابد باید یک واژهٔ پایان هم باشه!
خلاقیت مرز نداره
هر کاری میشه کرد
اول . مثلا چند ثانیه صبر کنه اگر چیز جدیدی وارد نشد دستور اجرا بشه

دوم . با یک Enter ناقابل

سوم . یه علامتی مثل . مثلا
cdoxc.یا
.cdoxc.یا اصلا
.cdo.xc.همه اینها میشه من خودم هم بیشتر به دومیش فکر می کردم

چهارم . که خیلی شبیه اولی هست بر اساس احتمالات هست
یعنی کل دستورات محدوده و با هر کلید این دامنه محدودتر هم میشه پس برنامه باید صبر کنه هر وقت که دامنه احتمالات به یک رسید - قطعی شد که کدوم دستور مد نظر بوده خودش اجرا کنه

پنجم . ممکنه از یک کلمه جادویی دیگه استفاده کرد
که ممکنه همون کلمه اول باشه
cdoxccdoممکنه اصلا یک کلمه دیگه باشه مثلا done
cdoxcdoneبه سنت Bash برعکس کلمه اول باشه یعنی odc
cdoxcodc
البته خودم نقطه رو ترجیح میدم چون خیلی خواناتر و واضحتره ولی ممکنه بعضی ها بگن دکمه نقطه برای ما راحت نیست
برای اونها میشه قابلیت شخصی سازی کردن رو اضافه کرد که خودشون تعیین کنن به جای نقطه های اول و دوم و سوم چی باشه یا اصلا کلمه جادویی چی باشه
.cdo.xc.
حالا شاید یه آدم خلاقی باشه که یه راه خیلی باحالتری به ذهنش برسه
« آخرین ویرایش: 06 اردیبهشت 1395، 01:56 ب‌ظ توسط ابراهیم مشهدی تفرشی »
ET

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : emacs, vi و نسل بعدی
« پاسخ #3 : 06 اردیبهشت 1395، 04:34 ب‌ظ »
فکر کنم ویم یه چیزی داره به اسم ‏remap‏ که داخل مود اینسرت هم کار میکنه.مثلا میگی اگر ‏jj‏ رو زدم ‏‎:wq‏ رو اجرا کن.
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #4 : 06 اردیبهشت 1395، 05:09 ب‌ظ »
فکر کنم ویم یه چیزی داره به اسم ‏remap‏ که داخل مود اینسرت هم کار میکنه.مثلا میگی اگر ‏jj‏ رو زدم ‏‎:wq‏ رو اجرا کن.
خیلی عالیه
ولی من بیشتر روی emacs بود

در کل چیزی که من میگم ورای vim و emacs هست
من به یه نسل جدیدی از ویرایشگرها فکر می کنم که دیگه نه Esc توش باشه نه Ctrl یا Meta به معنی واقعی فقط با حروف و اعداد و علامتها بشه همه کاری کرد بدون این که هیچ انگشتی بعد از یه مدت کنده بشه یا نیازی به انگشت شیشم و هفتم توی هر دست داشته باشی یا اصلا لازم باشه چندتا دست اضافی داشته باشی
ET

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : emacs, vi و نسل بعدی
« پاسخ #5 : 06 اردیبهشت 1395، 07:03 ب‌ظ »
فک کنم اینه:
:imap jj <esc>:wq<cr>
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #6 : 06 اردیبهشت 1395، 10:32 ب‌ظ »
فک کنم اینه:
:imap jj <esc>:wq<cr>

یعنی دمت گرم امتحان کردم خیلی خوب بود ولی تا اونچیزی که من می خواستم یک کمی فاصله داشت
1. مجبور بودم تمام کلیدها رو سریع تایپ کنم چون اگه از وقتش میگذشت هرچی که تایپ کرده بودم رو می نوشت
2. اینکه باید برای هر دستوری جدا جدا درست کرد که خیلی وقت می بره مخصوصا بعضی از دستورها عدد هم میگیرند که خیلی متنوع میشه
3. وقتی خارج شدم دوباره وارد شدم همه چیز از اول شد

با این حال خیلی باحال بود من با خودم گفتم چرا لغمه رو بچرخونم دور سرم من از اول می خواستم مجبور نباشم برای Esc زدن دستم رو از روی کیبورد بردارم پس چرا برای همه کامندهای vim دوباره map بسازم یک کلام یدونه map درست می کنم برای کلید Esc خلاص اسمش رو هم آسون می ذارم که هروقت وارد کردم خودش بره توی مود کامند برگشتش هم که کاری نداره با همین کلیدهای حروفه مثل i o a خیلی خیلی راحت
من صفحه کلیدم colemak هستش برای من میشه
:imap tnt <esc>برای صفحه کلید qwerty میشه
:imap fjf <esc>
مشکل حل شد به همین راحتی
اگر چه اون چیزی که توی ذهن من بود یه کمی باحالتر بود ولی این کار می کنه فقط با یک خط
باز هم ممنون از راهنمایی باحالتون
ET

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #7 : 06 اردیبهشت 1395، 10:34 ب‌ظ »
فک کنم اینه:
:imap jj <esc>:wq<cr>

یعنی دمت گرم امتحان کردم خیلی خوب بود ولی تا اونچیزی که من می خواستم یک کمی فاصله داشت
1. مجبور بودم تمام کلیدها رو سریع تایپ کنم چون اگه از وقتش میگذشت هرچی که تایپ کرده بودم رو می نوشت
2. اینکه باید برای هر دستوری جدا جدا درست کرد که خیلی وقت می بره مخصوصا بعضی از دستورها عدد هم میگیرند که خیلی متنوع میشه
3. وقتی خارج شدم دوباره وارد شدم همه چیز از اول شد

با این حال خیلی باحال بود من با خودم گفتم چرا لغمه رو بچرخونم دور سرم من از اول می خواستم مجبور نباشم برای Esc زدن دستم رو از روی کیبورد بردارم پس چرا برای همه کامندهای vim دوباره map بسازم یک کلام یدونه map درست می کنم برای کلید Esc خلاص اسمش رو هم آسون می ذارم که هروقت وارد کردم خودش بره توی مود کامند برگشتش هم که کاری نداره با همین کلیدهای حروفه مثل i o a خیلی خیلی راحت
من صفحه کلیدم colemak هستش برای من میشه
:imap tntn <esc>برای صفحه کلید qwerty میشه
:imap fjfjn <esc>
مشکل حل شد به همین راحتی
اگر چه اون چیزی که توی ذهن من بود یه کمی باحالتر بود ولی این کار می کنه فقط با یک خط
باز هم ممنون از راهنمایی باحالتون
ET

آفلاین 藤沼

  • Sr. Member
  • *
  • ارسال: 414
  • جنسیت : پسر
پاسخ : emacs, vi و نسل بعدی
« پاسخ #8 : 06 اردیبهشت 1395، 10:35 ب‌ظ »
کلاً از کلیدهای Alt, Meta, Ctrl استفاده نمی‌کنیم و معمولاً اون‌ها رو اصطلاحاً به کلیدهای دیگه «بازنگاری» (remap) می‌کنیم. بنابراین اگر به‌صورت روزانه کاربر Emacs یا Vim باشید و ۱۰ انگشتی هم تایپ کنید مشکل خاصی پیش نمیاد.

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : emacs, vi و نسل بعدی
« پاسخ #9 : 06 اردیبهشت 1395، 11:35 ب‌ظ »
برای اینکه هربار نخواید دستور ‏imap‏ رو وارد کنید اون رو تو فایل ‏‎~/.vimrc‏ قرار بدید.درضمن آقا گرگه درست میگن!
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #10 : 07 اردیبهشت 1395، 07:59 ق‌ظ »
کلاً از کلیدهای Alt, Meta, Ctrl استفاده نمی‌کنیم و معمولاً اون‌ها رو اصطلاحاً به کلیدهای دیگه «بازنگاری» (remap) می‌کنیم. بنابراین اگر به‌صورت روزانه کاربر Emacs یا Vim باشید و ۱۰ انگشتی هم تایپ کنید مشکل خاصی پیش نمیاد.
والا این بحثی که شما مطرح کردی از سطح سواد من خیلی بالاتر بود من اصلا متوجه نشدم
اینقدر شجاعت دارم که بگم بلد نیستم
اگر بخوان کلید ها رو بازنگاری کنن - ممنون از لغت قشنگی که یاد دادید - چرا از اول نکردند
پس اینها چیه در مورد ‌emacs بالاخره یه چیزی بوده که جکش رو ساختن


ET

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #11 : 07 اردیبهشت 1395، 08:01 ق‌ظ »
برای اینکه هربار نخواید دستور ‏imap‏ رو وارد کنید اون رو تو فایل ‏‎~/.vimrc‏ قرار بدید.درضمن آقا گرگه درست میگن!
این کار رو هم کردم کار هم کرد خیلی هم ممنون
ET

آفلاین 藤沼

  • Sr. Member
  • *
  • ارسال: 414
  • جنسیت : پسر
پاسخ : emacs, vi و نسل بعدی
« پاسخ #12 : 07 اردیبهشت 1395، 12:32 ب‌ظ »
همیشه در یک جامعه اون‌ میم‌ها هستن و صرفاً برای شوخی‌ان. دربارهٔ Emacs چون من زیاد استفاده نمی‌کنم برداشتی ندارم ولی در Vim کمتر از اون سه کلید استفاده می‌شه و بیشتر تمرکز بر روی کلیدهای خانه و جمع کلیدهای دیگه‌ست. کلاً در این نوع نرم‌افزارها هدف نهایتاً سفارشی‌ کردنه بنابراین نویسنده نمیاد به‌صورت پیش‌فرض اینجور کارها رو برای کاربران مشخص کنه. ولی در پیرامون اون‌ها معمولاً توزیع‌هایی ساخته می‌شن که مقصودشون از پیش تنظیم‌شده یا سفارشی‌شده‌ست. برای مثال؛ spacemacs, spf13-vim و … ضمناً یک مطلبی در HackerNews دربارهٔ انگشت کوچک در Emacs هست که می‌تونید یک نگاهی به اون بندازید:
https://news.ycombinator.com/item?id=2610467
« آخرین ویرایش: 26 اردیبهشت 1395، 08:05 ق‌ظ توسط b|ackwolf »

آفلاین ابراهیم مشهدی تفرشی

  • Sr. Member
  • *
  • ارسال: 336
  • جنسیت : پسر
  • همیشه یک راه بهتر هست.
پاسخ : emacs, vi و نسل بعدی
« پاسخ #13 : 08 اردیبهشت 1395، 09:44 ق‌ظ »
همیشه در یک جامعه اون‌ میم‌ها وجود دارن و صرفاً برای شوخی‌ان. در مورد Emacs چون من زیاد استفاده نمی‌کنم برداشتی ندارم ولی در Vim کمتر از اون سه کلید استفاده می‌شه و بیشتر تمرکز بر روی کلیدهای خانه و جمع کلیدهای دیگه‌ست. کلاً در این نوع نرم‌افزارها هدف نهایتاً سفارشی‌ کردنه بنابراین نویسنده نمیاد به‌صورت پیش‌فرض اینجور کارها رو برای کاربران مشخص کنه. ولی در پیرامون اون‌ها معمولاً توزیع‌هایی ساخته می‌شن که مقصودشون از پیش تنظیم‌شده یا سفارشی‌شده‌ست. برای مثال؛ spacemacs, spf13-vim و … ضمناً یک مطلبی در HackerNews دربارهٔ انگشت کوچک در Emacs هست که می‌تونید یک نگاهی به اون بندازید:
https://news.ycombinator.com/item?id=2610467
ببخشید یه کم دیر جوابتون رو می نویسم
از این اطلاعات خیلی جالبی که دادید خیلی ممنون

خوب من هم مدعی نیستم که من اولین کسی هستم که این فکر به ذهنم رسید هر کسی وقتی اولین بار آموزش emacs رو می بینه و اون رو با vim مقایسه می کنه می فهمه که ‌emacs یه نقطه ضعفی داره منظورم از نقطه ضعفی همون RSI هستش که توی مقاله هم اشاره شده بود برای من خیلی مهم هست که اگر یه چیزی رو یاد می گیرم بعد از چند سال یه کاربر اون چیز شدم نباید به خاطر استفاده زیاد ازش دچار مشکل جسمی بشم - حتی وقتی که داشتم تایپ ده انگشتی انگیلیسی یاد می گرفتم دیدم Colemak بهتره رفتم اون رو یاد گرفتم -
https://fa.wikipedia.org/wiki/%D8%A2%D8%B3%DB%8C%D8%A8_%D9%81%D8%B4%D8%A7%D8%B1_%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C
یکی از محاسن این که توزیع اصلی رو اصلاح کنن اینکه هر کسی پشت هر سیستمی می شینه می دونه که اگر فلان دکمه رو بزنه فلان دستور اجرا می شه دیگه مجبور نیست بگه مثلا من با فلان map عادت کردم map این emacs چیه پس دوباره بازنشانی کنه و نفر بعدی بیاد دوباره بازنشانی کنه منظورم این که یه استانداردی باشه الآن توی vim همه می دونن Esc برای رفتن به کامتد موده i برای انسرت مود حالا چه توی رایانه شخصی چه رو موبایل چه روی هر رایانه دیگه

ولی این ادعا رو دارم که راه حلی که من ارائه کردم از فقط بازنگاری بهتره
چیزی که من میگم مثل علامت : که توی مود کامند vim وارد می کنی بعد می تونی توی خط فرمانش تایپ کنی
در مرحله بعد حتی می شه این کلمه جادویی رو صوتی کرد مثل اندرویید که از با کلمه OK GOOGLE می تونی هر می تونی هرجایی که باشی برنامه جستجو رو باز کنی در حالی که برای بازنشانی به این راحتی نیست حتی من به یک سیستم عاملی فکر می کنم که از این سیستم استفاده کنه که بیشتر بدرد افراد نابینا می خوره

همینطور که می بینید این ایده ای که من دادم در واقع ترکیبی از خیلی ایده های دیگه هست که در طول زندگی باهاشون برخورد کردم

باز هم ممنونم که وقت گذاشتید
خداحافظ
« آخرین ویرایش: 08 اردیبهشت 1395، 09:50 ق‌ظ توسط ابراهیم مشهدی تفرشی »
ET

آفلاین HSN6

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • یک راَکتیست اسپرانتیست پایتونیست گودوئیست!
    • بلاگ شخصی
پاسخ : emacs, vi و نسل بعدی
« پاسخ #14 : 08 اردیبهشت 1395، 11:19 ق‌ظ »
انگشت ششم نداریم ولی خدا بهمون دوتا پا داده! می‌شه Ctrl و Meta رو به صورت پدال درست کرد!!
می‌مونه هماهنگی پا و دست که با تمرین درست می‌شه.