#داستان_های_FOSS
دستهبندی: #داستان #آموزشی
پارت 3.1 :
راجب آشناییم با (نئو)ویم (پارت 3: بازنویسی کانفیگم و فیچر های جدید نئوویم)
موقع نوشتن این متن استفاده کردن یا نکردن از پلاگین فرق خاصی روی سرعت ایجاد نمیکنه و پلاگین های جدید امکانات زیادی دارن، تنها دلیلی که هنوز سراغ پلاگین ها نرفتم این هست که
1- کانفیگ کردن نئوویم بدون پلاگین نسبتا متفاوته
2- حتی بدون پلاگین هم میشه امکانات زیادی در حد debugger و completion و ظاهر بهتر statusline و... رو به نئوویم اضافه کرد):
خب تو پارت قبل (2) به اونجایی رسیدیم که کانفیگم رو فرستادم گیت هاب و شروع کردم به بازنویسی کانفیگ نئوویم اما بدون پلاگین، اول فقط در حد ست کردن line number و tabstop و save cursor position بود، بعد کم کم شروع کردم به اضافه کردن فیچر هایی مثل تغییر رنگ استیتوس بار موقع سوییچ بین نرمال مد و اینزرت مد و آشنایی با x mode
بعد از اون هم شروع کردم به تغییر یه سری highlight ها و تحقیق راجب نحوه کانفیگ statusline
که در نتیجه یکم کانفیگش کردم و یه سری از مد ها رو داخل استیتوس لاین نمایش میداد.
تقریبا همین موقع ها init.lua و builtin lsp اومده بودن، اما بخاطر عدم آشنایی کافی با نحوه کانفیگ نئوویم با لوا و نبود داکیومنت های زیاد راجبش و تازه بودن builtin lsp
سراغشون نرفتم، جدای از اون مهم ترین بخش کانفیگم که استیتوس لاین بود چون کل مد ها (مخصوصا term) رو نمایش نمیداد، اگه به اون مد ها سوییچ میکردم کلا ارور میداد و میرفت استیتوس بار دیفالت، و دیگه حال و حوصله درست کردن و کامل کردن امکانات استیتوس بار
رو نداشتم.
کلا کانفیگ نصفه رو گذاشتم کنار، بعد یه مدت که یوتیوبر ها شروع کردن به بازنویسی کانفیگشون به لوا، با دیدن کانفیگ های نمونه یکم از کانفیگ با لوا سر در آوردم و بعد از چند وقت یه کانفیگ نئوویم از صفر با init.lua ردیف کردم، البته خیلی ساده و در حد چند تا set و keybind بود، به همون قانع شدم چون برام کافی بود و دیگه ادامش ندادم.
اول تابستون یه گندی زدم و بعدش توفیق اجباری شد و سوییچ کردم به آرچ، کانفیگ قبلیم رو برگردوندم و برای این که یکم فعالیت علمیم رو بیشتر کنم شروع کردم به کانفیگ دوباره ابزار ها و همینطور گفتن نکاتی که هر روز بدست میارم داخل لینچت
آخرین تغییری که تا موقع نوشتن این متن داخل کانفیگم ایجاد شده بود اضافه کردن دوباره restore-cursor اما این بار داخل init.lua بود که یه نکته هم راجبش نوشتم، اما به 5 روز نکشید که پدرم از دنیا رفت
از خونه خارج شدیم تا حال و هوامون عوض بشه و خب دیگه نرسیدم کانفیگ کنم، اما برای این که بتونم توی لحظه زندگی کنم بعد از چند روز شروع کردم به خوندن مقاله های مختلف و...
فهمیدم امکانات عجیب و زیاد دیگه ای رو نئوویم بدون پلاگین داره که ازش خبر نداشتم، مثل دیباگر که از gdb استفاده میکنه، ctags که برای go to definition و... مناسبه، کامند make که برای کامپایل و سوییچ بین ارور های موقع کامپایل از داخل (نئو)ویم مناسبه و...
همینطور بیشتر راجب کانفیگ استیتوس بار با لوا تحقیق کردم
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #داستان #آموزشی
پارت 3.1 :
راجب آشناییم با (نئو)ویم (پارت 3: بازنویسی کانفیگم و فیچر های جدید نئوویم)
موقع نوشتن این متن استفاده کردن یا نکردن از پلاگین فرق خاصی روی سرعت ایجاد نمیکنه و پلاگین های جدید امکانات زیادی دارن، تنها دلیلی که هنوز سراغ پلاگین ها نرفتم این هست که
1- کانفیگ کردن نئوویم بدون پلاگین نسبتا متفاوته
2- حتی بدون پلاگین هم میشه امکانات زیادی در حد debugger و completion و ظاهر بهتر statusline و... رو به نئوویم اضافه کرد):
خب تو پارت قبل (2) به اونجایی رسیدیم که کانفیگم رو فرستادم گیت هاب و شروع کردم به بازنویسی کانفیگ نئوویم اما بدون پلاگین، اول فقط در حد ست کردن line number و tabstop و save cursor position بود، بعد کم کم شروع کردم به اضافه کردن فیچر هایی مثل تغییر رنگ استیتوس بار موقع سوییچ بین نرمال مد و اینزرت مد و آشنایی با x mode
(داخل اینزرت مد ctrl x رو بزنید میبینیدش)،
بعد از اون هم شروع کردم به تغییر یه سری highlight ها و تحقیق راجب نحوه کانفیگ statusline
(چند تا مقاله راجبش خوندم)
که در نتیجه یکم کانفیگش کردم و یه سری از مد ها رو داخل استیتوس لاین نمایش میداد.
تقریبا همین موقع ها init.lua و builtin lsp اومده بودن، اما بخاطر عدم آشنایی کافی با نحوه کانفیگ نئوویم با لوا و نبود داکیومنت های زیاد راجبش و تازه بودن builtin lsp
(البته که هنوزم سراغ lsp نرفتم)
سراغشون نرفتم، جدای از اون مهم ترین بخش کانفیگم که استیتوس لاین بود چون کل مد ها (مخصوصا term) رو نمایش نمیداد، اگه به اون مد ها سوییچ میکردم کلا ارور میداد و میرفت استیتوس بار دیفالت، و دیگه حال و حوصله درست کردن و کامل کردن امکانات استیتوس بار
(صرفا mode و path و file type رو نمایش میداد)
رو نداشتم.
کلا کانفیگ نصفه رو گذاشتم کنار، بعد یه مدت که یوتیوبر ها شروع کردن به بازنویسی کانفیگشون به لوا، با دیدن کانفیگ های نمونه یکم از کانفیگ با لوا سر در آوردم و بعد از چند وقت یه کانفیگ نئوویم از صفر با init.lua ردیف کردم، البته خیلی ساده و در حد چند تا set و keybind بود، به همون قانع شدم چون برام کافی بود و دیگه ادامش ندادم.
اول تابستون یه گندی زدم و بعدش توفیق اجباری شد و سوییچ کردم به آرچ، کانفیگ قبلیم رو برگردوندم و برای این که یکم فعالیت علمیم رو بیشتر کنم شروع کردم به کانفیگ دوباره ابزار ها و همینطور گفتن نکاتی که هر روز بدست میارم داخل لینچت
(که #روزی_یک_نکته با دلاتو ایجاد شدن)،
آخرین تغییری که تا موقع نوشتن این متن داخل کانفیگم ایجاد شده بود اضافه کردن دوباره restore-cursor اما این بار داخل init.lua بود که یه نکته هم راجبش نوشتم، اما به 5 روز نکشید که پدرم از دنیا رفت
(تقریبا همین موقع ها، دقیق یادم نیست اما یکی 2 روز قبل یا بعد این ماجرا linux dabbler ویدئویی با اسم pluginless neovim رو داخل یوتیوب قرار داد)،
از خونه خارج شدیم تا حال و هوامون عوض بشه و خب دیگه نرسیدم کانفیگ کنم، اما برای این که بتونم توی لحظه زندگی کنم بعد از چند روز شروع کردم به خوندن مقاله های مختلف و...
فهمیدم امکانات عجیب و زیاد دیگه ای رو نئوویم بدون پلاگین داره که ازش خبر نداشتم، مثل دیباگر که از gdb استفاده میکنه، ctags که برای go to definition و... مناسبه، کامند make که برای کامپایل و سوییچ بین ارور های موقع کامپایل از داخل (نئو)ویم مناسبه و...
(2 مورد آخر رو از ویدئو How to Do 90% of What Plugins Do (With Just Vim) متوجه شدم)،
همینطور بیشتر راجب کانفیگ استیتوس بار با لوا تحقیق کردم
(دقیق تر بگم اون ویدئو linux dabbler بیشتر توضیح رو داد)
🔅@LinFAQ
🔅@LinAcademy
❤1
LinFAQ
پارت 3.1 :
ادامه پارت قبل
پارت 3.2 :
اما خب هنوز پشت سیستم نرفتم که تستشون کنم تا بتونم نکته ای راجبشون بگم، رسیدیم زمان نوشتن این متن.
این که کسی به ویم سوییچ کنه یا نه، با پلاگین یا بدون پلاگین کانفیگش کنه و... انتخاب خودشه، اینطوری نیست که بتونم بگم "باید همه از ویم یا ایمکس یا... استفاده کنن"، بنظرم هم این که برای یکی دلیل بیارم که چرا باید به (نئو)ویم یا... سوییچ کنه، خیلی کار موثر یا مفید یا جالبی نیست، چون
1- انگار دارم نگاه و دلایل خودم رو که ممکنه برای اون شخص صدق نکنه استفاده میکنم و
2- در نهایت ویم ویرایشگر متن نسبتا متفاوت تری هست و اگه شخص انگیزه ای برای یادگیری و کانفیگش نداشته باشه، با مسائلی که براش پیش میاد (تنها جمله ای که مناسب این موقعیت پیدا کردم:) فقط روی اعصاب خودش و بقیه میره.
پس به جای آوردن دلیل، تجربه خودم و دلیل سوییچم بهش و این که چه پروسه ای رو برای یادگیری و کانفیگ ابزار طی کردم، بهترین توضیحیه که میتونم برای
1- شخص خودش بتونه تشخیص بده که (نئو)ویم مناسبش هست یا نه و 2- ارزش وقتش رو داره یا اصلا چقدر زمان میگیره، ارائه بدم.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
پارت 3.2 :
اما خب هنوز پشت سیستم نرفتم که تستشون کنم تا بتونم نکته ای راجبشون بگم، رسیدیم زمان نوشتن این متن.
این که کسی به ویم سوییچ کنه یا نه، با پلاگین یا بدون پلاگین کانفیگش کنه و... انتخاب خودشه، اینطوری نیست که بتونم بگم "باید همه از ویم یا ایمکس یا... استفاده کنن"، بنظرم هم این که برای یکی دلیل بیارم که چرا باید به (نئو)ویم یا... سوییچ کنه، خیلی کار موثر یا مفید یا جالبی نیست، چون
1- انگار دارم نگاه و دلایل خودم رو که ممکنه برای اون شخص صدق نکنه استفاده میکنم و
2- در نهایت ویم ویرایشگر متن نسبتا متفاوت تری هست و اگه شخص انگیزه ای برای یادگیری و کانفیگش نداشته باشه، با مسائلی که براش پیش میاد (تنها جمله ای که مناسب این موقعیت پیدا کردم:) فقط روی اعصاب خودش و بقیه میره.
پس به جای آوردن دلیل، تجربه خودم و دلیل سوییچم بهش و این که چه پروسه ای رو برای یادگیری و کانفیگ ابزار طی کردم، بهترین توضیحیه که میتونم برای
1- شخص خودش بتونه تشخیص بده که (نئو)ویم مناسبش هست یا نه و 2- ارزش وقتش رو داره یا اصلا چقدر زمان میگیره، ارائه بدم.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
🙏1
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
راجب ctags (پیش زمینه نکته بعدی):
اول چند گام قبل تر رو توضیح بدم: ctags یه ابزاری هست که... ویکی پدیا رو بخونید بهتره، اینجا بخشی که باهاش کار داریم یکی از کاربرد هاشه (بقیه رو نمیدونم، میتونید ویکی پدیا رو چک کنید) برای completion داخل ویرایشگر های متن هست. ctags زبان های مختلفی رو هم ساپورت میکنه.
در کل به عنوان یه نمونه ساده و با نصب راحت جهت completion بهش نگاه کنید که تنها بخش رو مخش ساخت فایل tags هست.
نحوه نصب داخل توزیعات آرچ بیس:
بعد داخل دایرکتوری ای که پروژه تون هست دستور
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی
راجب ctags (پیش زمینه نکته بعدی):
اول چند گام قبل تر رو توضیح بدم: ctags یه ابزاری هست که... ویکی پدیا رو بخونید بهتره، اینجا بخشی که باهاش کار داریم یکی از کاربرد هاشه (بقیه رو نمیدونم، میتونید ویکی پدیا رو چک کنید) برای completion داخل ویرایشگر های متن هست. ctags زبان های مختلفی رو هم ساپورت میکنه.
در کل به عنوان یه نمونه ساده و با نصب راحت جهت completion بهش نگاه کنید که تنها بخش رو مخش ساخت فایل tags هست.
نحوه نصب داخل توزیعات آرچ بیس:
sudo pacman -S ctagsو احتمالا توی توزیعات دیگه هم با اسم مشابه هست.
بعد داخل دایرکتوری ای که پروژه تون هست دستور
ctags -Rرو اجرا میکنید (که اون R برای recursive عه) و فایل tags ساخته میشه.
🔅@LinFAQ
🔅@LinAcademy
Wikipedia
Ctags
create a tags file
👍1
LinFAQ
پیش زمینه نکته بعدی
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
راجب نمایش template ها موقع completion با ctags داخل (نئو)ویم:
بحث اصلی امروز از اینجاست: حالا داخل (نئو)ویم داخل insert mode با کی بایند
لیست suggestion هایی که ctags ارائه میده رو ببینید
بعد آپشن showfulltag رو از طریق
دوباره از داخل insert mode بیاید suggestion ها رو چک کنید و با حالت قبل مقایسه کنید
ظاهرا امروز 2 نکته شد P:
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی
راجب نمایش template ها موقع completion با ctags داخل (نئو)ویم:
بحث اصلی امروز از اینجاست: حالا داخل (نئو)ویم داخل insert mode با کی بایند
ctrl-x ctrl-j
لیست suggestion هایی که ctags ارائه میده رو ببینید
(اگه رو مخه کی بایندش، راحت میتونید به هر چیزی خواستید map ش کنید:
vim.keymap.set('i', '<C-]>', '<C-X><C-]>')
مثال برای لوا).
بعد آپشن showfulltag رو از طریق
:set showfulltagفعال کنید.
دوباره از داخل insert mode بیاید suggestion ها رو چک کنید و با حالت قبل مقایسه کنید
(تصاویری که دادم تفاوتشون قبل و بعد ست کردن showfulltag هست).
ظاهرا امروز 2 نکته شد P:
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
👍2
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #emacs
راجب دووم آوردن داخل ایمکس تو روز اول، پارت اول:
برای اجرا از دستور زیر استفاده کردم:
اون فلگ بعدی که آخرین فلگه برای اینه که اگه emacsclient نتونست اجرا بشه
چی کار کنه، اگه مقدار بین quote ها رو خالی بذاریم اول میاد سعی میکنه daemon رو اجرا کنه و بعد دوباره تلاش کنه.
خب حالا وارد ایمکس شدید، یه صفحه سفید با یه منویی که هیچی نمیشه ازش فهمید و کی بایند هایی که موفق باشید بفهمیدشون، اما نکته مثبت: با اون دستور طومار وار بالا الان یه شل تو دسترس دارید و راحت میتونید به هر جایی خواستید cd کنید یا...، صرفا 2 دستور رو حضور ذهن داشته باشید:
رو هر فایلی بزنید اون رو از داخل emacs باز میکنه، اگه وجود نداشته باشه dired رو باز میکنه.
که ظاهرا فایل منیجر ایمکس هست رو باز میکنه.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #emacs
راجب دووم آوردن داخل ایمکس تو روز اول، پارت اول:
برای اجرا از دستور زیر استفاده کردم:
emacsclient -c -e '(eshell)' -a ''توضیحش: اون emacsclient برای اجرای ایمکس به صورت daemon/ client هست که خب مزایاش مثل کاهش زمان لود رو میدونید؛ فلگ بعدی برای اجرای برنامه داخل یه پنجره گرافیکی جدا، بعدی برای اجرای دستور داخل quote ها، که میگه eshell رو اجرا کنه
(انگار bash ای هست که lisp رو میفهمه؟ شاید دارم عالی بیانش نمیکنم، سرچ کنید منبع راجب توضیحش زیاده)؛
اون فلگ بعدی که آخرین فلگه برای اینه که اگه emacsclient نتونست اجرا بشه
(مثلا daemon ران نباشه)
چی کار کنه، اگه مقدار بین quote ها رو خالی بذاریم اول میاد سعی میکنه daemon رو اجرا کنه و بعد دوباره تلاش کنه.
خب حالا وارد ایمکس شدید، یه صفحه سفید با یه منویی که هیچی نمیشه ازش فهمید و کی بایند هایی که موفق باشید بفهمیدشون، اما نکته مثبت: با اون دستور طومار وار بالا الان یه شل تو دسترس دارید و راحت میتونید به هر جایی خواستید cd کنید یا...، صرفا 2 دستور رو حضور ذهن داشته باشید:
find-file <filename>
رو هر فایلی بزنید اون رو از داخل emacs باز میکنه، اگه وجود نداشته باشه dired رو باز میکنه.
dired
که ظاهرا فایل منیجر ایمکس هست رو باز میکنه.
🔅@LinFAQ
🔅@LinAcademy
👍2
#روزی_یک_نکته با دلاتو
دستهبندی: #کاربردی #آموزشی #emacs
راجب دووم آوردن داخل ایمکس تو روز اول، پارت دوم:
گام بعدی و واجب برای بقا در این محیط خشن، رسیدن به آتش برای تامین غ... منظورم اینه کی بایند هاست، خب لیست از کی بایند هایی که نیازم شد رو سعی میکنم این وسط جا بدم
رفتن به ابتدای لاین:
رفتن به انتهای لاین:
مشابه visual mode برای انتخاب:
کات کردن:
کپی کردن:
پیست کردن:
جا به جایی مشابه hjkl داخل متن:
جا به جایی به یک کلمه بعد یا قبل:
سرچ از مکان فعلی کرسر تا انتهای فایل:
سرچ از مکان فعلی کرسر تا ابتدای فایل:
مشابه command mode داخل ویم:
برای help موارد مختلف:
سیو کردن:
خروج:
برای سوییچ بین بافر ها
بستن بافر:
ایجاد split:
برای سوییچ بین split ها:
بستن سایر split ها:
بستن split فعلی:
برای undo و redo کردن:
(برای redo باید undo رو undo کنید P:)
برای تغییر زوم، اول
برای حذف کاراکتر:
برای حذف کلمه:
برای حذف از مکان فعلی کرسر تا انتهای لاین:
برای رفتن به ابتدا و انتهای فایل:
فکر کنم این کی بایند ها برای دووم آوردن داخل ایمکس برای روز اول کافی باشن.
اضافه کنم: اگه درست یادم باشه
میشه با C-u و بعد عدد کی بایند ها رو تکرار کرد، مثلا:
3 کلمه کرسر رو به جلو حرکت میده.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #کاربردی #آموزشی #emacs
راجب دووم آوردن داخل ایمکس تو روز اول، پارت دوم:
گام بعدی و واجب برای بقا در این محیط خشن، رسیدن به آتش برای تامین غ... منظورم اینه کی بایند هاست، خب لیست از کی بایند هایی که نیازم شد رو سعی میکنم این وسط جا بدم
(M منظور alt و C منظور ctrl هست، پس C-a
مثلا یعنی ctrl a):
رفتن به ابتدای لاین:
C-a
رفتن به انتهای لاین:
C-e
مشابه visual mode برای انتخاب:
C-SPC
(منظور از SPC همون space هست).
کات کردن:
C-w
کپی کردن:
C-W
پیست کردن:
C-y
جا به جایی مشابه hjkl داخل متن:
C-b
, C-n
, C-p
, C-f
جا به جایی به یک کلمه بعد یا قبل:
M-b
, M-f
سرچ از مکان فعلی کرسر تا انتهای فایل:
C-s
سرچ از مکان فعلی کرسر تا ابتدای فایل:
C-r
مشابه command mode داخل ویم:
M-x
برای help موارد مختلف:
C-h
سیو کردن:
C-x C-s
خروج:
C-x C-c
برای سوییچ بین بافر ها
(همون eshell ای که اول باز کردید یکیشونه):
C-x b
بستن بافر:
C-x k
ایجاد split:
C-x 2
, C-x 3
برای سوییچ بین split ها:
C-x o
بستن سایر split ها:
C-x 1
بستن split فعلی:
C-x 0
برای undo و redo کردن:
C-x u
(برای redo باید undo رو undo کنید P:)
برای تغییر زوم، اول
C-x
میزنید، بعد با موارد زیر زوم رو کم و زیاد میکنید:C-=
, C--
برای حذف کاراکتر:
C-d
برای حذف کلمه:
M-d
برای حذف از مکان فعلی کرسر تا انتهای لاین:
C-k
برای رفتن به ابتدا و انتهای فایل:
M->
, M-<
فکر کنم این کی بایند ها برای دووم آوردن داخل ایمکس برای روز اول کافی باشن.
اضافه کنم: اگه درست یادم باشه
(تست نکردم)
میشه با C-u و بعد عدد کی بایند ها رو تکرار کرد، مثلا:
C-u 3 M-f
3 کلمه کرسر رو به جلو حرکت میده.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
👍3❤1
#روزی_یک_نکته این قسمت با خودم (رضا)
دستهبندی: #کاربردی #آموزشی #wayland
میخواستم یه اسکرین شات بگیرم ولی از اونجایی که لپتاپ به مانیتور وصل بود از جفت صفحه ها اسکرین شات میگرفت
و چون از sway wm استفاده میکنم
و تنها ابزاری که میشناختم اسکرین شات بگیره grim بود
رفتم دنبالش ببینم باید چیکار کنم تا با موس قسمتی که select میکنم اسکرین شات بگیره
که با Slurp آشنا شدم احتمالا خیلی هاتون میدونید چیه و یا کار هم کردید باهاش ولی ،
یه سری آپشن ها داره که منطقه ای که select میکنی رو مختصات اون مکان رو میگه و یا به عنوان color picker هم میتونید استفاده کنید و خیلی کارهای دیگه
و خب معلومه باید این ابزار رو داخل grim استفاده کنیم
برای مثال
مثلا کامند زیر از مانیتور فوکوس شده میگیره
image magick
کار
Color picker
انجام میدیم
Source
نکته: jq رو یادتون نره نصب کنید
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #کاربردی #آموزشی #wayland
میخواستم یه اسکرین شات بگیرم ولی از اونجایی که لپتاپ به مانیتور وصل بود از جفت صفحه ها اسکرین شات میگرفت
و چون از sway wm استفاده میکنم
(ویلند عه)
و تنها ابزاری که میشناختم اسکرین شات بگیره grim بود
رفتم دنبالش ببینم باید چیکار کنم تا با موس قسمتی که select میکنم اسکرین شات بگیره
که با Slurp آشنا شدم احتمالا خیلی هاتون میدونید چیه و یا کار هم کردید باهاش ولی ،
یه سری آپشن ها داره که منطقه ای که select میکنی رو مختصات اون مکان رو میگه و یا به عنوان color picker هم میتونید استفاده کنید و خیلی کارهای دیگه
و خب معلومه باید این ابزار رو داخل grim استفاده کنیم
برای مثال
grim -g "$(slurp)"و خب میتونیم بیشتر دسترسی کاستوم کردن تو فایل نهایی عکس داشته باشیم
مثلا کامند زیر از مانیتور فوکوس شده میگیره
(همونی که الان آیکون موس روشه و پنجره ها فعال)
grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')یا مثال دیگه با این کامند با استفاده از
image magick
کار
Color picker
انجام میدیم
grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:-
Source
نکته: jq رو یادتون نره نصب کنید
🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو
دستهبندی: #کاربردی #آموزشی
راجب وارد کردن محتوای چند فایل به stdin:
بعضی مواقع یه اسکریپت یا دستوری دارید (مثل دستور
اولین چیزی که به ذهن میرسه اینه که شخص کل اون فایل ها رو پشت هم لیست کنه، اما جواب نمیده و فقط یکیشون رو به عنوان ورودی ارائه میکنه (فکر کنم مورد آخر؟). راه حلش هم ساده هست، مثال:
با خطای "no such file or directory" مواجه میشید
در نهایت تاکید کنم اون cat ابتدای 3 دستور بالا صرفا جهت بررسی صحت مقدار stdin از طریق پرینتش هست و طبیعتا باید با دستور یا اسکریپت مد نظرتون جایگزین بشه.
منابع بیشتر:
https://stackoverflow.com/questions/33157198/multiple-input-text-files-as-stdin-under-unix
https://unix.stackexchange.com/questions/20285/shorthand-for-feeding-contents-of-multiple-files-to-the-stdin-of-a-script
https://stackoverflow.com/questions/1487319/submitting-multiple-files-from-shell-script-through-standard-input
https://stackoverflow.com/questions/44552188/redirect-multiple-files-to-stdin
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #کاربردی #آموزشی
راجب وارد کردن محتوای چند فایل به stdin:
بعضی مواقع یه اسکریپت یا دستوری دارید (مثل دستور
sudo pacman -Syu --needed - < packages.txtکه داخل یکی از نکات قبلی بیان شد) و نیازه که به جای یه فایل، چند فایل رو به عنوان ورودی بهش بدید
(تو همین مورد بالا به عنوان مثال بخواید لیست پکیج هاتون رو داخل فایل های مختلف قرار بدید و دسته بندی کنید).
اولین چیزی که به ذهن میرسه اینه که شخص کل اون فایل ها رو پشت هم لیست کنه، اما جواب نمیده و فقط یکیشون رو به عنوان ورودی ارائه میکنه (فکر کنم مورد آخر؟). راه حلش هم ساده هست، مثال:
cat < <(cat file.txt file2.txt)که دستور بالا محتوای هر 2 فایل رو نمایش میده، اما اگه تست کنید
cat < file.txt file2.txtفقط محتوای فایل دوم نمایش داده میشه و اگه از
cat < cat file.txt file2.txtاستفاده کنید احتمالا
(اگه فایلی به اسم cat تو اون مسیر نداشته باشید P:)
با خطای "no such file or directory" مواجه میشید
(پس بین این 3 مورد فقط مورد اول درست جواب میده).
در نهایت تاکید کنم اون cat ابتدای 3 دستور بالا صرفا جهت بررسی صحت مقدار stdin از طریق پرینتش هست و طبیعتا باید با دستور یا اسکریپت مد نظرتون جایگزین بشه.
منابع بیشتر:
https://stackoverflow.com/questions/33157198/multiple-input-text-files-as-stdin-under-unix
https://unix.stackexchange.com/questions/20285/shorthand-for-feeding-contents-of-multiple-files-to-the-stdin-of-a-script
https://stackoverflow.com/questions/1487319/submitting-multiple-files-from-shell-script-through-standard-input
https://stackoverflow.com/questions/44552188/redirect-multiple-files-to-stdin
🔅@LinFAQ
🔅@LinAcademy
Stack Overflow
Multiple input text files as stdin under unix
new to Linux and C so probably a simple task..but
As per the title,
How, via the command line, do you redirect 2 distinct files as input, so that when the program is done with the ...
As per the title,
How, via the command line, do you redirect 2 distinct files as input, so that when the program is done with the ...
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #emacs
یه سری منابع برای mu4e
راستی یه کپی از emacswiki راجب mu4e برم:
- قبلا یه ویدئو distrotube راجبش داده:
https://youtu.be/LKp3hQP2VxQ
کم و بیش درسته، فقط اون mbsync-git رو تا جایی که میدونم نیاز نیست نصب کنید، isync داخل مخازن رسمی هست.
اگه میخواید راجب isync بیشتر مطالعه کنید
https://wiki.archlinux.org/title/isync
منابع بیشتر راجب mu4e:
https://www.emacswiki.org/emacs/mu4e
اسکرین شات ها و منبع رسمی:
https://www.djcbsoftware.nl/code/mu/mu4e.html
میتونید کانفیگ gavin رو هم راجبش چک کنید:
https://github.com/Gavinok/emacs.d/blob/main/lisp/mu4e-config.el
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #emacs
یه سری منابع برای mu4e
(هنوز سراغش نرفتم، صرفا تحقیقه):
راستی یه کپی از emacswiki راجب mu4e برم:
mu4e is an email client for Emacs. It’s based on the mu email indexer/searcher.
- قبلا یه ویدئو distrotube راجبش داده:
Setting Up The Mu4e Email Client In Doom Emacs
https://youtu.be/LKp3hQP2VxQ
کم و بیش درسته، فقط اون mbsync-git رو تا جایی که میدونم نیاز نیست نصب کنید، isync داخل مخازن رسمی هست.
اگه میخواید راجب isync بیشتر مطالعه کنید
(به صورت کلی چیز جالبیه، بنظرم به چک کردنش میرزه):
https://wiki.archlinux.org/title/isync
منابع بیشتر راجب mu4e:
https://www.emacswiki.org/emacs/mu4e
اسکرین شات ها و منبع رسمی:
https://www.djcbsoftware.nl/code/mu/mu4e.html
میتونید کانفیگ gavin رو هم راجبش چک کنید:
https://github.com/Gavinok/emacs.d/blob/main/lisp/mu4e-config.el
🔅@LinFAQ
🔅@LinAcademy
YouTube
Setting Up The Mu4e Email Client In Doom Emacs
Do you use Emacs? Do you also use a desktop email client like Thunderbird or Geary? There is no need to run those desktop email clients when Emacs has a great email client available. That email client is called mu4e.
NOTE:
When I did the git clone of…
NOTE:
When I did the git clone of…
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #emacs
راجب hook و فعال کردن لاین نامبر در مد های مورد نیاز داخل ایمکس:
وقتی میخوان یه فانکشن بعد از یه رویدادی
اجرا بشه، از hook استفاده میکنن
یه نمونه هم ازش بخوام بگم این هست:
که در واقع داره میگه اگه major mode بافر جزو prog-mode بود، بیاد لاین نامبر رو هم فعال کنه.
حالا کد زیر رو داریم:
تو اینجا داریم از use-package استفاده میکنیم، برای همین اسم پکیجی که فانکشن display-line-numbers-mode شامل میشه رو به کار میبریم، بعد بهش میگیم که تو کدوم پکیج ها قراره لاین نامبر نمایش داده بشه، اینطوری ۲ سود داره:
1- به جای اسم فانکشن ها، اسم پکیج ها رو به کار میبریم که عموما کوتاه تره.
2- همونطور که میبینید میتونم با یه بار نوشتن hook، داخل هر چند مدی که میخوام لاین نامبر رو نمایش بدم. مثلا اینجا علاوه بر prog-mode، داخل فایل هایی که org هستن هم لاین نامبر نمایش داده میشه.
اگه توی نکته ایرادی بود پیشاپیش عذر میخوام، به دلیل آشنایی کمم با ایمکس هست چون کلا یه هفته هست که دارم ازش استفاده میکنم و تو این یه هفته هم شاید بیشتر از ۱۰ ساعت ازش استفاده نکردم، ضمنا خوشحال میشم اگه خواستید ایراد رو اصلاح و بیان کنید.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #emacs
راجب hook و فعال کردن لاین نامبر در مد های مورد نیاز داخل ایمکس:
وقتی میخوان یه فانکشن بعد از یه رویدادی
(مثل اجرای یه فانکشن دیگه یا مد خاصی یا...)
اجرا بشه، از hook استفاده میکنن
(یا حداقل برداشت من از hook اینطوری بوده).
یه نمونه هم ازش بخوام بگم این هست:
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
که در واقع داره میگه اگه major mode بافر جزو prog-mode بود، بیاد لاین نامبر رو هم فعال کنه.
اینطوری داخل چیز هایی مثل dired که مدیر فایل هست یا کلا هر جایی که کد نیست، لاین نامبر رو هم نمیبینیم.
کلا major mode هایی که زبان برنامه نویسی هستن توی این دسته قرار میگیرن (در کل مفهوم major mode مشابه file type داخل (نئو)ویم هست).
حالا کد زیر رو داریم:
(use-package display-line-numbers
:hook org-mode prog-mode
)
تو اینجا داریم از use-package استفاده میکنیم، برای همین اسم پکیجی که فانکشن display-line-numbers-mode شامل میشه رو به کار میبریم، بعد بهش میگیم که تو کدوم پکیج ها قراره لاین نامبر نمایش داده بشه، اینطوری ۲ سود داره:
1- به جای اسم فانکشن ها، اسم پکیج ها رو به کار میبریم که عموما کوتاه تره.
2- همونطور که میبینید میتونم با یه بار نوشتن hook، داخل هر چند مدی که میخوام لاین نامبر رو نمایش بدم. مثلا اینجا علاوه بر prog-mode، داخل فایل هایی که org هستن هم لاین نامبر نمایش داده میشه.
راجب use-package بخوام مختصر بگم، برای کانفیگ ساده تر ازش استفاده میشه و پیش فرض توی نسخه های جدید ایمکس نصب هست.
جهت فهمیدن این که function یا variable مربوط به کدوم پکیج هست میتونید کی بایند C-h f یا C-h v رو بسته به function یا variable بودن بزنید و بعد اسمش رو وارد کنید، همون چند خط اول نوشته که برای کدوم پکیج هست، میتونید از طریق پسوند el تشخیص بدید.
اگه توی نکته ایرادی بود پیشاپیش عذر میخوام، به دلیل آشنایی کمم با ایمکس هست چون کلا یه هفته هست که دارم ازش استفاده میکنم و تو این یه هفته هم شاید بیشتر از ۱۰ ساعت ازش استفاده نکردم، ضمنا خوشحال میشم اگه خواستید ایراد رو اصلاح و بیان کنید.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
www.gnu.org
Hooks (GNU Emacs Manual)
Next: Local Variables, Previous: Examining and Setting Variables, Up: Variables [Contents][Index]
❤1
#روزی_یک_نکته با دلاتو
دستهبندی: #کاربردی #آموزشی #makefile
راجب make:
احتمالا تا حالا Makefile رو دیده باشید
تعریفم شاید دقیق نباشه، اما سعی میکنم واضح بیانش کنم: make یه ابزار هست که محتوای Makefile رو میخونه و بر اساس آرگومانی که بهش میدیم، میاد یه کاری رو انجام میده.
طوری که بهش نگاه میکنم: یه جورایی Makefile انگار یه فایل با یه سری switch case هست که وجود یا بروز بودن یه فایل یا یه case دیگه رو نگاه میکنه و بر اساس اون آرگومانی که بهش میدید، یه سری دستوراتی رو انجام میده.
کاربرد اصلیش بیلد کردن پکیج ها و کامپایل، اکسپورت کردن و... هست
و خاصیتش اتومات کردن کار، سادگی تایپ، سرعت بالا تر
و عدم تکرار اسم فایل ها و... هست.
نمونه کار های خلاقانه دیگه ای که براش دیدم میشه از مدیریت کانفیگ ها گفت:
How To Manage Your Dotfiles With Make
خودم خیلی باهاش کار نکردم، پس هم در حد پایه گفتم و هم خیلی اعتبار این نکته بالا نیست، اما قابل بیان دونستمش، اگه توضیح کامل میخواید منبع رسمی شاید بهترین گزینه باشه.
داخل یوتیوب هم آموزش راجبش زیاد هست، 2 تا آموزش کوتاه و یه نکته ای که نسبتا باید حواستون بهش باشه رو اضافه میکنم:
How to Create a Simple Makefile - Introduction to Makefiles
Learn make in 60 seconds.
Why that "Perfect" Makefile Doesn't Work.
چون 3 لینک بالا رو اضافه کردم و توضیحاتشون رو بیشتر از دانش خودم دونستم، پس نحوه نوشتن Makefile رو دیگه توضیح نمیدم. صرفا یه نمونه که برای نیاز خودم نوشتم رو ضمیمه این پست میکنم.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #کاربردی #آموزشی #makefile
راجب make:
احتمالا تا حالا Makefile رو دیده باشید
مخصوصا اگه از ابزارا suckless استفاده کردید.
تعریفم شاید دقیق نباشه، اما سعی میکنم واضح بیانش کنم: make یه ابزار هست که محتوای Makefile رو میخونه و بر اساس آرگومانی که بهش میدیم، میاد یه کاری رو انجام میده.
طوری که بهش نگاه میکنم: یه جورایی Makefile انگار یه فایل با یه سری switch case هست که وجود یا بروز بودن یه فایل یا یه case دیگه رو نگاه میکنه و بر اساس اون آرگومانی که بهش میدید، یه سری دستوراتی رو انجام میده.
کاربرد اصلیش بیلد کردن پکیج ها و کامپایل، اکسپورت کردن و... هست
مثلا جای این که بنویسید gcc... میاید میزنید make و تمام.
و خاصیتش اتومات کردن کار، سادگی تایپ، سرعت بالا تر
خودش چک میکنه اگه فایلی بروز بود دیگه دستش نمیزنه و... سر همین پروسه زمان کمتری میبره.
و عدم تکرار اسم فایل ها و... هست.
میتونید متغیر براش تعریف کنید.
نمونه کار های خلاقانه دیگه ای که براش دیدم میشه از مدیریت کانفیگ ها گفت:
How To Manage Your Dotfiles With Make
خودم خیلی باهاش کار نکردم، پس هم در حد پایه گفتم و هم خیلی اعتبار این نکته بالا نیست، اما قابل بیان دونستمش، اگه توضیح کامل میخواید منبع رسمی شاید بهترین گزینه باشه.
داخل یوتیوب هم آموزش راجبش زیاد هست، 2 تا آموزش کوتاه و یه نکته ای که نسبتا باید حواستون بهش باشه رو اضافه میکنم:
How to Create a Simple Makefile - Introduction to Makefiles
Learn make in 60 seconds.
Why that "Perfect" Makefile Doesn't Work.
چون 3 لینک بالا رو اضافه کردم و توضیحاتشون رو بیشتر از دانش خودم دونستم، پس نحوه نوشتن Makefile رو دیگه توضیح نمیدم. صرفا یه نمونه که برای نیاز خودم نوشتم رو ضمیمه این پست میکنم.
در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.
🔅@LinFAQ
🔅@LinAcademy
YouTube
How to Create a Simple Makefile - Introduction to Makefiles
In this video I show how to create a simple makefile.
Want to learn C++? I highly recommend this book https://amzn.to/1PftaSt
Donate - https://bit.ly/17vCDFx
STILL NEED MORE HELP?
Connect one-on-one with a Programming Tutor. Click the link below:
http…
Want to learn C++? I highly recommend this book https://amzn.to/1PftaSt
Donate - https://bit.ly/17vCDFx
STILL NEED MORE HELP?
Connect one-on-one with a Programming Tutor. Click the link below:
http…
👍3
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #emacs
قابلیت های پیش فرض ایمکس که برام جالب و مهم بودن و آشنایی باهاشون موقع تغییر ادیتور به ایمکس نسبتا واجبه:
- مورد اول org mode هست، میشه یه سری پکیج مثل org-modern نصبید که ظاهر بهتر بشه، اما حتی وجود خود org mode و گرفتن خروجی کد داخل هر فایل دیگه و... قابلیت مفیدیه.
- مورد بعد eshell هست، عملا بهتون یه شل میده که داخلش میتونید از فانکشن های ایمکس استفاده کنید، مثلا بیاید با find-file یه فایل رو داخل همون پنجره ایمکس باز کنید و...
- برا مدیر فایل هم dired رو داریم. ازش زیاد استفاده نکردم پس نظری نمیدم، اما قابلیت هاش رو نگاه بندازید جالبه.
- میشه داخل هر فایلی (تا جایی که میدونم هر بافری که میشه داخلش تایپ کرد) کد elisp نوشت و با C-x C-e اجراش کرد. مثلا وسط کد نوشتن جای این که M-x بزنید، داخل همون فایل فانکشن رو مینویسید و اجراش میکنید و بعد لاین رو حذف میکنید.
- کلید تب به صورت پیش فرض indent اون خط رو اصلاح میکنه.
- سیستم daemon client. هم زمان باز شدن پنجره رو صفر میکنه و هم میتونید باهاش از طریق شل یا ابزار های مختلف به ایمکس فرمان بدید.
ضمنا دیگه نیاز نیست نگران اشتباهی بستن پنجره باشید.
پیشنهاد میدم ویدئو زیر از protesilaos stavrou رو براش ببینید:
Basics of Emacs client (`emacsclient' program)
- تو نسخه جدید ایمکس، use-package به صورت builtin وجود داره که استفاده ازش کمک میکنه کانفیگ خیلی منظم تر بشه (علاوه بر بهبود سرعت لود اولیه و...).
- وجود major modes و prog-mode. تا حدی مشابه file type هستن، اما انگار درک خیلی بهتری دارن.
برای لیست زبان هایی که دیفالت major mode شون ردیفه قبلا لینک داده بودم.
- سیستم راهنماش. چند نکته راجبش هست:
1- راهنما های بخش های مختلف کی بایند هاشون جدا و دسته بندی شده.
2- وقتی راهنمای function یا variable یا... رو چک میکنید، داخل split ای که براش باز میشه فقط مطالب مربوط به همون function یا variable یا... رو میبینید.
3- داخل راهنما گفته شده که اون function یا... برای کدوم پکیج هست.
4- اگه درست یادم باشه مقدار پیشفرض و مقدار فعلی اون variable یا... رو میگه.
- گرافیکی بودنش و پشتیبانی عالی از ligatures و زبان فارسی و...
اینا قابلیت هایی بودن که تو چند ساعت اول کار با ایمکس به چشمم اومدن و هنوز قابلیت هایی مثل compiler و debugger رو نگاه هم ننداختم.
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #emacs
قابلیت های پیش فرض ایمکس که برام جالب و مهم بودن و آشنایی باهاشون موقع تغییر ادیتور به ایمکس نسبتا واجبه:
- مورد اول org mode هست، میشه یه سری پکیج مثل org-modern نصبید که ظاهر بهتر بشه، اما حتی وجود خود org mode و گرفتن خروجی کد داخل هر فایل دیگه و... قابلیت مفیدیه.
- مورد بعد eshell هست، عملا بهتون یه شل میده که داخلش میتونید از فانکشن های ایمکس استفاده کنید، مثلا بیاید با find-file یه فایل رو داخل همون پنجره ایمکس باز کنید و...
- برا مدیر فایل هم dired رو داریم. ازش زیاد استفاده نکردم پس نظری نمیدم، اما قابلیت هاش رو نگاه بندازید جالبه.
- میشه داخل هر فایلی (تا جایی که میدونم هر بافری که میشه داخلش تایپ کرد) کد elisp نوشت و با C-x C-e اجراش کرد. مثلا وسط کد نوشتن جای این که M-x بزنید، داخل همون فایل فانکشن رو مینویسید و اجراش میکنید و بعد لاین رو حذف میکنید.
- کلید تب به صورت پیش فرض indent اون خط رو اصلاح میکنه.
- سیستم daemon client. هم زمان باز شدن پنجره رو صفر میکنه و هم میتونید باهاش از طریق شل یا ابزار های مختلف به ایمکس فرمان بدید.
ضمنا دیگه نیاز نیست نگران اشتباهی بستن پنجره باشید.
پیشنهاد میدم ویدئو زیر از protesilaos stavrou رو براش ببینید:
Basics of Emacs client (`emacsclient' program)
- تو نسخه جدید ایمکس، use-package به صورت builtin وجود داره که استفاده ازش کمک میکنه کانفیگ خیلی منظم تر بشه (علاوه بر بهبود سرعت لود اولیه و...).
- وجود major modes و prog-mode. تا حدی مشابه file type هستن، اما انگار درک خیلی بهتری دارن.
برای لیست زبان هایی که دیفالت major mode شون ردیفه قبلا لینک داده بودم.
- سیستم راهنماش. چند نکته راجبش هست:
1- راهنما های بخش های مختلف کی بایند هاشون جدا و دسته بندی شده.
مثلا C-h v برای variable ها.
2- وقتی راهنمای function یا variable یا... رو چک میکنید، داخل split ای که براش باز میشه فقط مطالب مربوط به همون function یا variable یا... رو میبینید.
3- داخل راهنما گفته شده که اون function یا... برای کدوم پکیج هست.
4- اگه درست یادم باشه مقدار پیشفرض و مقدار فعلی اون variable یا... رو میگه.
- گرافیکی بودنش و پشتیبانی عالی از ligatures و زبان فارسی و...
اینا قابلیت هایی بودن که تو چند ساعت اول کار با ایمکس به چشمم اومدن و هنوز قابلیت هایی مثل compiler و debugger رو نگاه هم ننداختم.
🔅@LinFAQ
🔅@LinAcademy
Wikipedia
Org-mode
Org Mode (also: org-mode; /ˈɔːrɡ moʊd/) is a mode for document editing, formatting, and organizing within the free software text editor GNU Emacs and its derivatives, designed for notes, planning, and authoring. The name is used to encompass plain text files…
#روزی_یک_نکته با دلاتو
دستهبندی: #کاربردی #آموزشی #emacs
(خیلی فواصل نکات نامنظم شده) راجب نمایش انواع داکیومنت داخل emacs:
- ایمکس یه DocView mode داره که میتونید باهاش انواع فرمت های داکیومنت رو ببینید.
- برای نمایش هم کاملا مشابه بقیه فایل ها عمل میکنید، مثلا
- برای نمایش pdf از ghostscript یا mupdf استفاده میکنه، پس طبیعتا حداقل یکیشون باید نصب باشه.
- اگه محتوای داکیومنت بروز شده بود، میتونید برای refresh کردن محتوایی که داره داخل DocView نمایش داده میشه از کلید g استفاده کنید.
- با
- اصولا برای هر فرمت داکیومنتی که خودش اشاره کرده جوابه، اما احتمالا چون هیچ آفیسی روی سیستم نصب نداشتم نتونستم ppt رو با ایمکس باز کنم.
- میتونید این رو هم جهت مطالعه بیشتر چک کنید.
- ضمنا pdf-tools رو هم نگاه بندازید خوبه، این stackoverflow رو هم میتونید براش چک کنید.
source
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #کاربردی #آموزشی #emacs
(خیلی فواصل نکات نامنظم شده) راجب نمایش انواع داکیومنت داخل emacs:
- ایمکس یه DocView mode داره که میتونید باهاش انواع فرمت های داکیومنت رو ببینید.
- برای نمایش هم کاملا مشابه بقیه فایل ها عمل میکنید، مثلا
find-file test.pdf
از داخل ایمکس.- برای نمایش pdf از ghostscript یا mupdf استفاده میکنه، پس طبیعتا حداقل یکیشون باید نصب باشه.
- اگه محتوای داکیومنت بروز شده بود، میتونید برای refresh کردن محتوایی که داره داخل DocView نمایش داده میشه از کلید g استفاده کنید.
- با
C-c C-c
میتونید بین نمایش فایل با DocView و تکست سوییچ کنید.برای فایل هایی مثل pdf طبیعتا فقط DocView نیاز میشه، اما تو svg میتونه قضیه فرق کنه.
- اصولا برای هر فرمت داکیومنتی که خودش اشاره کرده جوابه، اما احتمالا چون هیچ آفیسی روی سیستم نصب نداشتم نتونستم ppt رو با ایمکس باز کنم.
- میتونید این رو هم جهت مطالعه بیشتر چک کنید.
- ضمنا pdf-tools رو هم نگاه بندازید خوبه، این stackoverflow رو هم میتونید براش چک کنید.
خودم تستش نکردم ولی فکر کنم از DocView عملکرد بهتری نشون بده.
source
🔅@LinFAQ
🔅@LinAcademy
www.gnu.org
39 Document Viewing
Next: Running Shell Commands from Emacs, Previous: Network Security, Up: The Emacs Editor [Contents][Index]
#روزی_یک_نکته با سهراب
دستهبندی: #آموزشی #کاربردی #Debian
بعد از نصب دبیان چه کارهایی رو باید انجام بدیم؟ 🫡
اگر شما به تازگی توزیع دبیان رو نصب کردین یا قصد نصب کردنشو دارید پیشنهاد میکنم این متن رو بخونید.
۱. بعد از نصب توزیع دبیان حتما مخازن nonfree و contrib رو فعال کنید.
چطور؟
با استفاده از ادیتوری که دوست دارید، فایل
/etc/sources.list
رو باز کنید و جلوی لینک مخازن مثل نمونه پایین اگه مخزن لینکش:
هست اون رو به
تغییر بدید.
این کار رو برای همه مخازن از جمله مخازن اپدیت انجام بدید.
۲. فعال کردن نتورک منیجر.
اگه توزیع دبیان رو با دسکتاپ مدنظرتون نصب کنید ، بعد از اولین لاگین ممکنه که در افزونه نتورک منیجر با عبارت no connection و یا در nmcli با عبارت unmanaged روبرو بشید.
چطور این رو درست کنیم؟
کافیه فایل
رو باز کنید ( حروف بزرگ و کوچیک رعایت شود)
و در این فایل managed=false رو به managed=true تغییر بدید و ذخیره کنید سپس نتورک منیجر رو ری استارت کنید.
۳. دادن دسترسی sudo به یوزر
معمولا بعد از نصب دبیان یوزری که ساختید دسترسی روت نداره و وقتی از sudo استفاده میکنید با خطا مواجه میشید.
برای درست کردن این نیز ۲ راه دارید
راه اول:
اضافه کردن یوزر به گروه sudo
برای این کار باید دستور:
رو بزنید و سپس با استفاده از دستور:
برسی کنید که آیا یوزر شما به این گروه اضافه شده و یا نه اگر این کار رو بکنید دسترسی sudo برای یوزر شما باز میشه.
راه دوم:
ادیت کردن مستقیم فایل sudoers
اگر به هر دلیلی راه بالا براتون کارنکرد میتونید از این راه هم برید
برای این کار اول دسترسی روت رو بگیرید
با استفاده از کامند su و وارد کردن رمز روت شما دسترسی روت رو میگیرید
سپس باید فایل
/etc/sudoers
رو با ادیتورتون باز کنید و بعد در اون فایل زیر خط
با توجه به یوزرنیمتون یکی مثل همون بنویسید مثلا اگه یوزرنیم شما sohrab هست باید
رو بنویسید و ذخیره کنید تا دسترسی sudo برای یوزرتون باز بشه.
۴. فعال کردن لیست یوزر ها در lightdm
اگه از lightdm استفاده میکنید ممکنه که ببینید که از شما برای لاگین کردن یوزرنیم میخواد بجای اینکه یوزرنیم شمارو نشون بده برای رفع این مشکل باید فایل کانفیگ lightdm که
هست رو باز کنید و قسمت
رو از کامنت بودن در بیارید ( عبارت # پشتش رو پاک کنید)
و یک نکته که توی پست بعدی میگم........
source
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #Debian
بعد از نصب دبیان چه کارهایی رو باید انجام بدیم؟ 🫡
اگر شما به تازگی توزیع دبیان رو نصب کردین یا قصد نصب کردنشو دارید پیشنهاد میکنم این متن رو بخونید.
۱. بعد از نصب توزیع دبیان حتما مخازن nonfree و contrib رو فعال کنید.
چطور؟
با استفاده از ادیتوری که دوست دارید، فایل
/etc/sources.list
رو باز کنید و جلوی لینک مخازن مثل نمونه پایین اگه مخزن لینکش:
deb https://deb.debian.org/debian/ bullseye main
هست اون رو به
deb https://deb.debian.org/debian/ bullseye main contrib non-free
تغییر بدید.
این کار رو برای همه مخازن از جمله مخازن اپدیت انجام بدید.
۲. فعال کردن نتورک منیجر.
اگه توزیع دبیان رو با دسکتاپ مدنظرتون نصب کنید ، بعد از اولین لاگین ممکنه که در افزونه نتورک منیجر با عبارت no connection و یا در nmcli با عبارت unmanaged روبرو بشید.
چطور این رو درست کنیم؟
کافیه فایل
/etc/NetworkManager/NetworkManager.conf
رو باز کنید ( حروف بزرگ و کوچیک رعایت شود)
و در این فایل managed=false رو به managed=true تغییر بدید و ذخیره کنید سپس نتورک منیجر رو ری استارت کنید.
sudo systemctl restart NetworkManager
۳. دادن دسترسی sudo به یوزر
معمولا بعد از نصب دبیان یوزری که ساختید دسترسی روت نداره و وقتی از sudo استفاده میکنید با خطا مواجه میشید.
برای درست کردن این نیز ۲ راه دارید
راه اول:
اضافه کردن یوزر به گروه sudo
برای این کار باید دستور:
usermod -aG sudo username
رو بزنید و سپس با استفاده از دستور:
getent group sudo
برسی کنید که آیا یوزر شما به این گروه اضافه شده و یا نه اگر این کار رو بکنید دسترسی sudo برای یوزر شما باز میشه.
راه دوم:
ادیت کردن مستقیم فایل sudoers
اگر به هر دلیلی راه بالا براتون کارنکرد میتونید از این راه هم برید
برای این کار اول دسترسی روت رو بگیرید
با استفاده از کامند su و وارد کردن رمز روت شما دسترسی روت رو میگیرید
سپس باید فایل
/etc/sudoers
رو با ادیتورتون باز کنید و بعد در اون فایل زیر خط
root ALL=(ALL) ALL
با توجه به یوزرنیمتون یکی مثل همون بنویسید مثلا اگه یوزرنیم شما sohrab هست باید
sohrab ALL=(ALL) ALL
رو بنویسید و ذخیره کنید تا دسترسی sudo برای یوزرتون باز بشه.
۴. فعال کردن لیست یوزر ها در lightdm
اگه از lightdm استفاده میکنید ممکنه که ببینید که از شما برای لاگین کردن یوزرنیم میخواد بجای اینکه یوزرنیم شمارو نشون بده برای رفع این مشکل باید فایل کانفیگ lightdm که
/etc/lightdm/lightdm.conf
هست رو باز کنید و قسمت
greeter-hide-users=false
رو از کامنت بودن در بیارید ( عبارت # پشتش رو پاک کنید)
و یک نکته که توی پست بعدی میگم........
source
🔅@LinFAQ
🔅@LinAcademy
LinFAQ
یک نکته که توی پست بعدی میگم
#روزی_یک_نکته با سهراب
دستهبندی: #آموزشی #کاربردی #Debian
ادامه نکته قبل
اگه هدفتون نصب دبیان sid هستش.
موقع نصب دسکتاپ انتخاب نکنید
دبیان رو به صورت مینیمال نصب کنید
و بعدش توی کانفیگ مخازن بعد از نصب که فایل
/etc/apt/sources.list
هستش رو باز کنید
همه مخازن داخلش رو پاک کنید چون دبیان sid نیازی به مخازن اپدیت دبیان نداره و رولینگ هست
جز این مخزن که مخزن اصلی هستش که این رو
به
تغییر بدید
یک دور دبیان رو کاملا اپدیت کنید:
تبریک الان دبیان sid دارید
دسکتاپی که هم دوست دارید یا دستی و یا با کامند
نصب کنید.
حالا چرا گفتم دسکتاپ نصب نکنید؟
چون اگه دسکتاپ نصب کنید و بعدش مخازن رو به sid تغییر بدید، حجم اپدیتی که ازتون میگیره زیاد هست و به صرفه نیست.
و حتما مراحل پست بالا رو برای sudo و lightdm و network manager انجام بدید.
source
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #Debian
ادامه نکته قبل
اگه هدفتون نصب دبیان sid هستش.
موقع نصب دسکتاپ انتخاب نکنید
دبیان رو به صورت مینیمال نصب کنید
و بعدش توی کانفیگ مخازن بعد از نصب که فایل
/etc/apt/sources.list
هستش رو باز کنید
همه مخازن داخلش رو پاک کنید چون دبیان sid نیازی به مخازن اپدیت دبیان نداره و رولینگ هست
جز این مخزن که مخزن اصلی هستش که این رو
deb https://deb.debian.org/debian/ bullseye main
به
deb https://deb.debian.org/debian/ sid main non-free contrib
تغییر بدید
یک دور دبیان رو کاملا اپدیت کنید:
sudo apt update && sudo apt upgrade
تبریک الان دبیان sid دارید
دسکتاپی که هم دوست دارید یا دستی و یا با کامند
tasksel
نصب کنید.
حالا چرا گفتم دسکتاپ نصب نکنید؟
چون اگه دسکتاپ نصب کنید و بعدش مخازن رو به sid تغییر بدید، حجم اپدیتی که ازتون میگیره زیاد هست و به صرفه نیست.
و حتما مراحل پست بالا رو برای sudo و lightdm و network manager انجام بدید.
source
🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #shell
راجب چک کردن دستوری که alias اجرا میکنه:
کافیه از دستور زیر استفاده کنید:
مثال:
دستور زیر
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #shell
راجب چک کردن دستوری که alias اجرا میکنه:
این سری خیلی کوتاهه.
کافیه از دستور زیر استفاده کنید:
type <alias>
مثال:
دستور زیر
برای تعریف کردن alias
alias vim='nvim'
type updateداخل کانفیگ خودم خروجی زیر رو داره:
update is aliased to `sudo pacman -Syu --needed - < $HOME/nEwRA/packages.txt'
🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی #neovim
یه مطلبی بود که راجب یادگیری نئوویم نوشتم
اول ببین با کی بایند ها راحتی؟
میتونی توی فایل جا به جا شی و redo و undo کنی؟
بعد از یه مدت که دیگه نیاز نداشتی دستت رو ببری روی ماوس یا arrow keys، برو سراغ مباحث بعدی.
اگه هنوز با پیش فرض ها راحت نیستی، کی بایند ها رو یاد بگیر، ترمینال باز کن و بنویس vimtutor و باهاش پیش برو یا این که این ویدئو رو ببین.
بعد از یادگیری کی بایند ها در حد نیاز، چون با پایه ها راحتی ابزار رو گسترش میدی، پس باید بری سراغ کانفیگ جهت اضافه کردن قابلیت هایی که نیاز داری مثل suggestion بهتر یا... به نئوویم.
پیشنهاد میدم اول این ویدئو و این یکی رو ببینی تا متوجه شی نئوویم چه قابلیت هایی رو بدون پلاگین ارائه میده، بعد این ویدئو رو ببین تا یه کانفیگ پایه آماده با پلاگین بدست بیاری و یا این که برو سراغ nvpak که کانفیگ علی باشه.
در انتها مطالبی مثل macro میمونه که اگه بدونی خیلی کمکت میکنه.
جدای از این ها خیلی از قابلیت ها مثل کامند make هستن که کمک میکنه، اما توی جامعه خیلی کمتر میبینی و پیدا کردن مطالب براش به این راحتی نیست.
بعد از کل موارد بالا اگه به نقطه ای رسیدی که خواستی نئوویم رو از صفر کانفیگ کنی این منبع خیلی کمکت میکنه.
source
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی #neovim
یه مطلبی بود که راجب یادگیری نئوویم نوشتم
اول ببین با کی بایند ها راحتی؟
میتونی توی فایل جا به جا شی و redo و undo کنی؟
بعد از یه مدت که دیگه نیاز نداشتی دستت رو ببری روی ماوس یا arrow keys، برو سراغ مباحث بعدی.
اگه هنوز با پیش فرض ها راحت نیستی، کی بایند ها رو یاد بگیر، ترمینال باز کن و بنویس vimtutor و باهاش پیش برو یا این که این ویدئو رو ببین.
خودم نحوه hjkl و esc و wq: رو یاد گرفتم و بعد هر چیزی نیازم شد مثل undo رو با یه سرچ ساده بدست آوردم.
تاکید میکنم، برای رفتن به نرمال مد به جای esc، اول alt رو نگه دار و بعد کاری که میخوای انجام بدی رو بزن. مثالش اینه که alt j میبرتت به نرمال مد و بعد کرسر رو یه خط پایین میبره.
بهتره توی این مرحله با visual mode آشنا بشی و نحوه جستجو داخل متن رو تا حد نیاز یاد بگیری.
بعد از یادگیری کی بایند ها در حد نیاز، چون با پایه ها راحتی ابزار رو گسترش میدی، پس باید بری سراغ کانفیگ جهت اضافه کردن قابلیت هایی که نیاز داری مثل suggestion بهتر یا... به نئوویم.
پیشنهاد میدم اول این ویدئو و این یکی رو ببینی تا متوجه شی نئوویم چه قابلیت هایی رو بدون پلاگین ارائه میده، بعد این ویدئو رو ببین تا یه کانفیگ پایه آماده با پلاگین بدست بیاری و یا این که برو سراغ nvpak که کانفیگ علی باشه.
در انتها مطالبی مثل macro میمونه که اگه بدونی خیلی کمکت میکنه.
جدای از این ها خیلی از قابلیت ها مثل کامند make هستن که کمک میکنه، اما توی جامعه خیلی کمتر میبینی و پیدا کردن مطالب براش به این راحتی نیست.
بعد از کل موارد بالا اگه به نقطه ای رسیدی که خواستی نئوویم رو از صفر کانفیگ کنی این منبع خیلی کمکت میکنه.
یه نکته ای رو داشت یادم میرفت، هر چیزی برات سوال شد داخل کامند مد h و بعد چیزی که میخوای راجبش بیشتر بدونی رو بزن.
source
🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
راجب disown و nohup :
اگه بخواید ابزار گرافیکی رو از طریق ترمینال اجرا کنید 3 مسئله هست:
1- خروجی های ابزار گرافیکی به ترمینال فرستاده میشه و اگه دنبال پیدا کردن خطا یا... نباشید دیدنشون فقط رو مخه.
2- شل رو آزاد نمیکنه و ترمینال عملا بلا استفاده میشه.
3- بعد از بستن ترمینال، ابزار گرافیکی هم بسته میشه.
مورد دوم رو با
برای حل این قضیه 2 راه داریم:
1- استفاده از nohup.
مثال:
2- استفاده از disown. مثال:
البته یه قضیه هم راجب nohup هست: یه فایل nohup.out داخل مسیری که هستین میسازه و خروجی ها رو به جای ترمینال، داخل اون فایل قرار میده.
راجب توضیح دقیق این که disown و nohup چی کار میکنن و فرقشون چیه بهتره که این 3 لینک رو چک کنید:
https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
https://askubuntu.com/questions/439187/how-to-open-a-gui-application-and-disconnect-it
https://man.archlinux.org/man/nohup.1.en
source
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی
راجب disown و nohup :
اگه بخواید ابزار گرافیکی رو از طریق ترمینال اجرا کنید 3 مسئله هست:
1- خروجی های ابزار گرافیکی به ترمینال فرستاده میشه و اگه دنبال پیدا کردن خطا یا... نباشید دیدنشون فقط رو مخه.
2- شل رو آزاد نمیکنه و ترمینال عملا بلا استفاده میشه.
3- بعد از بستن ترمینال، ابزار گرافیکی هم بسته میشه.
مورد دوم رو با
&
انتهای دستور میشه حل کرد، اما باز مورد اول و سوم میمونن.برای حل این قضیه 2 راه داریم:
1- استفاده از nohup.
مثال:
nohup zathura file.pdf &
دقت کنید اگه اون & انتها نباشه شل آزاد نمیشه.
2- استفاده از disown. مثال:
zathura file.pdf &
disown
نکته :
zathura (document viewer)
عه که استفاده شده
البته یه قضیه هم راجب nohup هست: یه فایل nohup.out داخل مسیری که هستین میسازه و خروجی ها رو به جای ترمینال، داخل اون فایل قرار میده.
راجب توضیح دقیق این که disown و nohup چی کار میکنن و فرقشون چیه بهتره که این 3 لینک رو چک کنید:
به هر حال توضیح من یه برداشت ناقص از این منابع میشد.
https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
https://askubuntu.com/questions/439187/how-to-open-a-gui-application-and-disconnect-it
https://man.archlinux.org/man/nohup.1.en
source
🔅@LinFAQ
🔅@LinAcademy
Ask Ubuntu
How to open a GUI application and 'disconnect' it?
I can run Sublime, for example, in the background by typing
sublime-text &
The & puts it into the background so that I can continue to run commands in my terminal. Alternatively, I can run
sublime-text &
The & puts it into the background so that I can continue to run commands in my terminal. Alternatively, I can run
👍4
#روزی_یک_نکته با حسن
دستهبندی: #آموزشی #کاربردی
بحث راجب این بود که چرا فایلی رو داریم انتقال میدیم یا کار های دیگه انجام میدیم باهاش توی لینوکس روی 100% زمان بیشتری طول میکشه یا گیر میکنه.
توضیح اتفاقی که میفته به صورت کامل :
اتفاقی که میفته از این قرار هست که هسته لینوکس فایلی که قراره کپی بشه با سرعت بالایی توی بافر حافظه اصلی (RAM) کپی میکنه و سرعت بسیار بالایی داره .
این وسط مدیر فایل وقتی هسته، فایل رو به بافر منتقل کرد فکر میکنه که واقعا فایل توی مقصد کپی شده (ولی در اصل فایل توی بافر (RAM) کپی شده و فایل منیجر سعی میکنه کپی کردن رو کنسل کنه !!! ولی هسته داره فایل رو از بافر به هارد یا یو اس بی کپی میکنه و فایل منیجر چاره ای نداره جز اینکه هنگ کنه و منتظر سیگنال هسته باشه و دقیقا بعد از اینکه هسته لینوکس کپی کردن رو تموم میکنه فایل منیجر هم تموم پنجره رو میبنده .
اتفاقی که میفته این هست که پیشروی کپی کردن رو به صورت ریل تایم نمیبینی ...!!!
راه حل هم داره .
راه حل این مشکل :
راه حل این هست که فضای بافر برای این عملیات رو محدود کرد به یک رقم خاص که هسته بعد از پر شدن این فضا دیتا رو روی مقصد رایت کنه
این فایل رو باید توی این مسیر ایجاد کرد :
و داخل این فایل این کامند رو گذاشت:
خب حالا این کامند چیه؟
این عدد به بایت هست و مقداری رو مشخص میکنه که هسته بعد از این رقم بافر دیتارو رایت کنه توی مقصد و پیشروی هم گام به گام با کپی نشون داده بشه .
حتما بعد از کانفینگ یک بار ریستارت کنید سیستم رو
🔅@LinFAQ
🔅@LinAcademy
دستهبندی: #آموزشی #کاربردی
بحث راجب این بود که چرا فایلی رو داریم انتقال میدیم یا کار های دیگه انجام میدیم باهاش توی لینوکس روی 100% زمان بیشتری طول میکشه یا گیر میکنه.
توضیح اتفاقی که میفته به صورت کامل :
اتفاقی که میفته از این قرار هست که هسته لینوکس فایلی که قراره کپی بشه با سرعت بالایی توی بافر حافظه اصلی (RAM) کپی میکنه و سرعت بسیار بالایی داره .
این وسط مدیر فایل وقتی هسته، فایل رو به بافر منتقل کرد فکر میکنه که واقعا فایل توی مقصد کپی شده (ولی در اصل فایل توی بافر (RAM) کپی شده و فایل منیجر سعی میکنه کپی کردن رو کنسل کنه !!! ولی هسته داره فایل رو از بافر به هارد یا یو اس بی کپی میکنه و فایل منیجر چاره ای نداره جز اینکه هنگ کنه و منتظر سیگنال هسته باشه و دقیقا بعد از اینکه هسته لینوکس کپی کردن رو تموم میکنه فایل منیجر هم تموم پنجره رو میبنده .
اتفاقی که میفته این هست که پیشروی کپی کردن رو به صورت ریل تایم نمیبینی ...!!!
راه حل هم داره .
راه حل این مشکل :
راه حل این هست که فضای بافر برای این عملیات رو محدود کرد به یک رقم خاص که هسته بعد از پر شدن این فضا دیتا رو روی مقصد رایت کنه
این فایل رو باید توی این مسیر ایجاد کرد :
etc/sysctl.d/90-dirty.conf
و داخل این فایل این کامند رو گذاشت:
vm.dirty_background_bytes=16777216 vm.dirty_bytes=50331648
خب حالا این کامند چیه؟
این عدد به بایت هست و مقداری رو مشخص میکنه که هسته بعد از این رقم بافر دیتارو رایت کنه توی مقصد و پیشروی هم گام به گام با کپی نشون داده بشه .
حتما بعد از کانفینگ یک بار ریستارت کنید سیستم رو
🔅@LinFAQ
🔅@LinAcademy
👍2👎1🔥1
LinFAQ
راه حل این مشکل :
راه حل موقت برای تست:
این کامند رو یک بار توی ترمینال بزنید
نکته: این راه حل موقتی هست و هربار سیستم بوت میشه باید دوباره بزنید ولی روش کانفینگ دائمی هست
میزان بافر اینجا ۱۵ مگابایت محدود شده .
🔅@LinFAQ
🔅@LinAcademy
این کامند رو یک بار توی ترمینال بزنید
echo 15728640 > /proc/sys/vm/dirty_bytes
نکته: این راه حل موقتی هست و هربار سیستم بوت میشه باید دوباره بزنید ولی روش کانفینگ دائمی هست
میزان بافر اینجا ۱۵ مگابایت محدود شده .
🔅@LinFAQ
🔅@LinAcademy
🥰1