آموزش سریع Vim
پیشنوشت: این نوشته یک متن آموزشی سریع در مورد ابزار یا مفهومی خاص هست. چیزهایی که در پایین میخوانید عصاره اصلی چیزی هست که باید سریعا یاد بگیرید برای استفاده از این ابزار یا مفهوم. این سری نوشتهها رو با نام WTF Course منتشر میکنم.
Vi یک ویرایشگر متن است که توسط بیل جوی در سال ۱۹۷۶ برای سیستم عامل Unix ساختهشده است. نام Vi از دو حرف اول کلمه Visual گرفته شده است. علت نامگذاری Visual از آنجا میآید که در آن زمان Vi نسبت Ex که یک ویرایشگر خطی بود امکان ویرایش کل سند با امکانات کموبیش Visual میداد. خود Ex نسخه توسعهیافتهتر Ed بود که در سال ۱۹۷۱ توسط کن تامپسون نوشته شده بود.
Vim (یا Vi Improved به معنی Vi بهبودیافته) یک ویرایشگر متن است که بر مبنای Vi توسط برام مولینار در سال ۱۹۸۸ (بیش از ۳۰ سال پیش) ساختهشده است.
Vim تمامی امکانات Vi رو داراست ولی بهبودهایی از لحاظ عملکرد و توسعهپذیری داشته است. همچنین Vim بیشتر از Vi به سیستمعاملهای دیگر پورت شدهاست.
Vim تقریبا روی هر سیستم شبهیونیکسی (مثل لینوکس و BSD) بصورت پیشفرض نصب شده. آخرین نسخهی اون در زمان نوشتن این پست ۸.۱ هست.
علت اول محبوبیت Vim این است که نیاز نیست حین کار با آن دست از کیبرد بردارید. همهچیز حتی پیچیدهترین تغییرات بر روی متن (یا کد) را میتوان با کلیدها و رشتههای میانبر انجام داد. هرچند اگر برای یادگیری این میانبرها مقداری وقت صرف نکنید همین مسئله تبدیل میشود به معایب Vim.
علت دوم این است که Vim تحت خط فرمان اجرا میشود. وقتی با SSH به سروری در آلمان وصل میشوید هیچ محیط گرافیکی برای اجرای ادیتورهای امروزی مثل Sublime یا Atom و غیره وجود ندارد. Vim تقریبا تنها راهکار شما برای ویرایش کد بصورت راهدور هست.
علت سوم اینکه Vim به شدت توسعهپذیر هست. برای هرکاری یک افزونه برای آن وجود دارد. اگر کمی وقت صرفش کنید میتوانید بیشتر از PHPStorm از Vim کار بکشید.
علت چهارم این است که گردنمان کلف است و حال میکنیم که کسی از ابزار کارمان سردر نمیآورد وگرنه گزینههای منطقیتری مثل Micro وجود دارد که تحت همان خط فرمان از ماوس پشتیبانی میکند.
اطلاعات اضافی:
(برای کسانی که به فلسفه پشت هر ابزار هم علاقهمند هستند.)
– Vim اولین نرمافزاری است که با لایسنس خیریهافزار منتشر شده. خیریهافزار به مجوزی گفته میشود که از شما میخواهد در ازای استفاده از این مجوز به خیریه مدنظر سازنده محصول کمک کنید.
– Vim سرور و سالار و پیروز همیشگی جنگ ویرایشگرهاست.
شروع:
ویرایشگر Vim از سه Mode یا حالت Insert، Command و Visual تشکیل شده. هر حالت تعیین میکند که با فشردن دکمههای (حروف) کیبرد چه عملی انجام شود. حالت Insert برای تایپ و حالت Visual برای کارهایی مثل انتخاب کاراکترها/متنها و حالت Command برای ذخیره سند یا جستجو در متن سند استفاده میشود.
برای انتقال از Command Mode به Insert Mode (که بتوانید تایپ بکنید) میتوانید از کلیدهای a یا i (هم بزرگ هم کوچک) استفاده کنید. تفاوتشان به ظاهرشدن نشانگر در بخشهای متفاوت متن هست که در این نوشته برای مخاطب مهم نیست.
برای انتقال از Insert Mode و Visual Mode به Command Mode کلید Esc کافیست.
برای حرکت در Command Mode میتوانید از کلیدهای جهت استفاده کنید. در صورتی که به گذشته سفر کردهاید و کیبردتان کلیدهای جهت ندارد و یا میخواهید خفن دیده شوید کلیدهای HJKL بهترتیب از چپ بعنوان چپ، پایین، بالا، راست برای جایگزین استفاده کنید.
برای نمایش فایلهای شاخهی فعلی از دستور :Ex استفاده کنید.
برای برگشت به عقب (همان Ctrl+Z خودمان) از کلید u در حالت Command Mode استفاده کنید. برای تکرار مجدد/برگشت به جلو یا همان ReDo از میانبر Ctrl+ای استفاده کنید.
برای نمایش شماره سطرها دستور set number رو بعد از کاراکتر : تایپ کنید.
برای جستجو در کل در حالت Command ابتدا / سپس متن مورد نظر رو بنویسید و سپس Enter رو بزنید. برای وارد شدن به حالت ویرایش کلید i رو بزنید. برای انتقال نشانگر به گزینهی بعدی پیداشده کلید n رو فشار بدید. برای برگشت Shift+n.
در صورتی که میخواهید از جایی که نشانگر قرار دارد به بعد را جستجو کنید به جای / کاراکتر ? بگذارید.
برای Replace یا جایگذاری text1 با text2 از دستور s/text1/text2/gc% استفاده کنید. g به معنی تمامی نتایج ممکن و c به معنای ابتدا تایید بگیر سپس تعویض کن. در صورتی که c رو ننویسید بدون تایید تمامی گزینههای پیدا شده را تعویض میکند.
برای کپیکردن مقداری که در Visual Mode انتخاب کردهاید از y، برای کپیکردن کل خط از yy، برای کپیکردن کلمه از yw و برای Paste کردن از p یا P استفاده کنید.
برای Cutکردن هم به ترتیب d و dd و dw رو استفاده کنید.
برای تکرار دستور قبلی از کلید . استفاده کنید.
برای ذخیرهکردن فایل برای اولین بار از w filename: استفاده میکنیم که filename نام فایل ما است. دفعات بعد برای ذخیره کردن از w: استفاده میکنیم.
برای خروج از q: استفاده میکنیم، اگر که فایل خود را ذخیره نکرده باشیم Vim به ما اخطاری به مضمون “no write since last change” میدهد که از ما میخواهد فایل خود را ذخیره کنیم. ولی اگر نمیخواهید که این پیغام را به شما بدهد و قصد ندارید تا تغییراتی که در فایل دادهاید اعمال شود، از !q: استفاده کنید. تلفیق این دو برای ذخیره و خروج دستور پرکاربرد qw: هست.
دستوران فوق در ۹۰٪ مواقع کارتان را راه میاندازد. ولی در صورتی که میخواهید بیشتر یاد بگیرید منبع نوشته بدردتان میخورد.
بیشتر:
– پلاگین PHP برای Vim
– سند راهنمای دانشگاه میسیسیپی جنوبی
– اگه هوس کردید بدونید Ed چه شکلی بود که Vi ویرایشگر Visual محسوب میشده اینجا رو ببینید.
شنبه، ۱۸ جولای ۲۰۲۰
من یک درونگرایم، ولی تو باور نکن
از همان اوایل که فرق گوز و شقیقه را تشخیص دادم فکر میکردم شخصیت درونگرایی دارم. از ارتباط با آدمها فراری بودم و بسیاری از تفریحاتی که اطرافیانم میکردند برای من مضحک بنظر میآمد. طبیعیست، چون من درونگرا بودم. نه؟ نه. من درونگرا هم نبودم. نه آنموقع نه حالا هیچ یک از مشخصاتی که به درونگراها نسبت داده میشود در من وجود ندارد. درواقع در بیشتر تستهایی که این اواخر انجام دادهام هم برونگرا بودهام تا درونگرا.
علت تشخیص این پارادوکس بین حقیقت و باوری که داشتم هم برمیگردد به آنکه چند وقتیست ترجیح میدم یک کامیون از رویم رد بشود ولی چند صفحه کتاب نخوانم. درواقع غیر از دوسال سربازی که چارهای غیرآن نداشتم، در هیچ برههای از زندگیام کتابخوان نبودهام. کیندلم مدتهاست که فقط محل آرشیو چیزهاییست که میخواهم بخوانم. ولی کافیست دکمهاش را فشار دهم. مدتی به صفحه کتاب خیره میشوم و ذهنم هرجایی میرود جز آنچه در آنجا نوشتهشده.
اینجا کمی فرافکنی بدرد میخورد تا گره پارادوکس باز شود. واقعیت این است که من خیلی هم برونگرا بودم و هستم. فقط محیطی که درآن بزرگ شدم و تلاش خانوادهام برای جلوگیری از شبیهشدن من به ساکنین آن محیط، با تلقینهایی که به نحوهی تفکرم میکردند باعث شد خودم را تافتهای جدا بافته ببینم. این طرز تفکر تا همین امروز با من مانده.
شاید بپرسید حالا که میدانی طرز تفکرت از کجا نشات میگیرد پس میتوانی تغییرش بدهی. ولی واقعیت این است که من از پرسشگر همین سوال هم احساس متفاوتبودن میکنم. اصلا جایی برای پرسش نیست؛ این طرز تفکر جایی در زیرزمین مغزم پنهان شده و دسترسی به آن هم صرفا از نوع Read-Onlyست. نثر شد.
این حس تفاوت در بزرگسالی هم مرا رها نکرد و دردناکتر آنکه هیچوفت نتوانستم تشخیص دهم مشکل من هستم یا اطرافیانم. گزارهی بچهگانهای بنظر میآید. همه بدند و من خوبم. ولی جاهای زیادی در دنیا وجود دارند که این گزاره به شدت در آنجا صحیح هست. اگر شما در بند متادون یک زندان احساس متفاوتبودن داشته باشید کاملا حق با شماست. اما مهم این است آنکه نباید تفاوت یا شباهت شما با محیط به دغدغه اولتان بدل شود و مانع زندگی عادی و اجتماعیتان.
من دو بار در زندگیام توانستم کنترل لحظاتم و کارهایم و افکارم و رفتارم و هرچیز دیگری را بطور صدرصدی بدست بیاروم. یکی قبل از سربازی و یکی قبل از مهاجرت و هر دو با بزرگترین اتفاقاتی میتوانست برای یک شخص بیافتد نابود شدند. حسرت آن روزها و آن اراده و قدرت اختیار هر روز و هر شب درونم دستوپا میزند. آن موقعها همهچیز بیشتر حس داشت. مثلا Vazgectim از Taksim Trio درون سلولهایم میزد نه بیرون گوشهایم.
شنبه، ۲۰ ژوئن ۲۰۲۰
۱۶ می ۲۰۲۰، زرخشت (۳)، جانکندن به از دلکندن
دیروز بهخاطر ندانستن اینکه پتوهای اضافه کجاست (بعلاوه گشادی) تا صبح یخ زدم. صبح مجددا با صبحانه و سکوت لذتبخش سپری شد و رسیدیم به صحبتهای کاری که البته به نتیجه مطلوبی نرسید.
همچنین افتخار این رو داشتم که نان درستکردن (بطور دقیقتر خمیر درستکردن) علی رو هم ببینم. هرچند پختنش ماند برای شب. آن هم در تنور دستسازی خود علی ساخته بود. خوشبختانه پروسه آردکردن گندم قبلا توسط دستگاههای زیربط انجام شده بود.
علی در حیاط زرخشت مشغول رسیدگی به گلوگیاهان بود که ازم خواست برای جلوگیری از جمعشدن مورچهها و دیگر حشرات به داخل کندوها شانههای خالی عسل رو از داخل کندوها خالی کنم. در همون حین کشف کردم لهکردن شانهها و بریدنشان به شدت حس ASMR دارند. اگه اهلش هستید توصیه میکنم این اپیزود رو هم تجربه کنید.
زحمت میرزاقاسمی برای ناهار و شام کوکوی سیبزمینی را باز مادر بامحبت علی کشید و هرچه از مزهاش بگویم کم گفتهام. امروز هم بعد از صبحانه با نانی که علی سخاوتی دیشب درست کرده بود بساطم رو جمع کردم و آماده برگشت شدم. علاقهای به دلکندن از زرخشت نداشتم ولی نمیخواستم بیشتر از این اسباب زحمتشان بشوم.
بعد از لطف مجددش که من رو تا جاده رسوند با اولین اتوبوس راهی قزوین شدم تا از اونجا بدون تحمل دردسرهای قبلی مستقیم برگردم تبریز. چندساعتی نگذشته بود حس پشیمانی تمام وجودم رو گرفت. جدایی از زرخشت به هیچوجه کار راحتی نیست.
جمعه، ۲۲ می ۲۰۲۰
۱۵ می ۲۰۲۰، زرخشت (۲)، کشاورزی، باغداری و هرآنچه که او میکند
زرخشت به شدت جای قشنگیست. نه مثل ویلاهای امروزی خشک و بیهدف و بیروح هست نه مثل خانههای قدیمی روستایی فرسوده و مخل راحتی. لای هر خشتش میشود ایدهای برای خاص بودنش (همان زر) پیدا کرد. از معماری اکثرن چوبیاش گرفته تا محیط دایرهای با حس مجازی تمامنشدنیاش.
دیروز بعد از صبحانه با علی به زمین کشاورزیاش رفتیم. گندمزاری بسیار زیبا از گندمهای خراسان در یکی از خوش آبوهواترین جاهای این کشور. نیم ساعتی پیادهروی کردیم و من از هرچه که دوربرم میدیدم خرکیف شدم. مدتی هم از بلاهای مشابهی که به سرمان آمده صحبت کردیم و حداقل من از نجات یافتنم ابراز خوشنودی کردم. موقع برگشت هم کمی چوب خشک جمع کردیم برای آتشی که قصد روشنکردنش رو داشتیم.
بعد از برگشت و کمی استراحت (که تبدیل شد به خواب) با صدای علفچینی حیاط زرخشت بیدار شدم. به هیچوجه نمیخواستم این چند روز را با لشکردن بگذرانم و مشتاق بودم در هرچه که میتوانم کمک کنم. علی احتمالا حدس زد کاری بیش از آبیاری درختان از دستم برنمیآید و من رو به سمت شلنگ درازی راهنمایی کرد. هرچند چندتا نعنا هم کندم و مجددا کاشتم که روز بعد تقریبا نصفش از بین رفتند. حق داشت.
عصر را با آتشی که در باربیکیوی دستساز علی روشن کردیم و صحبتها و خاطرههایی از اینور و آنور سپری کردیم. چندتا بادمجان هم کباب کردیم برای میرزاقاسمی فردا. شام کوکوی گندم اختصاصی علی بود که هرچه از طعم قشنگش بگم کم گفتم. جایی گیرش انداختید حتما بخواهید برایتان درست کند.
مرتبط: ۱۶ می ۲۰۲۰، زرخشت (۳)، جانکندن به از دلکندنیکشنبه، ۱۷ می ۲۰۲۰
۱۴ می ۲۰۲۰، زرخشت (۱)، دیدار با علی سخاوتی
چند هفتهی قبل به علی سخاوتی گفته بودم که بسیار علاقهمندم زرخشت رو ببینم. بدنبال سفری که خودش به زرخشت داشت خواهشم رو قبول کرد و دعوتم کرد. به ظاهر مسافرت سادهای میاومد ولی غافل از اینکه قرار است دهنم در طول این سفر بطور کامل سرویس شود.
اشتباه محاسباتی باعث شد بجای سفر به قزوین و بعد سفر به رشت و پیادهشدن در بین راه، مستقیما برای رشت بلیط بگیرم بدون اینکه اطلاع داشته باشم اتوبوسهای رشت از مسیر اردبیل-گردنه حیران-آستارا-انزلی وارد رشت میشوند و نهتنها من از آن «بین راه» رد نمیشوم بلکه مسیر ۶ ساعته را در ۱۲ ساعت طی خواهم کرد. به این مسئله اضافه کنید توقفهای بیشمار اتوبوس مذکور برای تحویل بار (!) و خرابی موتور و پنجرشدن یکی از چرخهایش.
جدا از آن بعد از رسیدن به شمال رشت، ساعت ۴ بامداد اول سوار تاکسی شدم و رسیدم به جنوب شهر و از آنجا سواری مادرمردهای من رو با هزینه نسبتا زیادی به روستای اشتباهی برد و دوباره برگرداند به جایی مابین زرخشت و رشت. ناامید از پیداکردن آژانس یا تاکسی اینترنتی ناچار شدم ساعت ۵ صبح با خود علی تماس بگیرم و لطفکند و دنبالم بیاید.
بهرترتیب هماکنون در زرخشت، طبقه زیرشیروانی مستقر شدم و بعد از استراحت کوتاهی با همراهی صدای خروسها و گوسفندها و پرندهها و هرچیزی که هماکنون از زیرشیروانی صدایش میآید، ادونچر زرخشت و اطرافش رو شروع خواهم کرد.
مرتبط:۱۵ می ۲۰۲۰، زرخشت (۲)، کشاورزی، باغداری و هرآنچه که او میکند
پنجشنبه، ۱۴ می ۲۰۲۰
کارهای مهمی که باید بعد از نصب Ubuntu 20.04 انجام دهید
من مدتهاست با اوبونتو مشکل دارم ولی بعد از تجربه توزیعهای زیاد دیگهای متاسفانه کماکان انتخاب اول هست اگه حوصله درگیر شدن با هزارویک مشکل توزیعهای دیگه رو ندارید. از کارنکردن کلیدهای میانبر وقتی زبان کیبردتون چیزی جز انگلیسی هست روی Deepin بگیرید تا کرنل عقبموندهی Mint و آشغالهای دیگه. میشه از ریمکسها هم استفاده کرد ولی تجربه نشون داده نمیشه زیاد روی این توزیعهای کامیونیتی محور اعتماد کرد. بهرترتیب راهکار فعلی اوبونتو هست و تلاش برای شخصیسازیش در حدی که قابل تحمل بشه.
از ویژگیهای کلیدی این نسخه میشه به موارد زیر اشاره کرد:
- کرنل نهچندان هیجانانگیز ۵.۴ (ایشالا نسخه ۵.۶ دستهجمعی هیجانزده میشیم)
- گنوم بدردنخور و آشغال ۳.۳۶ که البته مقدار زیادی سریعتر و کاربردیتر شده ولی چیزی از آشغالبودنش کم نمیشه.
- پشتیبانی از بزرگنمایی درصدی (قبلا فقط یا ۱۰۰ بود یا ۲۰۰، الان میشه مثلا ۱۲۵٪ محتویات صفحه رو بزرگتر کرد)
- سرعت بوت سریعتر بهمراه نمایش لوگوی سازندهی لپتاپ (مثل ویندوز)
- صفحه ورود یکم تمیزتر و بهتر
- حالت تیره منعطفتر و بهتر
- حالت GameMode برای افزایش پرفورمنس هنگام اجرای بازیهایی مثل GTA5 و دیگران. (Just Kidding)
۰) بروزرسانی پکیجها به آخرین نسخه ارائهشده
این کار رو روزی یکبار انجام بدید. ضرر نمیکنید.
sudo apt update && sudo apt upgrade
۱) نصب ابزارهای اضافی محدودشده برای پخش پیشفرض محتوای غیرمتنباز (mp3 و دوستان)
هرچند میتونید با نصب VLC کلا بینیاز بشید از این مسئله ولی خب بعضیوقتا بدرد میخوره بودنش.
sudo apt install ubuntu-restricted-extras
۲) نصب رابط بین سرویس افزونههای گنوم و میزکار شما و جستجو و نصب افزونههای ایدهآل از اینجا
۳) نصب Dash to Panel
شاید بعضیها با این داک فعلی اوبونتو راحت هستند ولی برای من به شدت آزاردهنده و مخل ورکفلوم هست. حالت کلاسیک (اصطلاحا ویندوزی) که بهش «پنل» گفته میشه رو ترجیح میدم. اگه شماهم مثل من هستید این افزونه گنوم مال شماست و بسیار کارتون رو راحت میکنه.
۴) جایگزینی Desktop Icons با Desktop Folders
هیچ ایدهای ندارم چی تو مغز نداشتهی توسعهدهندههای گنوم گذشت که سرخود زدن دسکتاپ رو حذف کردند ولی بهرترتیب اگه اشتباه نکنم از نسخه ۱۹ به بعد دیگه دسکتاپی روی دیفالت گنوم وجود نداره. اوبونتو با افزونهای که احتمالا خودشون نوشتند این امکان رو اضافه کرد مجددا ولی از اونجایی که خارج از ساختار فایل منیجر هست بسیاری از چیزهای ساده رو نداره. برای مثال امکان کلیک و درگ فایلهای روی دسکتاپ روی اپ دیگهای نیست. راهکار قطعی که نه ولی تا حدودی مسکن حذف Desktop Icons و نصب Desktop Folders هست که تا حدودی مشکلات رو برطرف کرده.
sudo apt install desktop-folders
۵) نصب نرمافزارهای کاربردی از SnapStore
و اما نصب اپهای کاربردی. در این مورد میتونید مطمئن باشید که راحتترین شیوه ممکن بین تمامی سیستمعاملها رو دارید. برید توی SnapStore و داخل کتگوریهای مختلفش بگردید و هرچیزی که لازمتون هست رو با یه کلیک نصب کنید. اگه اپهای موردنظرتون رو پیدا نکردید مخازن Flatpak هم درست مثل SnapStore دنیایی از اپها رو در دسترستون قرار میده. بعضی از اپهای ضروری و مشهور:
– Spotify (هروئین موسیقی)
– Skype (معروفترین ابزار تماس تصویری با رابط کاربری بروزشده)
– Telegram (معرف حضور هست حتما)
– VLC (پخشکننده تقریبا هرنوع مدیایی)
– Mailspring (کلاینت ایمیل)
– Audacity (ابزار کاملی برای ساخت پادکست)
– Gimp (آلترناتیو فتوشاپ برای ویرایش تصویر)
– Calibre (مدیریت کتابها)
– Kazam (راحتترین ابزار Screen Recorder برای ضبط ویدئوهای آموزشی)
– Kdenlive (ویرایشگر ویدئو)
– SublimeText (ویرایشگر قدرتمند کد)
– تمامی نرمافزارهای JetBrains اگه برنامهنویس هستید.
۶) نصب کیبرد فارسی در بخش Region and Language و تغییر کلید میابنر تغییر زبان به حالت دلخواه
چقد پست عصبانی و خستهای شد. بعدا یه دستی به سر و روش میکشم.
سهشنبه، ۱۲ می ۲۰۲۰