| LF(1) | DOCUMENTATION | LF(1) |
نام (NAME)
lf - مدیر فایل متنی و ترمینالی
خلاصه دستور (SYNOPSIS)
lf [-command command] [-config path] [-cpuprofile path] [-doc] [-help] [-last-dir-path path] [-log path] [-memprofile path] [-print-last-dir] [-print-selection] [-remote command] [-selection-path path] [-server] [-single] [-version] [cd-or-select-path]
توضیحات (DESCRIPTION)
lf یک مدیر فایل قدرتمند برای محیط خط فرمان و ترمینال است.
کد منبع این برنامه در مخزن گیت به نشانی زیر در دسترس است: https://github.com/gokcehan/lf
این مستندات را میتوان درون ترمینال با اجرای دستور lf -doc یا به صورت آنلاین در نشانی زیر مطالعه کرد: https://github.com/gokcehan/lf/blob/master/doc.md همچنین میتوانید از دستور help (بهطور پیشفرض <f-1>) درون lf برای مشاهده مستندات در یک صفحهبند (pager) استفاده کنید. صفحه راهنمایی (man page) با همین محتوا نیز در مخزن پروژه موجود است: https://github.com/gokcehan/lf/blob/master/lf.1
گزینهها (OPTIONS)
آرگومانهای موضعی (POSITIONAL ARGUMENTS)
- cd-or-select-path
- مکان شروع را تعیین میکند. اگر path یک پوشه باشد، برنامه در همان پوشه اجرا میشود. اگر یک فایل باشد، برنامه در پوشه والد آن باز شده و فایل مورد نظر به حالت انتخاب درمیآید. چنانچه هیچ path مشخص نشود، lf از پوشه جاری استفاده میکند. تنها یک آرگومان پذیرفته میشود.
گزینههای متا (META OPTIONS)
راهاندازی و پیکربندی (STARTUP & CONFIGURATION)
- -command command
- اجرای command در هنگام مقداردهی اولیه کلاینت (یعنی پس از خواندن پیکربندی و پیش از on-init). برای اجرای بیش از یک دستور، میتوانید سوییچ -command را چند بار به کار ببرید یا چندین دستور را به کمک «;» زنجیره کنید.
- -config path
- استفاده از فایل پیکربندی در مسیر path به جای مسیرهای پیشفرض جستجو. این گزینه فقط مشخص میکند که کدام فایل lfrc در زمان راهاندازی خوانده شود.
یکپارچهسازی با شل (SHELL INTEGRATION)
- -print-last-dir
- چاپ آخرین پوشه بازدیدشده در خروجی استاندارد (stdout) هنگام خروج از lf. این ویژگی برای تغییر پوشه کاری شل توسط lf کاربرد دارد. برای جزئیات بیشتر به بخش CHANGING DIRECTORY مراجعه کنید.
- -last-dir-path path
- مشابه -print-last-dir، اما مسیر پوشه را به جای خروجی استاندارد در فایل path ذخیره میکند.
- -print-selection
- چاپ فایلهای انتخابشده در خروجی استاندارد هنگام باز کردن یک فایل در lf. این گزینه برای استفاده از lf به عنوان دیالوگ انتخاب فایل (open file) کاربرد دارد. ابتدا فایلهای مورد نظرتان را برای ارسال به برنامهای دیگر انتخاب کنید. سپس با فشردن کلید باز کردن فایل، انتخاب را تایید نمایید. این کار باعث خروج از lf و چاپ موارد انتخابشده در خروجی میشود. خروج زودهنگام از lf انتخابها را لغو خواهد کرد.
- -selection-path path
- مشابه -print-selection، اما فهرست جداشده با خط جدید را به جای خروجی استاندارد در path مینویسد.
سرور (SERVER)
- -remote command
- ارسال command به سرور در حال اجرا (مانند send، query، list، quit یا quit!). برای اطلاعات بیشتر به بخش REMOTE COMMANDS مراجعه کنید.
- -server
- راهاندازی صریح فرآیند سرور (بدون رابط کاربری متنی). سرور در پیشزمینه اجرا شده و گزارشها را به خطای استاندارد (یا فایل مشخصشده با -log) ارسال میکند. کلاینتها در صورت در دسترس نبودن سرور، به طور خودکار آن را اجرا میکنند مگر اینکه از -single استفاده شود.
- -single
- راهاندازی یک کلاینت مستقل بدون سرور. کنترل از راه دور (remote control) در این حالت غیرفعال خواهد بود.
عیبیابی (DIAGNOSTICS)
- -log path
- افزودن لاگهای زمان اجرا به فایل path.
- -cpuprofile path
- نوشتن پروفایل پردازنده (CPU profile) در مسیر path. این پروفایل از طریق go tool pprof قابل تحلیل است.
- -memprofile path
- نوشتن پروفایل حافظه (memory profile) در مسیر path. این پروفایل از طریق go tool pprof قابل تحلیل است.
مثالها (EXAMPLES)
استفاده از lf برای انتخاب فایلها (همراه با مخفیسازی برخی فرمتهای فایل):
-
lf -command 'set nohidden' -command 'set hiddenfiles "*mp4:*pdf:*txt"' -print-selection
یک دیالوگ پیشرفته برای «انتخاب فایل» با چیدمان و ظاهر سفارشی:
-
lf -command 'set nopreview; set ratios 1; set drawbox; set promptfmt "Select files [%w] %S q: cancel, l: confirm"' -print-selection
باز کردن پوشه Downloads و تنظیم sortby و info بر اساس تاریخ ایجاد:
-
lf -command 'set sortby btime; set info btime' ~/Downloads
جلوگیری موقت از ثبت دستورات در تاریخچه توسط lf:
-
lf -command 'set nohistory'
استفاده از پیکربندی پیشفرض و ثبت لاگ نشست جاری:
-
lf -config /dev/null -log /tmp/lf.log
خروج اجباری از سرور:
-
lf -remote 'quit!'
تنظیم پوشه کاری جاری شل مطابق با پوشه خروجی lf:
-
cd "$(lf -print-last-dir)"
مرجع سریع (QUICK REFERENCE)
دستورات زیر توسط lf ارائه شدهاند:
-
quit (default 'q') up (default 'k' and '<up>') half-up (default '<c-u>') page-up (default '<c-b>' and '<pgup>') scroll-up (default '<c-y>') down (default 'j' and '<down>') half-down (default '<c-d>') page-down (default '<c-f>' and '<pgdn>') scroll-down (default '<c-e>') updir (default 'h' and '<left>') open (default 'l' and '<right>') jump-next (default ']') jump-prev (default '[') top (default 'gg' and '<home>') bottom (default 'G' and '<end>') high (default 'H') middle (default 'M') low (default 'L') toggle invert (default 'v') unselect (default 'u') glob-select glob-unselect copy (default 'y') cut (default 'd') paste (default 'p') clear (default 'c') sync draw redraw (default '<c-l>') load reload (default '<c-r>') delete (modal) rename (modal) (default 'r') read (modal) (default ':') shell (modal) (default '$') shell-pipe (modal) (default '%') shell-wait (modal) (default '!') shell-async (modal) (default '&') find (modal) (default 'f') find-back (modal) (default 'F') find-next (default ';') find-prev (default ',') search (modal) (default '/') search-back (modal) (default '?') search-next (default 'n') search-prev (default 'N') filter (modal) setfilter mark-save (modal) (default 'm') mark-load (modal) (default "'") mark-remove (modal) (default '"') tag tag-toggle (default 't') echo echomsg echoerr cd select source push addcustominfo calcdirsize clearmaps tty-write visual (default 'V')
دستورات حالت بصری (Visual mode) زیر توسط lf ارائه شدهاند:
-
visual-accept (default 'V') visual-unselect visual-discard (default '<esc>') visual-change (default 'o')
دستورات حالت خط فرمان (Command-line mode) زیر توسط lf ارائه شدهاند:
-
cmd-insert cmd-escape (default '<esc>') cmd-complete (default '<tab>') cmd-menu-complete cmd-menu-complete-back cmd-menu-accept cmd-menu-discard cmd-enter (default '<c-j>' and '<enter>') cmd-interrupt (default '<c-c>') cmd-history-next (default '<c-n>' and '<down>') cmd-history-prev (default '<c-p>' and '<up>') cmd-left (default '<c-b>' and '<left>') cmd-right (default '<c-f>' and '<right>') cmd-home (default '<c-a>' and '<home>') cmd-end (default '<c-e>' and '<end>') cmd-delete (default '<c-d>' and '<delete>') cmd-delete-back (default '<backspace>') cmd-delete-home (default '<c-u>') cmd-delete-end (default '<c-k>') cmd-delete-unix-word (default '<c-w>') cmd-yank (default '<c-y>') cmd-transpose (default '<c-t>') cmd-transpose-word (default '<a-t>') cmd-word (default '<a-f>') cmd-word-back (default '<a-b>') cmd-delete-word (default '<a-d>') cmd-delete-word-back (default '<a-backspace>') cmd-capitalize-word (default '<a-c>') cmd-uppercase-word (default '<a-u>') cmd-lowercase-word (default '<a-l>')
گزینههای زیر میتوانند برای سفارشیسازی رفتار lf استفاده شوند:
-
anchorfind bool (default true) autoquit bool (default true) borderfmt string (default "\033[0m") borderstyle string (default 'box') cleaner string (default '') copyfmt string (default "\033[7;33m") cursoractivefmt string (default "\033[7m") cursorparentfmt string (default "\033[7m") cursorpreviewfmt string (default "\033[4m") cutfmt string (default "\033[7;31m") dircounts bool (default false) dirfirst bool (default true) dironly bool (default false) dirpreviews bool (default false) drawbox bool (default false) dupfilefmt string (default '%f.~%n~') errorfmt string (default "\033[7;31;47m") filesep string (default "\n") filtermethod string (default 'text') findlen int (default 1) hidden bool (default false) hiddenfiles []string (default '.*' for Unix and '' for Windows) history bool (default true) icons bool (default false) ifs string (default '') ignorecase bool (default true) ignoredia bool (default true) incfilter bool (default false) incsearch bool (default false) info []string (default '') infotimefmtnew string (default 'Jan _2 15:04') infotimefmtold string (default 'Jan _2 2006') menufmt string (default "\033[0m") menuheaderfmt string (default "\033[1m") menuselectfmt string (default "\033[7m") mergeindicators bool (default false) mouse bool (default false) number bool (default false) numbercursorfmt string (default '') numberfmt string (default "\033[33m") period int (default 0) preload bool (default false) preserve []string (default "mode") preview bool (default true) previewer string (default '') promptfmt string (default "\033[32;1m%u@%h\033[0m:\033[34;1m%d\033[0m\033[1m%f\033[0m") ratios []int (default '1:2:3') relativenumber bool (default false) reverse bool (default false) rulerfile string (default "") rulerfmt string (default "") scrolloff int (default 0) searchmethod string (default 'text') selectfmt string (default "\033[7;35m") selmode string (default 'all') shell string (default 'sh' for Unix and 'cmd' for Windows) shellflag string (default '-c' for Unix and '/c' for Windows) shellopts []string (default '') showbinds bool (default true) sizeunits string (default 'binary') smartcase bool (default true) smartdia bool (default false) sortby string (default 'natural') sortignorecase bool (default true) sortignoredia bool (default true) statfmt string (default "\033[36m%p\033[0m| %c| %u| %g| %S| %t| -> %l") tabstop int (default 8) tagfmt string (default "\033[31m") tempmarks string (default '') terminalcursor string (default 'default') timefmt string (default 'Mon Jan _2 15:04:05 2006') truncatechar string (default '~') truncatepct int (default 100) visualfmt string (default "\033[7;36m") waitmsg string (default 'Press any key to continue') watch bool (default false) wrapscan bool (default true) wrapscroll bool (default false) user_{option} string (default none)
متغیرهای محیطی زیر برای دستورات شل در دسترس هستند:
-
f fs fv fx id PWD OLDPWD LF_LEVEL OPENER VISUAL EDITOR PAGER SHELL lf lf_{option} lf_user_{option} lf_flag_{flag} lf_width lf_height lf_count lf_mode
دستورات شل ویژه زیر در صورت تعریف شدن، برای شخصیسازی رفتار lf استفاده میشوند:
-
open paste rename delete pre-cd on-cd on-load on-focus-gained on-focus-lost on-init on-select on-redraw on-quit
دستورات و کلیدهای میانبر زیر به طور پیشفرض تعریف شدهاند:
-
Unix cmd open &$OPENER "$f" map e $$EDITOR "$f" map i $$PAGER "$f" map w $$SHELL cmd help $$lf -doc | $PAGER map <f-1> help cmd maps $lf -remote "query $id maps" | $PAGER cmd nmaps $lf -remote "query $id nmaps" | $PAGER cmd vmaps $lf -remote "query $id vmaps" | $PAGER cmd cmaps $lf -remote "query $id cmaps" | $PAGER cmd cmds $lf -remote "query $id cmds" | $PAGER Windows cmd open &%OPENER% %f% map e $%EDITOR% %f% map i !%PAGER% %f% map w $%SHELL% cmd help !%lf% -doc | %PAGER% map <f-1> help cmd maps !%lf% -remote "query %id% maps" | %PAGER% cmd nmaps !%lf% -remote "query %id% nmaps" | %PAGER% cmd vmaps !%lf% -remote "query %id% vmaps" | %PAGER% cmd cmaps !%lf% -remote "query %id% cmaps" | %PAGER% cmd cmds !%lf% -remote "query %id% cmds" | %PAGER%
تنظیمات پیشفرض برای ویندوز از نگارش cmd استفاده میکنند. یک فایل پیکربندی سازگار با PowerShell در نشانی زیر در دسترس است: https://github.com/gokcehan/lf/blob/master/etc/lfrc.ps1.example
کلیدهای میانبر تکمیلی زیر نیز به طور پیشفرض ارائه شدهاند:
-
map zh set hidden! map zr set reverse! map zn set info map zs set info size map zt set info time map za set info size:time map sn :set sortby natural; set info map ss :set sortby size; set info size map st :set sortby time; set info time map sa :set sortby atime; set info atime map sb :set sortby btime; set info btime map sc :set sortby ctime; set info ctime map se :set sortby ext; set info map gh cd ~ nmap <space> :toggle; down
در صورتی که گزینه mouse فعال باشد، دکمههای ماوس کارکردهای پیشفرض زیر را خواهند داشت:
-
Left mouse button Click on a file or directory to select it. Right mouse button Enter a directory or open a file. Also works on the preview pane. Scroll wheel Move up or down. If Ctrl is pressed, scroll up or down.
پیکربندی (CONFIGURATION)
فایلهای پیکربندی باید در مسیرهای زیر قرار گیرند:
-
OS system-wide user-specific Unix /etc/lf/lfrc ~/.config/lf/lfrc Windows C:\ProgramData\lf\lfrc C:\Users\<user>\AppData\Roaming\lf\lfrc
فایل رنگها (colors) باید در مسیرهای زیر قرار گیرد:
-
OS system-wide user-specific Unix /etc/lf/colors ~/.config/lf/colors Windows C:\ProgramData\lf\colors C:\Users\<user>\AppData\Roaming\lf\colors
فایل آیکونها (icons) باید در مسیرهای زیر قرار گیرد:
-
OS system-wide user-specific Unix /etc/lf/icons ~/.config/lf/icons Windows C:\ProgramData\lf\icons C:\Users\<user>\AppData\Roaming\lf\icons
فایل موارد انتخابشده (selection) در مسیرهای زیر ذخیره میشود:
-
Unix ~/.local/share/lf/files Windows C:\Users\<user>\AppData\Local\lf\files
فایل نشانکها (marks) در مسیرهای زیر قرار میگیرد:
-
Unix ~/.local/share/lf/marks Windows C:\Users\<user>\AppData\Local\lf\marks
فایل تگها (tags) در مسیرهای زیر قرار میگیرد:
-
Unix ~/.local/share/lf/tags Windows C:\Users\<user>\AppData\Local\lf\tags
فایل تاریخچه (history) در مسیرهای زیر نگهداری میشود:
-
Unix ~/.local/share/lf/history Windows C:\Users\<user>\AppData\Local\lf\history
میتوانید این مسیرها را با استفاده از متغیرهای زیر که بر اساس اولویت و مقادیر پیشفرض فهرست شدهاند تنظیم کنید:
-
Unix $LF_CONFIG_HOME $XDG_CONFIG_HOME ~/.config $LF_DATA_HOME $XDG_DATA_HOME ~/.local/share Windows %LF_CONFIG_HOME% %XDG_CONFIG_HOME% %APPDATA% %LF_DATA_HOME% %XDG_DATA_HOME% %LOCALAPPDATA%
یک نمونه فایل پیکربندی در نشانی زیر در دسترس است: https://github.com/gokcehan/lf/blob/master/etc/lfrc.example
دستورات (COMMANDS)
این بخش اطلاعات مربوط به دستورات توکار (built-in) را ارائه میدهد. دستورات حالتی (Modal commands) هیچ آرگومانی نمیپذیرند، بلکه حالت عملکرد را تغییر میدهند تا ورودی را به سادگی دریافت کنند، بنابراین برای انتساب به کلیدهای میانبر طراحی شدهاند.
quit (default q)
خروج از lf و بازگشت به خط فرمان شل.
up (default k and <up>), half-up (default <c-u>), page-up (default <c-b> and <pgup>), scroll-up (default <c-y>), down (default j and <down>), half-down (default <c-d>), page-down (default <c-f> and <pgdn>), scroll-down (default <c-e>)
حرکت یا پیمایش انتخاب فایل جاری به سمت بالا یا پایین به اندازه یک خط، نیم صفحه یا یک صفحه کامل.
updir (default h and <left>)
تغییر پوشه کاری جاری به پوشه والد (یک سطح بالاتر).
open (default l and <right>)
اگر فایل جاری یک پوشه باشد، پوشه کاری به آن تغییر میکند؛ در غیر این صورت، دستور open اجرا میشود. یک دستور پیشفرض open برای فراخوانی ناهمگام ابزار بازکننده پیشفرض سیستم همراه با فایل جاری تعبیه شده است. میتوان دستور open سفارشی برای تغییر این رفتار پیشفرض تعریف کرد.
jump-next (default ]), jump-prev (default [)
تغییر پوشه کاری جاری به مورد بعدی یا قبلی در فهرست پرش (jumplist).
top (default gg and <home>), bottom (default G and <end>)
انتقال نشانگر انتخاب فایل به ابتدای یا انتهای پوشه. میتوان یک شمارنده برای رفتن به سطری مشخص تعیین کرد؛ مثلاً از 3G برای رفتن به سطر سوم استفاده کنید.
high (default H), middle (default M), low (default L)
انتقال نشانگر انتخاب فایل به بالای صفحه، وسط صفحه یا پایین صفحه نمایش.
toggle
تغییر وضعیت انتخاب برای فایل جاری یا فایلهای مشخصشده به عنوان آرگومان.
invert (default v)
معکوس کردن وضعیت انتخاب تمام فایلهای موجود در پوشه جاری (یعنی اجرای toggle روی همه فایلها). فایلهای انتخابشده در سایر پوشهها با این دستور تغییری نمیکنند. میتوانید با ترکیب invert و unselect دستور جدیدی برای انتخاب تمامی فایلها بسازید (مانند cmd select-all :unselect; invert)، هرچند این کار انتخابهای سایر پوشهها را نیز پاک میکند.
unselect (default u)
لغو انتخاب تمام فایلها در همه پوشهها.
glob-select, glob-unselect
انتخاب یا لغو انتخاب فایلهایی که با الگوی گلوب دادهشده تطابق دارند.
copy (default y)
ذخیره مسیر فایلهای انتخابشده در کلیپبورد به عنوان فایلهای آماده کپی. اگر هیچ فایلی انتخاب نشده باشد، مسیر فایل جاری استفاده میشود.
cut (default d)
ذخیره مسیر فایلهای انتخابشده در کلیپبورد به عنوان فایلهای آماده انتقال (Move). اگر هیچ فایلی انتخاب نشده باشد، مسیر فایل جاری استفاده میشود.
paste (default p)
کپی یا انتقال فایلهای موجود در کلیپبورد به پوشه کاری جاری. امکان تعریف دستور paste سفارشی برای تغییر این رفتار پیشفرض وجود دارد.
clear (default c)
پاک کردن مسیرهای فایل ذخیرهشده در کلیپبورد.
sync
همگامسازی فایلهای کپی یا بریدهشده با سرور. این دستور در صورت نیاز به طور خودکار فراخوانی میشود.
draw
رسم مجدد صفحه نمایش. این دستور در صورت نیاز به طور خودکار فراخوانی میشود.
redraw (default <c-l>)
همگامسازی ترمینال و بازطراحی کامل صفحه.
load
بارگذاری فایلها و پوشههای تغییر یافته. این دستور هنگام نیاز به صورت خودکار اجرا میشود.
reload (default <c-r>)
تخلیه حافظه موقت (cache) و بارگذاری مجدد کلیه فایلها و پوشهها.
delete (modal)
حذف فایل جاری یا فایلهای انتخابشده. میتوان با تعریف دستور delete سفارشی رفتار پیشفرض را تغییر داد.
rename (modal) (default r)
تغییر نام فایل جاری با استفاده از روش داخلی برنامه. میتوان دستور سفارشی rename برای لغو این رفتار پیشفرض تعریف کرد.
read (modal) (default :)
خواندن یک دستور برای ارزیابی و اجرا.
shell (modal) (default $)
دریافت یک دستور شل برای اجرا.
shell-pipe (modal) (default %)
دریافت یک دستور شل برای اجرا به گونهای که ورودی/خروجی استاندارد آن به خط وضعیت پایینی متصل شود.
shell-wait (modal) (default !)
دریافت یک دستور شل برای اجرا و توقف تا زمان فشردن یک کلید پس از پایان.
shell-async (modal) (default &)
دریافت یک دستور شل برای اجرای ناهمگام و در پسزمینه بدون ورودی/خروجی استاندارد.
find (modal) (default f), find-back (modal) (default F), find-next (default ;), find-prev (default ,)
دریافت کلید(ها) برای یافتن نام فایل منطبق در جهت جلو یا عقب و پرش به مورد منطبق بعدی یا قبلی.
search (default /), search-back (default ?), search-next (default n), search-prev (default N)
دریافت یک الگو برای جستجوی نام فایل در جهت جلو یا عقب و پرش به نتیجه بعدی یا قبلی.
filter (modal), setfilter
دستور filter الگویی را دریافت میکند تا فایلها را فیلتر کرده و تنها موارد منطبق را نمایش دهد. دستور setfilter عملکرد مشابهی دارد اما الگو را از طریق آرگومان دریافت کرده و بلافاصله اعمال میکند. میتوانید آرگومانی به filter ارسال کنید تا به عنوان متن ابتدایی پرامپت قرار گیرد.
mark-save (modal) (default m)
ذخیره پوشه جاری به عنوان نشانک (bookmark) منتسب به کلید مشخصشده.
mark-load (modal) (default ')
تغییر پوشه جاری به نشانک منتسب به کلید دادهشده. نشانک ویژه ' پوشه قبلی را پس از اجرای دستورات mark-load، cd یا select نگه میدارد.
mark-remove (modal) (default ")
حذف نشانک منتسب به کلید دادهشده.
tag
تگگذاری یک فایل با علامت * یا یک نویسه تکعرضی مشخصشده در آرگومان. میتوانید با ترکیب tag با tag-toggle دستور جدیدی برای پاک کردن تگها تعریف کنید (مانند cmd tag-clear :tag; tag-toggle).
tag-toggle (default t)
تگگذاری یک فایل با * یا نویسه دادهشده در صورتی که فایل تگ نداشته باشد؛ در غیر این صورت تگ حذف میشود.
echo
چاپ آرگومانهای دادهشده در خط پیام در پایین صفحه.
echomsg
چاپ آرگومانهای دادهشده در خط پیام در پایین صفحه و همچنین ذخیره در فایل لاگ.
echoerr
چاپ آرگومانهای دادهشده در خط پیام در پایین با فرمت errorfmt و همچنین ثبت در فایل لاگ.
cd
تغییر پوشه کاری به مسیر مشخصشده در آرگومان.
select
تغییر انتخاب فایل جاری به مورد دادهشده در آرگومان.
source
خواندن و اعمال فایل پیکربندی مشخصشده در آرگومان.
push
شبیهسازی فشردن کلیدهای دادهشده در آرگومان.
addcustominfo
بهروزرسانی اطلاعات سفارشی (custom) و فیلد .Stat.CustomInfo برای فایل دادهشده با رشته مشخصشده. این رشته میتواند شامل کدهای فرار ANSI برای سفارشیسازی ظاهر متن باشد. اگر اطلاعاتی مشخص نشود، اطلاعات سفارشی فایل پاک خواهد شد.
calcdirsize
محاسبه حجم کل برای تکتک پوشههای انتخابشده. گزینه info باید شامل size بوده و گزینه dircounts باید غیرفعال باشد تا این اندازه نمایش داده شود. اگر حجم کل یک پوشه محاسبه نشده باشد، با علامت - نشان داده میشود.
clearmaps
حذف تمامی میانبرهای کلیدی منتسب به دستورات map، nmap و vmap. این دستور را میتوان در فایل پیکربندی برای حذف کلیدهای میانبر پیشفرض قرار داد. به دلایل امنیتی، کلید : همچنان به دستور read متصل میماند و میانبرهای cmap حفظ میشوند تا خروج از lf با :quit همواره امکانپذیر باشد.
tty-write
نوشتن رشته دادهشده در tty. این دستور برای ارسال دنبالههای فرار (escape sequences) به ترمینال جهت کنترل رفتار آن مفید است (مانند OSC 0 برای تنظیم عنوان پنجره). استفاده از tty-write به نوشتن مستقیم در /dev/tty ارجحیت دارد؛ زیرا دومی همگامسازینشده است و میتواند در رسم رابط کاربری تداخل ایجاد کند.
visual (default V)
جابجایی به حالت بصری (Visual mode). اگر هماکنون در حالت بصری باشید، انتخاب بصری لغو شده و در همین حالت باقی میماند.
دستورات حالت بصری (VISUAL MODE COMMANDS)
visual-accept (default V)
افزودن انتخاب بصری به فهرست انتخابها، خروج از حالت بصری و بازگشت به حالت عادی.
visual-unselect
حذف انتخاب بصری از فهرست انتخابها، خروج از حالت بصری و بازگشت به حالت عادی.
visual-discard (default <esc>)
لغو انتخاب بصری، خروج از حالت بصری و بازگشت به حالت عادی.
visual-change (default o)
رفتن به انتهای دیگرِ محدوده انتخاب در حالت بصری جاری.
دستورات حالت خط فرمان (COMMAND-LINE MODE COMMANDS)
نویسه اعلان (prompt) مشخص میکند که در کدامیک از چندین حالت خط فرمان قرار دارید. برای مثال، دستور read شما را به حالت : میبرد.
هنگامی که نشانگر روی نویسه اول در حالت : قرار دارد، فشردن یکی از کلیدهای !، $، % یا & شما را به حالت مربوطه منتقل میکند. میتوانید با دستور cmd-delete-back (به طور پیشفرض <backspace>) به حالت قبلی بازگردید.
دستورات خط فرمان عمدتاً با کلیدهای میانبر readline سازگار هستند. منظور از یک نویسه، یک کدپوینت یونیکد است؛ یک کلمه شامل حروف و ارقام بوده و یک کلمه یونیکسی شامل هرگونه نویسه غیرخالی است.
cmd-insert
درج نویسه مشخصشده در آرگومان. این دستور در صورت نیاز به طور خودکار فراخوانی میشود.
cmd-escape (default <esc>)
خروج از حالت خط فرمان و بازگشت به حالت عادی.
cmd-complete (default <tab>)
تکمیل خودکار کلمه جاری.
cmd-menu-complete, cmd-menu-complete-back
تکمیل خودکار کلمه جاری از طریق منوی انتخاب. لازم است کلیدهایی برای این دستورات تعریف کنید (مانند cmap <tab> cmd-menu-complete; cmap <backtab> cmd-menu-complete-back). میتوانید از کلیدهای اختصاصیافته برای نمایش منو و سپس پیمایش میان گزینههای تکمیل استفاده کنید.
cmd-menu-accept
تایید گزینه انتخابشده فعلی در منوی تکمیل خودکار و بستن منو.
cmd-menu-discard
لغو گزینه انتخابشده فعلی در منوی تکمیل خودکار و بستن منو.
cmd-enter (default <c-j> and <enter>)
اجرای خط جاری.
cmd-interrupt (default <c-c>)
قطع دستور شل جاری در حال پایپ و بازگشت به حالت عادی.
cmd-history-next (default <c-n> and <down>), cmd-history-prev (default <c-p> and <up>)
رفتن به مدخل بعدی یا قبلی در تاریخچه دستورات. چنانچه بخشی از دستور تایپ شده باشد، تنها موارد منطبق در نظر گرفته میشوند و موارد تکراری متوالی رد خواهند شد.
cmd-left (default <c-b> and <left>), cmd-right (default <c-f> and <right>)
حرکت نشانگر به سمت چپ یا راست.
cmd-home (default <c-a> and <home>), cmd-end (default <c-e> and <end>)
انتقال نشانگر به ابتدا یا انتهای خط.
cmd-delete (default <c-d> and <delete>)
حذف نویسه بعدی.
cmd-delete-back (default <backspace>)
حذف نویسه قبلی. در ابتدای اعلان، برنامه به حالت عادی یا حالت : بازمیگردد.
cmd-delete-home (default <c-u>), cmd-delete-end (default <c-k>)
حذف تمام متن تا ابتدا یا انتهای خط.
cmd-delete-unix-word (default <c-w>)
حذف کلمه یونیکسی قبلی.
cmd-yank (default <c-y>)
چسباندن (paste) محتوای بافر حاوی آخرین مورد حذفشده.
cmd-transpose (default <c-t>)
جابجا کردن نویسههای قبل و بعد از نشانگر و حرکت نشانگر به جلو. اگر نویسهای پس از نشانگر نباشد، دو نویسه قبلی جابجا میشوند.
cmd-transpose-word (default <a-t>)
جابجا کردن کلمات قبل و بعد از نشانگر و حرکت نشانگر به جلو. اگر کلمهای پس از نشانگر نباشد، دو کلمه قبلی جابجا میشوند.
cmd-word (default <a-f>), cmd-word-back (default <a-b>)
حرکت نشانگر به اندازه یک کلمه به جلو یا عقب.
cmd-delete-word (default <a-d>)
حذف کلمه بعدی در جهت جلو.
cmd-delete-word-back (default <a-backspace>)
حذف کلمه قبلی در جهت عقب.
cmd-capitalize-word (default <a-c>), cmd-uppercase-word (default <a-u>), cmd-lowercase-word (default <a-l>)
تبدیل حرف اول به بزرگ / تبدیل کل کلمه به حروف بزرگ / تبدیل به حروف کوچک برای کلمه جاری و پرش به کلمه بعدی.
تنظیمات (SETTINGS)
این بخش اطلاعات مربوط به گزینههای سفارشیسازی رفتار برنامه را ارائه میدهد. نویسه : به عنوان جداکننده در گزینههای فهرستی از نوع []int و []string به کار میرود.
anchorfind (bool) (default true)
هنگامی که این گزینه فعال باشد، دستور find الگوها را از ابتدای نام فایلها تطبیق میدهد؛ در غیر این صورت، تطبیق میتواند از هر جای نام فایل انجام شود.
autoquit (bool) (default true)
خروج خودکار از سرور هنگامی که هیچ کلاینتی متصل نمانده باشد.
borderfmt (string) (default \033[0m)
رشته قالببندی نویسههای کادر و حاشیه.
borderstyle (string) (default box)
سبک حاشیهبندی مورد استفاده توسط drawbox.
سبکهای زیر پشتیبانی میشوند:
-
box کادر دور تمام پنجرهها و جداکننده بین آنها roundbox مشابه box اما با گوشههای گرد بیرونی outline کادر دور تمام پنجرهها roundoutline مشابه outline با گوشههای گرد بیرونی separators تنها خطوط جداکننده بین پنجرهها
cleaner (string) (default ``) (not called if empty)
تنظیم مسیر فایل پاککننده پیشنمایش (cleaner). این فایل باید دسترسی اجرایی داشته باشد. در صورتی که پیشنمایش فعال باشد، اسکریپت previewer تنظیم شده باشد، و حافظه موقت فایل انتخابی قبلی غیرفعال شده باشد، این فایل اجرا خواهد شد. آرگومانهای زیر به ترتیب به فایل ارسال میشوند: (1) نام فایل جاری، (2) عرض، (3) ارتفاع، (4) موقعیت افقی، (5) موقعیت عمودی پنجره پیشنمایش و (6) نام فایل بعدی که باید پیشنمایش شود. در صورتی که این گزینه خالی رها شود، پاکسازی پیشنمایش غیرفعال خواهد بود.
copyfmt (string) (default \033[7;33m)
رشته قالببندی نشانگر فایلهای آماده برای کپی.
cursoractivefmt (string) (default \033[7m), cursorparentfmt (string) (default \033[7m), cursorpreviewfmt (string) (default \033[4m)
رشتههای قالببندی برای برجستهسازی نشانگر. cursoractivefmt در پنجره پوشه جاری، cursorparentfmt در پنجرههای والد، و cursorpreviewfmt در پنجرههای پیشنمایش پوشهها اعمال میشود.
حالت پیشفرض این است که نشانگر فعال و نشانگر پوشه والد به صورت رنگ معکوس (inverted) باشند. نشانگر پیشنمایش نیز زیرخطدار (underlined) نمایش داده میشود.
حالتهای دیگری که میتوان برای نشانگر والد یا پیشنمایش در نظر گرفت: یک رشته خالی برای عدم نمایش نشانگر، \033[7;2m برای متن کمنور با رنگ معکوس، و \033[7;90m برای متن معکوس با پسزمینه خاکستری.
اگر رشته قالب شامل نویسههای %s باشد، به عنوان رشته قالب برای fmt.Sprintf در نظر گرفته میشود. چنین رشتهای باید با دنباله بازنشانی ترمینال پایان یابد. برای مثال، \033[4m%s\033[0m اثری مشابه با \033[4m خواهد داشت.
cutfmt (string) (default \033[7;31m)
رشته قالببندی نشانگر فایلهای بریدهشده (cut).
dircounts (bool) (default false)
هنگامی که این گزینه فعال باشد، اندازه پوشهها تعداد اقلام درون آنها را به جای حجم کل نشان میدهد (که باید به ازای هر پوشه با calcdirsize محاسبه شود). این اطلاعات از طریق خواندن پوشه و شمارش اقلام درون آن به دست میآید؛ بنابراین به دلایل کارایی و عملکرد به طور پیشفرض غیرفعال است. این گزینه تنها زمانی اثرگذار است که info شامل فیلد size باشد و عرض پنجره برای نمایش آن کافی باشد. حداکثر ۹۹۹۹ قلم در هر پوشه شمرده میشود و پوشههای بزرگتر به صورت 9999+ نمایش مییابند.
dirfirst (bool) (default true)
نمایش پوشهها بالاتر از فایلهای معمولی. با فعال بودن گزینه dircounts، مرتبسازی بر اساس size همواره بدون توجه به dirfirst، پوشهها و فایلها را از هم تفکیک میکند.
dironly (bool) (default false)
نمایش انحصاری پوشهها و مخفی کردن فایلها.
dirpreviews (bool) (default false)
در صورت فعال بودن، پوشهها نیز به اسکریپت پیشنمایش ارسال میشوند تا امکان ارائه پیشنمایش سفارشی برای پوشهها فراهم شود.
drawbox (bool) (default false)
رسم حاشیه و خطوط کادر دور پنجرهها با استفاده از نویسههای کادرسازی.
dupfilefmt (string) (default %f.~%n~)
رشته قالببندی نام فایل هنگام ایجاد فایلهای تکراری (duplicate). با قالب پیشفرض، کپی کردن فایل abc.txt در همان پوشه منجر به ایجاد فایلی به نام abc.txt.~1~ خواهد شد. متغیرهای جانشین عبارتند از: %f برای نام فایل، %b برای نام پایه فایل (بدون پسوند)، %e برای پسوند فایل (همراه با نقطه) و %n برای شماره نسخه تکراری.
errorfmt (string) (default \033[7;31;47m)
رشته قالببندی پیامهای خطا که در سطر پیام در پایین صفحه نشان داده میشوند.
اگر این رشته شامل نویسههای %s باشد، به عنوان رشته قالببندی fmt.Sprintf تفسیر میشود و باید با دنباله ریست ترمینال پایان یابد. برای نمونه، \033[4m%s\033[0m تاثیری مشابه با \033[4m دارد.
filesep (string) (default \n)
جداکننده فایلهای مورد استفاده در متغیرهای محیطی fs، fv و fx.
filtermethod (string) (default text)
نحوه ارزیابی و تطبیق الگوهای فیلتر. روشهای پشتیبانیشده فعلی عبارتند از text (رشته متنی ساده)، glob (الگوهای گلوب شل) و regex (عبارات منظم). برای جزئیات بیشتر به بخش SEARCHING FILES مراجعه کنید.
findlen (int) (default 1)
تعداد نویسههای درخواستی در اعلان دستور find. چنانچه این مقدار روی صفر تنظیم شود، دستور find تا زمانی که تنها یک مورد منطبق باقی بماند، به دریافت ورودی ادامه میدهد.
hidden (bool) (default false)
نمایش فایلهای مخفی. در سیستمهای یونیکس، فایلهای مخفی بر مبنای مقدار hiddenfiles تعیین میشوند. در ویندوز، فایلهای دارای صفت مخفی (hidden) نیز به عنوان فایل مخفی محسوب میگردند.
hiddenfiles ([]string) (default .* for Unix and `` for Windows)
فهرستی از الگوهای گلوب برای فایلهای مخفی. الگوها میتوانند به صورت مسیرهای نسبی یا مطلق تعیین شوند. از نویسههای ویژه مرسوم پشتیبانی میشود: * برای تطبیق با هر دنبالهای، ? برای هر نویسه تک، و [...] یا [^...] برای بازهها و مجموعههای کاراکتری. به علاوه، اگر الگویی با ! آغاز شود، موارد منطبق با آن از تعریف فایل مخفی مستثنی خواهند شد. برای افزودن چندین الگو، از : به عنوان جداکننده استفاده کنید. مثال: .*:lost+found:*.bak
history (bool) (default true)
ذخیره تاریخچه دستورات خط فرمان.
icons (bool) (default false)
نمایش آیکون پیش از نام هر قلم در فهرست.
ifs (string) (default ``)
تنظیم متغیر محیطی IFS در دستورات شل. این کار با افزودن مقدار به ابتدای رشته دستور به صورت IFS=...; ... انجام میشود، چرا که متغیر IFS به دلایل امنیتی توسط شل به ارث برده نمیشود. این روش مستلزم ساختار شل POSIX است و ممکن است در سایر شلها با خطا مواجه شود. در صورت خالی بودن این گزینه یا در سیستمعامل ویندوز، تاثیری نخواهد داشت.
ignorecase (bool) (default true)
نادیده گرفتن بزرگی و کوچکی حروف در الگوهای جستجو. گزینه sortignorecase را نیز بررسی کنید.
ignoredia (bool) (default true)
نادیده گرفتن اعراب و نشانههای صوتی (diacritics) در الگوهای جستجو. گزینه sortignoredia را نیز ببینید.
incfilter (bool) (default false)
اعمال الگوی فیلتر همگام با فشردن هر کلید در طول فیلترسازی.
incsearch (bool) (default false)
پرش به نخستین مورد منطبق همزمان با فشردن هر کلید هنگام جستجو.
info ([]string) (default ``)
فهرستی از اطلاعات که برای اقلام پوشه در سمت راست پنجره نمایش داده میشود.
انواع اطلاعات پشتیبانیشده عبارتند از:
-
perm مجوزها و دسترسیهای فایل user نام کاربر مالک group نام گروه مالک size حجم فایل time زمان آخرین ویرایش دادهها atime زمان آخرین دسترسی btime زمان ایجاد فایل ctime زمان آخرین تغییر وضعیت (inode) custom ویژگی سفارشی تعریفشده با addcustominfo
اطلاعات تنها زمانی نمایش داده میشوند که عرض پنجره بیش از دو برابر عرض اطلاعات باشد.
infotimefmtnew (string) (default Jan _2 15:04)
رشته قالببندی زمان فایل در ستون اطلاعات در صورتی که مربوط به سال جاری باشد.
infotimefmtold (string) (default Jan _2 2006)
رشته قالببندی زمان فایل در ستون اطلاعات در صورتی که مربوط به سالهای گذشته باشد.
menufmt (string) (default \033[0m)
رشته قالببندی منو.
menuheaderfmt (string) (default \033[1m)
رشته قالببندی سطر هدر در منو.
menuselectfmt (string) (default \033[7m)
رشته قالببندی قلم انتخابشده فعلی در منو.
mergeindicators (bool) (default false)
با فعال بودن mergeindicators، نشانگرهای تگ و انتخاب در یک ستون واحد رسم میشوند تا فضای خالی قبل از نام فایلها کاسته شود. اگر فایلی هم تگ شده و هم انتخاب شده باشد، نشانگر به جای tagfmt از فرمت انتخاب (مانند copyfmt) استفاده خواهد کرد.
mouse (bool) (default false)
ارسال رویدادهای ماوس به عنوان ورودی به برنامه.
number (bool) (default false)
نمایش شماره ردیف برای اقلام پوشه در سمت چپ پنجره. هنگامی که گزینه relativenumber فعال باشد، تنها سطر جاری موقعیت مطلق را نشان میدهد و برای سایر سطرها موقعیت نسبی نمایش داده میشود.
numberfmt (string) (default \033[33m), numbercursorfmt (string) (default ``)
رشتههای قالببندی برای رنگآمیزی شماره سطرها. numberfmt برای تمام خطوط اعمال میشود. numbercursorfmt برای خط دارای نشانگر اعمال شده و در صورت خالی ماندن به numberfmt بازمیگردد.
period (int) (default 0)
تنظیم فاصله زمانی به ثانیه برای بررسی دورهای بهروزرسانیهای پوشه. این کار با فراخوانی دورهای دستور load صورت میپذیرد. توجه داشته باشید که پوشهها در بسیاری از شرایط از قبل به صورت خودکار بهروزرسانی میشوند. این گزینه زمانی سودمند است که فرآیندی خارجی پوشه در حال نمایش را تغییر میدهد و شما فعالیتی درون lf ندارید. با تنظیم این مقدار روی صفر، بررسیهای دورهای غیرفعال میگردد.
preload (bool) (default false)
امکان تولید پیشاپیش پیشنمایشها با اسکریپت previewer همزمان با پیمایش سیستمفایل توسط کاربر.
preserve ([]string) (default mode)
فهرست صفتهایی که در هنگام کپی کردن فایلها حفظ میشوند. صفتهای پشتیبانیشده فعلی عبارتند از mode (حالت دسترسی) و timestamps (زمان اصلاح و دسترسی). توجه داشته باشید که حفظ صفتهای دیگر مانند مالکیت یا زمان ایجاد فایل گرچه مطلوب است، اما به صورت چندسکویی در زبان Go پشتیبانی نمیشود.
preview (bool) (default true)
نمایش پیشنمایش فایلها و پوشهها در راستترین پنجره برنامه. اگر فایل سطرهای بیشتری نسبت به پنجره پیشنمایش داشته باشد، بقیه سطرها خوانده نمیشوند. فایلها در صورتی باینری محسوب شده و با برچسب binary نمایش داده میشوند که بخش خواندهشده شامل نویسههای کنترلی (به جز بوق، بکاسپیس، تب، خط جدید، تب عمودی، فرمفید، کارتریجریترن، اسکیپ یا دلیت) باشد.
previewer (string) (default ``) (not filtered if empty)
تنظیم مسیر فایل پیشنمایشگر (previewer) برای فیلتر کردن محتوای فایلهای معمولی جهت پیشنمایش. این فایل باید قابل اجرا باشد. آرگومانهای زیر به ترتیب به فایل ارسال میشوند: (1) نام فایل جاری، (2) عرض، (3) ارتفاع، (4) موقعیت افقی، (5) موقعیت عمودی، و (6) حالت اجرای پیشنمایش ("preview" یا "preload"). سیگنال SIGPIPE پس از خواندن سطرهای کافی ارسال میگردد. اگر اسکریپت پیشنمایشگر کد خروجی غیرصفر برگرداند، حافظه کش پیشنمایش برای آن فایل غیرفعال میشود؛ بدین معنا که اگر فایل در آینده دوباره انتخاب شود، اسکریپت یک بار دیگر فراخوانی خواهد شد. در صورت خالی بودن این گزینه، فیلتر پیشنمایش غیرفعال شده و فایلها همانگونه که هستند نمایش داده میشوند. چنانچه گزینه preload فعال باشد، این اسکریپت با حالت preload برای پیشبارگذاری فراخوانی خواهد شد. برای اطلاعات بیشتر در خصوص نحوه پیکربندی پیشنمایشهای سفارشی به بخش PREVIEWING FILES مراجعه کنید.
promptfmt (string) (default \033[32;1m%u@%h\033[0m:\033[34;1m%d\033[0m\033[1m%f\033[0m)
رشته قالببندی اعلان (prompt) در سطر بالایی.
بسطهای ویژه زیر پشتیبانی میشوند:
-
%f نام فایل %h نام میزبان (hostname) %u نام کاربری %w پوشه کاری جاری %d پوشه کاری جاری (همراه با ممیز پایانی) %F فیلتر جاری %S فاصلهگذار برای راستچین کردن بخشهای بعدی (تنها یک بار قابل استفاده است)
پوشه خانگی در بسط پوشه کاری به صورت ~ نمایش داده میشود. هنگامی که اعلان در صفحه جا نشود، نام پوشهها به صورت خودکار از سمت چپترین والد به یک نویسه خلاصه میشوند.
ratios ([]int) (default 1:2:3)
فهرست نسبتهای عرض پنجرهها. تعداد آیتمهای این فهرست، تعداد پنجرههای نمایشدادهشده در رابط کاربری را تعیین میکند. هنگامی که گزینه preview فعال باشد، عدد سمت راست برای عرض پنجره پیشنمایش به کار میرود.
relativenumber (bool) (default false)
نمایش شماره موقعیت به صورت نسبی نسبت به سطر جاری. هنگامی که گزینه number فعال باشد، سطر جاری شماره موقعیت مطلق را نشان داده و برای بقیه موقعیت نسبی نمایش داده میشود.
reverse (bool) (default false)
معکوس کردن جهت مرتبسازی.
rulerfile (string) (default ``)
تعیین مسیر فایل خطکش (ruler). در صورت تعیین نشدن، از الگوی پیشفرض برای خطکش استفاده خواهد شد. برای اطلاعات بیشتر در خصوص نحوه کارکرد این فایل به بخش RULER مراجعه کنید.
rulerfmt (string) (default ``)
رشته قالببندی خطکش نمایشدادهشده در گوشه پایین سمت راست. در صورت تنظیم، به همراه statfmt برای رسم خطکش استفاده شده و rulerfile نادیده گرفته میشود. با این وجود، استفاده از rulerfile ارجح است و این گزینه برای سازگاری با نسخههای پیشین حفظ شده است.
بسطهای ویژه زیر پشتیبانی میشوند:
-
%a کلیدهای فشردهشده %p پیشرفت عملیاتهای فایل %m تعداد فایلهای در حال انتقال (cut) %c تعداد فایلهای در حال کپی %s تعداد فایلهای انتخابشده %v تعداد فایلهای انتخابشده در حالت بصری %t تعداد کل فایلهای نمایشیافته در پوشه جاری %h تعداد فایلهای مخفی در پوشه جاری %f فیلتر جاری %i موقعیت نشانگر %P درصد پیمایش صفحه %d میزان فضای خالی دیسک
بسطهای بیشتری برای متغیرهای محیطی صادرشده توسط lf به شکل %{lf_<name>} (مانند %{lf_selmode}) در دسترس است که برای نمایش تنظیمات فعلی کاربرد دارد. همچنین بسطهایی برای گزینههای سفارشی کاربر به فرم %{lf_user_<name>} (مانند %{lf_user_foo}) ارائه شده است. نویسه | رشته قالب را به بخشهای مجزا تقسیم میکند؛ هر بخشی که بسط ناموفق داشته باشد (نتیجه رشته خالی باشد) حذف شده و نشان داده نمیشود.
scrolloff (int) (default 0)
حداقل تعداد سطرهای حاشیه (offset) که هنگام پیمایش، همواره در بالا و پایین صفحه نگه داشته میشوند. در صورتی که این گزینه روی عددی بزرگتر از نصف خطوط تنظیم شود، سطر جاری همیشه در وسط صفحه میماند.
searchmethod (string) (default text)
نحوه ارزیابی الگوهای جستجو. روشهای پشتیبانیشده عبارتند از text (متن ساده)، glob (الگوهای گلوب شل) و regex (عبارات منظم). برای جزئیات بیشتر به بخش SEARCHING FILES مراجعه فرمایید.
selectfmt (string) (default \033[7;35m)
رشته قالببندی نشانگر فایلهای انتخابشده.
selmode (string) (default all)
حالت انتخاب برای دستورات. با تنظیم روی all، از فایلهای انتخابشده در تمامی پوشهها استفاده میشود. با تنظیم روی dir، فقط فایلهای انتخابشده در پوشه جاری لحاظ میگردند.
shell (string) (default sh for Unix and cmd for Windows)
فایل اجرایی شل برای اجرای دستورات شل. دستورات شل به صورت زیر اجرا میشوند: shell shellopts shellflag command -- arguments.
shellflag (string) (default -c for Unix and /c for Windows)
فلگ خط فرمان شل برای ارسال دستورات.
shellopts ([]string) (default ``)
فهرستی از گزینههای شل برای ارسال به فایل اجرایی شل.
showbinds (bool) (default true)
نمایش کلیدهای متصلشده مرتبط با کلیدهای فشردهشده.
sizeunits (string) (default binary)
تعیین نمایش اندازه فایلها با واحدهای باینری (1K معادل ۱۰۲۴ بایت) یا واحدهای دهدهی (1K معادل ۱۰۰۰ بایت).
smartcase (bool) (default true)
نادیده گرفتن گزینه ignorecase در جستجو هنگام وجود حداقل یک حرف بزرگ انگلیسی در الگو. این گزینه در صورت غیرفعال بودن ignorecase تاثیری ندارد.
smartdia (bool) (default false)
نادیده گرفتن گزینه ignoredia هنگام وجود اعراب یا نشانه صوتی در الگو. در صورت غیرفعال بودن ignoredia تاثیری ندارد.
sortby (string) (default natural)
نوع مرتبسازی پوشهها.
انواع مرتبسازی زیر پشتیبانی میشوند:
-
natural نام فایل به شیوه طبیعی (مثلاً track_2 قبل از track_10 قرار میگیرد) name نام فایل به شیوه الفبایی (track_10 قبل از track_2 قرار میگیرد) ext پسوند فایل size اندازه فایل time زمان آخرین ویرایش محتوا atime زمان آخرین دسترسی btime زمان ایجاد فایل ctime زمان آخرین تغییر وضعیت اینود (inode) custom ویژگی سفارشی تعریفشده با addcustominfo
sortignorecase (bool) (default true)
نادیده گرفتن بزرگی و کوچکی حروف در مرتبسازی. گزینه ignorecase را نیز بررسی کنید.
sortignoredia (bool) (default true)
نادیده گرفتن اعراب و نشانههای صوتی در مرتبسازی. گزینه ignoredia را نیز بررسی کنید.
statfmt (string) (default \033[36m%p\033[0m| %c| %u| %g| %S| %t| -> %l)
رشته قالببندی اطلاعات فایل در گوشه پایین سمت چپ. این گزینه تنها زمانی عمل میکند که rulerfmt نیز تنظیم شده باشد. استفاده از rulerfile توصیه میشود و این گزینه برای سازگاری عقبرو تعبیه شده است.
بسطهای ویژه زیر پشتیبانی میشوند:
-
%p مجوزهای فایل %c تعداد پیوندها (link count) %u نام کاربر %g نام گروه %s اندازه فایل %S اندازه فایل (تراز شده از چپ با فاصله تا ۵ نویسه) %t زمان آخرین ویرایش محتوا %l مقصد پیوند نمادین %m حالت فعلی %M حالت فعلی (نمایش NORMAL به جای رشته خالی در حالت عادی)
نویسه | رشته قالب را به بخشهای مجزا تقسیم میکند؛ هر بخشی که بسط ناموفق داشته باشد نمایش داده نمیشود.
tabstop (int) (default 8)
تعداد نویسههای فاصله برای نمایش نویسه تب افقی (U+0009).
tagfmt (string) (default \033[31m)
رشته قالببندی تگها.
اگر این رشته شامل نویسههای %s باشد، به عنوان رشته قالب fmt.Sprintf تفسیر شده و باید با دنباله ریست ترمینال خاتمه یابد.
tempmarks (string) (default ``)
نشانکهایی که موقت در نظر گرفته میشوند (مانند abc که به نشانکهای a، b و c اشاره دارد). این نشانکها با سایر کلاینتها همگامسازی نشده و در فایل نشانکها ذخیره نمیشوند. نشانک ویژه ' همواره موقت در نظر گرفته میشود.
terminalcursor (string) (default default)
تعیین ظاهر نشانگر ترمینال برای اعلانها در سطر پایین. مقادیر پشتیبانیشده عبارتند از: default، block، underline، bar، blinkblock، blinkunderline و blinkbar.
timefmt (string) (default Mon Jan _2 15:04:05 2006)
رشته قالببندی زمان ویرایش فایل که در سطر پایین نشان داده میشود.
truncatechar (string) (default ~)
نویسه کوتاهسازی که در صورت جا نشدن نام فایل در پنجره، نمایش داده میشود.
truncatepct (int) (default 100)
هنگامی که نام یک فایل برای نمایش کامل بسیار طولانی باشد، فضای در دسترس به دو بخش تقسیم میشود. truncatepct یک درصد بین ۰ تا ۱۰۰ است که اندازه بخش اول (ابتدای نام فایل) را مشخص میکند. بخش دوم بقیه فضا را در انتهای نام فایل اشغال میکند. دو بخش با نویسه کوتاهسازی (truncatechar) جدا میشوند. کوتاهسازی روی پسوند فایل اعمال نمیشود.
به عنوان مثال، برای نام فایل very_long_filename.txt:
- set truncatepct 100 -> very_long_filena~.txt (پیشفرض)
- set truncatepct 50 -> very_lon~filename.txt
- set truncatepct 0 -> ~ry_long_filename.txt
visualfmt (string) (default \033[7;36m)
رشته قالببندی نشانگر فایلهایی که در حالت بصری انتخاب شدهاند.
waitmsg (string) (default Press any key to continue)
رشتهای که پس از اجرای دستورات از نوع shell-wait نمایش داده میشود.
watch (bool) (default false)
پایش تغییرات سیستمفایل با استفاده از fsnotify جهت بهروزرسانی خودکار اطلاعات فایلها. سامانههای FUSE در حال حاضر پشتیبانی نمیشوند.
wrapscan (bool) (default true)
امکان گردش مجدد جستجو به ابتدای فهرست فایلها پس از رسیدن به انتها.
wrapscroll (bool) (default false)
امکان گردش مجدد پیمایش صفحه (scroll) به ابتدای فهرست پس از رسیدن به انتها.
user_{option} (string) (default none)
هر گزینهای با پیشوند user_ یک گزینه تعریفشده توسط کاربر است و میتواند به هر رشتهای تنظیم شود. درون یک دستور سفارشی کاربر، مقدار آن در متغیر محیطی lf_user_{option} در دسترس خواهد بود. این گزینهها توسط lf پردازش نشده و ماندگار نیستند.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
متغیرهای زیر برای دستورات شل صادر میشوند: این متغیرها در شلهای سازگار با استاندارد POSIX با پیشوند $ (مانند $f)، در خط فرمان cmd ویندوز میان نویسههای % (مانند %f%)، و در PowerShell ویندوز با پیشوند $env: (مانند $env:f) فراخوانی میشوند.
f
مسیر کامل فایل جاری انتخابشده.
fs
فایل(های) انتخابشده که با مقدار گزینه filesep از یکدیگر جدا شدهاند به صورت مسیرهای کامل.
fv
فایل(های) انتخابشده در حالت بصری که با مقدار گزینه filesep جدا شدهاند به صورت مسیرهای کامل.
fx
فایل(های) انتخابشده (fs، نه fv) در صورتی که فایلی انتخاب شده باشد؛ در غیر این صورت فایل جاری (f).
id
شناسه عددی کلاینت در حال اجرا.
PWD
پوشه کاری جاری.
OLDPWD
پوشه کاری اولیه.
LF_LEVEL
هنگامی که lf را از درون شلی اجرا کنید که خود از داخل lf باز شده است، مقدار این متغیر سطح تودرتویی شل را نشان میدهد. میتوانید مقدار این متغیر را به اعلان (prompt) شل خود اضافه کنید تا مشخص باشد شل شما درون lf اجرا شده است. به عنوان نمونه، در شلهای POSIX میتوانید دستور زیر را در فایل پیکربندی شل خود (مانند ~/.bashrc) قرار دهید: [ -n "$LF_LEVEL" ] && PS1="$PS1""(lf level: $LF_LEVEL) "
OPENER
اگر این متغیر در محیط سیستم تنظیم شده باشد، از مقدار آن استفاده میشود. در غیر این صورت، در ویندوز برابر start، در مکاواس برابر open و در سایر سیستمها برابر xdg-open خواهد بود.
EDITOR
اگر متغیر VISUAL در محیط تنظیم شده باشد، از آن استفاده میشود؛ در غیر این صورت از مقدار متغیر EDITOR استفاده خواهد شد. اگر هیچیک تنظیم نشده باشند، در یونیکس vi و در ویندوز notepad خواهد بود.
PAGER
اگر این متغیر در محیط تنظیم شده باشد، همان به کار میرود؛ در غیر این صورت در یونیکس برابر less و در ویندوز برابر more خواهد بود.
SHELL
اگر در محیط تنظیم شده باشد، همان مقدار به کار میرود؛ در غیر این صورت در یونیکس برابر sh و در ویندوز برابر cmd است.
lf
مسیر مطلق به باینری lf در حال اجرا در صورتی که پیدا شود؛ در غیر این صورت، رشته متنی lf.
lf_{option}
مقدار گزینه {option}.
lf_user_{option}
مقدار گزینه سفارشی user_{option}.
lf_flag_{flag}
مقدار فلگ خط فرمان {flag}.
lf_width, lf_height
عرض و ارتفاع ترمینال.
lf_count
مقدار شمارنده منتسب به دستور جاری.
lf_mode
حالت فعلی که lf در آن کار میکند. این متغیر برای سفارشیسازی میانبرها بر اساس حالت جاری مفید است. مقادیر ممکن عبارتند از: compmenu، delete، rename، filter، find، mark، search، command، shell، pipe (هنگام اجرای دستور shell-pipe)، normal، visual و unknown.
دستورات ویژه (SPECIAL COMMANDS)
این بخش اطلاعات مربوط به دستورات شل ویژه را ارائه میدهد.
open
این دستور شل میتواند تعریف شود تا رفتار پیشفرض دستور open را زمانی که فایل انتخابی یک پوشه نیست تغییر دهد.
paste
این دستور شل میتواند برای بازنویسی رفتار پیشفرض دستور paste تعریف شود.
rename
این دستور شل میتواند برای تغییر رفتار پیشفرض دستور rename تعریف شود.
delete
این دستور شل میتواند برای جایگزینی رفتار پیشفرض دستور delete تعریف گردد.
pre-cd
این دستور شل میتواند به گونهای تعریف شود که قبل از تغییر دایرکتوری اجرا گردد.
on-cd
این دستور شل میتواند به نحوی تعریف شود که پس از تغییر دایرکتوری اجرا گردد.
on-load
این دستور شل میتواند به شکلی تعریف شود که پس از بارگذاری یک پوشه اجرا شود. این دستور فایلهای درون پوشه را به عنوان آرگومان دریافت میکند.
on-focus-gained
این دستور شل میتواند برای اجرا در زمان فوکوس گرفتن ترمینال تعریف شود.
on-focus-lost
این دستور شل میتواند برای اجرا هنگام از دست رفتن فوکوس ترمینال تعریف شود.
on-init
این دستور شل میتواند برای اجرا پس از مقداردهی اولیه و اتصال به سرور تعیین شود.
on-select
این دستور شل میتواند برای اجرا پس از هر بار تغییر فایل انتخابی تعریف شود.
on-redraw
این دستور شل میتواند برای اجرا پس از بازطراحی صفحه نمایش یا تغییر اندازه ترمینال تعریف گردد.
on-quit
این دستور شل میتواند برای اجرا درست پیش از خروج از برنامه تعریف شود.
پیشوندها (PREFIXES)
پیشوندهای دستوری زیر توسط lf به کار میروند:
-
: read (default) دستور توکار یا سفارشی $ shell دستور شل % shell-pipe دستور شل در حال اجرا به همراه رابط کاربری ! shell-wait دستور شل منتظر فشردن یک کلید & shell-async دستور شل ناهمگام در پسزمینه
برای خواندن دستورات شل در خط فرمان و در فایل پیکربندی از یک ارزیاب یکسان استفاده میشود. تفاوت در این است که پیشوندها در خط فرمان الزامی نیستند؛ به جای آن، حالتهای متفاوتی برای دریافت دستورات متناظر تعبیه شده است. این حالتها به صورت پیشفرض به کلیدهای پیشوند بالا نگاشت شدهاند. نگاشتهای حالت بصری نیز دقیقاً مشابه حالت عادی تعریف میگردند.
سینتکس (SYNTAX)
نویسهها از علامت # تا انتهای سطر کامنت تلقی شده و نادیده گرفته میشوند:
-
# کامنتها با # شروع میشوند
دستورات زیر (set، setlocal، map، nmap، vmap، cmap و cmd) برای پیکربندی به کار میروند.
دستور set برای تنظیم یک گزینه که میتواند بولی، عدد صحیح یا رشته باشد استفاده میشود:
-
set hidden # فعالسازی بولی set hidden true # فعالسازی بولی set nohidden # غیرفعالسازی بولی set hidden false # غیرفعالسازی بولی set hidden! # تغییر وضعیت بولی (toggle) set scrolloff 10 # مقدار عددی صحیح set sortby time # مقدار رشتهای بدون نقلقول set sortby 'time' # مقدار رشتهای با نقلقول تکی (فاصلهدار) set sortby "time" # مقدار رشتهای با نقلقول دوتایی (کاراکترهای اسکیپ)
دستور setlocal برای تنظیم یک گزینه محلی برای یک پوشه خاص استفاده میشود که میتواند بولی یا رشته باشد. گزینههای محلی پشتیبانیشده فعلی عبارتند از: dircounts، dirfirst، dironly، hidden، info، reverse، sortby، sortignorecase و sortignoredia.
-
setlocal /foo/bar hidden # فعالسازی بولی setlocal /foo/bar hidden true # فعالسازی بولی setlocal /foo/bar nohidden # غیرفعالسازی بولی setlocal /foo/bar hidden false # غیرفعالسازی بولی setlocal /foo/bar hidden! # تغییر وضعیت بولی setlocal /foo/bar sortby time # مقدار رشتهای setlocal /foo/bar sortby 'time' # مقدار رشتهای setlocal /foo/bar sortby "time" # مقدار رشتهای
دستور map برای متصل کردن یک کلید در حالتهای عادی و بصری به یک دستور توکار، سفارشی یا شل استفاده میشود:
-
map gh cd ~ # دستور توکار map D trash # دستور سفارشی map i $less $f # دستور شل map U !du -csh * # دستور شل منتظر کلید
دستور nmap عملکرد مشابهی دارد اما فقط برای حالت عادی (Normal mode).
دستور vmap عملکرد مشابهی دارد اما فقط برای حالت بصری (Visual mode).
نمای کلی از کارکرد دستورات map در حالتهای مختلف:
-
map عادی و بصری (Normal, Visual) nmap تنها عادی (Normal) vmap تنها بصری (Visual) cmap خط فرمان (Command-line)
دستور cmap برای متصل کردن یک کلید در خط فرمان به دستورات خط فرمان یا هر دستور دیگری به کار میرود:
-
cmap <c-g> cmd-escape cmap <a-i> set incsearch!
میتوانید با خالی گذاشتن عبارت، اتصال یک کلید را حذف کنید:
-
map gh # حذف میانبر gh در حالت عادی و بصری nmap v # حذف میانبر v در حالت عادی vmap o # حذف میانبر o در حالت بصری cmap <c-g> # حذف میانبر <c-g>
دستور cmd برای تعریف یک دستور سفارشی جدید استفاده میشود:
-
cmd usage $du -h -d1 | less
میتوانید یک دستور تعریفشده را با خالی گذاشتن مقدار آن حذف کنید:
-
cmd trash # حذف دستور trash
اگر هیچ پیشوندی مشخص نشود، پیشوند : فرض میشود:
-
map zt set info time
درج پیشوند صریح : برای گروهبندی دستورات تا انتهای سطر امکانپذیر است که به ویژه برای دستورات map و cmd بسیار کاربردی است:
-
map st :set sortby time; set info time
اگر به نگارش چندسطری نیاز دارید، میتوانید دستورات را پس از پیشوند درون {{ و }} محصور کنید:
-
map st :{{ set sortby time set info time }}
نگاشت کلیدها (KEY MAPPINGS)
کلیدهای معمولی با نگارش مرسوم به یک دستور اختصاص مییابند:
-
map a down
کلیدهای ترکیبی با کلید Shift صرفاً با استفاده از حرف بزرگ مشخص میشوند:
-
map A down
کلیدهای ویژه میان نویسههای < و > نوشته شده و همواره از حروف کوچک استفاده میکنند:
-
map <enter> down
علامتهای کوچکتر/بزرگتر را میتوان با نامهای ویژه آنها انتساب داد:
-
map <lt> down map <gt> down
کلیدهای تابع (Function keys) با پیشوند نویسه f مشخص میشوند:
-
map <f-1> down
کلیدهای ترکیبی با کلید Ctrl با پیشوند نویسه c نوشته میشوند:
-
map <c-a> down
کلیدهای ترکیبی با کلید Alt بسته به رفتار ترمینال شما به دو روش مختلف اختصاص مییابند. ترمینالهای قدیمیتر (مانند xterm) ممکن است با فشردن کلید Alt، بیت هشتم یک نویسه را فعال کنند. در این ترمینالها میتوانید از بایت متناظر برای نگاشت استفاده کنید:
-
map á down
ترمینالهای جدیدتر (مانند gnome-terminal) ممکن است هنگام فشردن کلید Alt، یک نویسه فرار (escape) به ابتدای کلید اضافه نمایند. برنامه lf برای تشخیص کلیدهای Alt در این ترمینالها از سازوکار تاخیر نویسه فرار بهره میبرد (تاخیر ۱۰۰ میلیثانیه است). در این ترمینالها، کلیدهای ترکیبی با Alt با پیشوند نویسه a مشخص میشوند:
-
map <a-a> down
امکان ترکیب کلیدهای ویژه با کلیدهای تغییردهنده وجود دارد:
-
map <a-enter> down
ترکیب چندین کلید تغییردهنده (مانند Ctrl+Shift+Space) پشتیبانی نمیشود.
توجه داشته باشید که نگارش نگاشت کلیدهای lf شبیه به Vim است، اما کاملاً یکسان نیست. برخی کلیدهای ویژه و تغییردهندهها از نامها و جداکنندههای متفاوتی استفاده میکنند و نام کلیدها به صورت کاملاً عینی و دقیق تطبیق داده میشوند (بدون تبدیل حروف کوچک/بزرگ یا نام مستعار)، از این رو برخی شکلهای آشنا کار نخواهند کرد:
-
map <enter> down # نه <Enter>، <Return> یا <CR> map <f-1> down # نه <F1> map <a-j> down # نه <A-j> یا <M-j> (Meta) map <m-2> down # نه <RightMouse> map <m-up> down # نه <ScrollWheelUp>
هشدار: برخی ترکیبهای کلیدی به احتمال زیاد توسط سیستمعامل، مدیر پنجره یا ترمینال شما رهگیری و مهار میشوند. همچنین برخی ترکیبهای دیگر بسته به نحوه گزارش ترمینال ممکن است برای lf قابل تفکیک نباشند (مثلاً Ctrl+h ممکن است به صورت backspace گزارش شود). سادهترین راه برای اطلاع از نام یک ترکیب کلیدی و امکان کارکرد آن در سیستم شما، این است که آن کلید را حین اجرای lf بفشارید و نام آن را از پیام خطای unknown mapping بخوانید.
دکمههای ماوس با پیشوند نویسه m مشخص میشوند:
-
map <m-1> down # کلیک چپ اصلی map <m-2> down # کلیک راست ثانویه map <m-3> down # کلیک وسط map <m-4> down # دکمه شست بعدی map <m-5> down # دکمه شست قبلی map <m-6> down map <m-7> down map <m-8> down
رویدادهای چرخ ماوس نیز با پیشوند نویسه m مشخص میگردند:
-
map <m-up> down map <m-down> down map <m-left> down map <m-right> down
نگاشتهای فشردن کلید (PUSH MAPPINGS)
روش متداول برای نگاشت یک توالی کلیدی، انتساب آن به یک دستور نامدار یا بینام است. گرچه این رویکرد روشی تمیز برای بازنگاشت کلیدهای توکار و سایر دستورات به دست میدهد، اما گاهی اوقات محدودکننده است. به همین دلیل دستور push در lf گنجانده شده است. این دستور برای شبیهسازی فشردن کلیدهای دادهشده در آرگومان استفاده میشود. میتوانید کلیدی را به یک دستور push همراه با آرگومان map کنید تا میانبرهای کلیدی گوناگونی بسازید.
این قابلیت اساساً برای دو هدف کاربرد دارد: نخست، میتوان از آن برای نگاشت دستوری همراه با یک شمارنده دستور بهره برد:
-
map <c-j> push 10j
دوم، میتوان برای اجتناب از تایپ نام دستور در مواردی که دستور آرگومان میگیرد استفاده نمود:
-
map r push :rename<space>
نکتهای که باید مراقب آن بود این است که چون دستور push به جای دستورات با کلیدها کار میکند، امکان ایجاد تصادفی میانبرهای بازگشتی وجود دارد:
-
map j push 2j
این نوع میانبرها در هنگام اجرا بنبست (deadlock) ایجاد میکنند.
دستورات شل (SHELL COMMANDS)
دستورات شل معمولی پایهایترین نوع دستور هستند که برای مقاصد گوناگونی کاربرد دارند. برای نمونه، میتوانیم یک دستور شل بنویسیم تا فایل(های) انتخابی را به سطل بازیافت منتقل کند. نخستین تلاش برای نوشتن چنین دستوری ممکن است به این شکل باشد:
-
cmd trash ${{ mkdir -p ~/.trash if [ -z "$fs" ]; then mv "$f" ~/.trash else IFS="$(printf '\n\t')"; mv $fs ~/.trash fi }}
ما متغیر $fs را بررسی میکنیم تا ببینیم فایلی انتخاب شده است یا خیر؛ در غیر این صورت، تنها فایل جاری را جابجا میکنیم. چون این یک الگوی بسیار رایج است، یک متغیر مجزا به نام $fx فراهم شده است. با استفاده از این متغیر میتوان از عبارت شرطی صرفنظر کرد:
-
cmd trash ${{ mkdir -p ~/.trash IFS="$(printf '\n\t')"; mv $fx ~/.trash }}
پوشه سطل زباله در هر بار اجرای دستور بررسی میشود. میتوانیم آن را به خارج از دستور ببریم تا فقط یک بار در زمان راهاندازی اجرا گردد:
-
${{ mkdir -p ~/.trash }} cmd trash ${{ IFS="$(printf '\n\t')"; mv $fx ~/.trash }}
چون این موارد دستورات یکخطی هستند، میتوان از {{ و }} صرفنظر نمود:
-
$mkdir -p ~/.trash cmd trash $IFS="$(printf '\n\t')"; mv $fx ~/.trash
در پایان توجه داشته باشید که متغیر IFS را در این دستورات به طور دستی تنظیم کردیم. به جای آن میتوانستیم از گزینه ifs برای تنظیم آن برای تمام دستورات شل استفاده کنیم (مانند set ifs "\n"). این امر به ویژه برای استفاده تعاملی بسیار سودمند است (مثلاً $rm $f یا $rm $fs به سادگی کار خواهند کرد). این گزینه به صورت پیشفرض تنظیم نشده زیرا ممکن است برای کاربران تازهکار رفتاری غیرمنتظره داشته باشد؛ با این حال، استفاده از این گزینه به شدت توصیه میشود و در ادامه مستندات فرض بر تنظیم بودن آن است.
دستورات شل لولهکشیشده (PIPING SHELL COMMANDS)
دستورات شل معمولی در پارهای از شرایط با محدودیتهایی روبرو هستند. هنگامی که خروجی یا پیام خطایی داده شود و دستور بلافاصله خاتمه یابد، رابط کاربری بدون درنگ بازگردانده میشود و راهی برای دیدن پیام بدون خروج مجدد به شل وجود ندارد. همچنین حتی زمانی که هیچ خروجی یا خطایی نباشد، رابط کاربری حین اجرای دستور موقتاً متوقف میگردد. این موضوع میتواند موجب پرش صفحه برای دستورات کوتاه و حواسپرتی مشابه برای دستورات طولانیتر شود.
دستورات شل لولهکشیشده به جای متوقف کردن رابط کاربری، ورودی استاندارد (stdin)، خروجی استاندارد (stdout) و خطای استاندارد (stderr) دستور را به خط وضعیت در پایین صفحه متصل میکنند. این کارکرد برای برنامههایی که پیرو فلسفه یونیکس هستند تا در صورت موفقیت هیچ خروجی ندهند و در سایر موارد پیامهای کوتاه یا اعلان صادر کنند، بسیار ایدهآل است.
به عنوان مثال، دستور تغییر نام زیر در صورت وجود فایلی با نام مشخصشده، در خط وضعیت برای رونویسی تاییدیه میخواهد:
-
cmd rename %mv -i $f $1
همچنین میتوانید پیامهای خطا را در دستور چاپ کنید تا در خط وضعیت ظاهر شوند. برای نمونه، یک دستور تغییر نام جایگزین میتواند اینگونه باشد:
-
cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
توجه داشته باشید که ورودی به صورت سطری بافر میشود و خروجی و خطا به صورت بایتی بافر میگردند.
دستورات شل منتظر (WAITING SHELL COMMANDS)
دستورات شل منتظر مشابه دستورات شل معمولی هستند، با این تفاوت که پس از پایان کار دستور، منتظر فشردن یک کلید از سوی کاربر میمانند. این نوع دستورات برای دیدن خروجی یک برنامه قبل از بازگشت رابط کاربری مفید هستند. زمانی که دستور خروجی پرگویی دارد و نمایش چندسطری خروجی بهتر است، دستورات شل منتظر نسبت به دستورات لولهکشیشده مناسبتر خواهند بود.
دستورات شل ناهمگام (ASYNCHRONOUS SHELL COMMANDS)
دستورات شل ناهمگام برای آغاز اجرای یک دستور در پسزمینه و سپس ادامه بیدرنگ عملیات بدون معطل ماندن برای اتمام دستور به کار میروند. ورودی استاندارد، خروجی استاندارد و خطای استاندارد دستور به هیچیک از ترمینال یا رابط کاربری متصل نمیشوند.
دستورات از راه دور (REMOTE COMMANDS)
یکی از قابلیتهای پیشرفتهتر در lf، دستورات از راه دور (remote commands) است. تمام کلاینتها در هنگام راهاندازی به یک سرور متصل میشوند. ارسال دستورات به تمامی کلاینتهای متصل یا هر یک از آنها از طریق سرور مشترک امکانپذیر است. این قابلیت در داخل برنامه برای اطلاعرسانی تغییرات فایلهای انتخابی به سایر کلاینتها استفاده میشود.
برای بهرهگیری از این ویژگی، به برنامهای نیاز است که از ارتباط با سوکت یونیکس (Unix domain socket) پشتیبانی کند. پیادهسازی netcat (nc) در سیستمعامل OpenBSD نمونهای از آن است. میتوان از آن برای ارسال دستور به فایل سوکت استفاده نمود:
-
echo 'send echo hello world' | nc -U ${XDG_RUNTIME_DIR:-/tmp/lf-$(id -u)}/lf.sock
از آنجا که ممکن است چنین ابزاری در تمام سیستمها موجود نباشد، lf به همراه یک فلگ خط فرمان برای این کاربرد عرضه شده است. هنگام استفاده از lf، نیازی به مشخص کردن نشانی فایل سوکت ندارید. این روش پیشنهادی برای اجرای دستورات از راه دور است، زیرا کوتاهتر بوده و در برابر تغییرات نشانی فایل سوکت پایدار میماند:
-
lf -remote 'send echo hello world'
در این دستور از send برای ارسال بقیه رشته به عنوان دستور به همه کلاینتهای متصل استفاده میشود. میتوانید به صورت اختیاری یک شناسه عددی (ID) تعیین کنید تا دستور فقط به یک کلاینت خاص ارسال شود:
-
lf -remote 'send 1234 echo hello world'
تمام کلاینتها دارای شناسه یکتا هستند، اما ممکن است در هنگام نوشتن دستور از شناسه آن مطلع نباشید. به همین منظور، متغیر $id در محیط برای دستورات شل صادر میشود. مقدار این متغیر برابر با شناسه فرآیند کلاینت است. میتوانید از آن برای ارسال دستور از یک کلاینت به سرور استفاده کنید تا سرور مجدداً دستور را به خود کلاینت بازگرداند. بنابراین میتوانید با فراخوانی دستور زیر درون یک دستور شل، پیامی در کلاینت جاری نمایش دهید:
-
lf -remote "send $id echo hello world"
از آنجا که نحو درونی lf فاقد دستورات کنترل جریان (مانند شرطها) است، دستورات از راه دور برای اینگونه نیازها به کار میروند. به عنوان مثال، میتوانید تعداد ستونهای رابط کاربری را متناسب با عرض ترمینال به شکل زیر تنظیم کنید:
-
cmd recol %{{ if [ $lf_width -le 80 ]; then lf -remote "send $id set ratios 1:2" elif [ $lf_width -le 160 ]; then lf -remote "send $id set ratios 1:2:3" else lf -remote "send $id set ratios 1:2:3:5" fi }}
علاوه بر این، دستور query میتواند برای کسب اطلاعات در مورد یک نمونه خاص از lf با ارائه شناسه آن به کار رود:
-
lf -remote "query $id maps"
انواع اطلاعات زیر پشتیبانی میشوند:
-
maps فهرست نگاشتهای ایجادشده توسط دستورات map، nmap و vmap nmaps فهرست نگاشتهای ایجادشده توسط دستورات nmap و map vmaps فهرست نگاشتهای ایجادشده توسط دستورات vmap و map cmaps فهرست نگاشتهای ایجادشده توسط دستور cmap cmds فهرست دستورات ایجادشده با دستور cmd jumps محتوای فهرست پرشها شامل مکانهای بازدیدشده پیشین history فهرست دستورات اجراشده قبلی در خط فرمان files فهرست فایلهای موجود در پوشه جاری مطابق نمایش lf
هنگام فهرستبندی نگاشتها، نویسههای ستون اول عبارتند از:
-
n حالت عادی (Normal) v حالت بصری (Visual) c حالت خط فرمان (Command-line)
این قابلیت برای اسکریپتنویسی اقدامات بر مبنای وضعیت داخلی lf بسیار سودمند است. برای نمونه، جهت انتخاب یک دستور پیشین با استفاده از fzf و اجرای آن:
-
map <a-h> ${{ clear cmd=$( lf -remote "query $id history" | awk -F'\t' 'NR > 1 { print $NF}' | sort -u | fzf --reverse --prompt='Execute command: ' ) lf -remote "send $id $cmd" }}
دستور list شناسه تمام کلاینتهای متصل فعلی را چاپ میکند:
-
lf -remote 'list'
همچنین دستور quit برای بستن سرور در زمانی که هیچ کلاینتی متصل نمانده باشد، و دستور quit! برای بستن اجباری سرور با بستن ارتباط تمامی کلاینتها وجود دارد:
-
lf -remote 'quit' lf -remote 'quit!'
در نهایت، دستورات conn و drop یک شناسه را به سرور متصل یا از آن قطع میکنند:
-
lf -remote 'conn $id' lf -remote 'drop $id'
این موارد درونی هستند و عموماً توسط کاربران استفاده نمیشوند.
عملیات فایل (FILE OPERATIONS)
برنامه lf به صورت پیشفرض از عملیات کپی و جابجایی داخلی خود استفاده میکند. این عملیات به شکل ناهمگام پیادهسازی شدهاند و پیشرفت کار در خطکش پایینی نمایش مییابد. این دستورات فایلها یا پوشههای همنام موجود را رونویسی نمیکنند؛ بلکه پسوندی سازگار با گزینه --backup=numbered در ابزار GNU cp به فایلها یا پوشههای جدید اضافه میشود. تنها حالتهای دسترسی و (برخی) نشانهای زمانی حفظ میشوند (گزینه preserve را ببینید)، و تمام صفتهای دیگر از جمله مالکیت، context و صفتهای توسعهیافته نادیده گرفته میشوند. فایلهای ویژه مانند دستگاههای کاراکتری و بلوکی، لولههای نامدار (pipes) و سوکتها رد شده و پیوندها دنبال نمیشوند. انتقال فایلها با استفاده از عملیات تغییر نام سیستمعامل زیربنایی صورت میگیرد. برای انتقال بین دستگاههای دیسک مختلف، lf ابتدا اقدام به کپی کرده و سپس در صورت نبود خطا فایل اصلی را حذف میکند. خطاهای عملیاتی در خط پیام و در فایل لاگ ثبت میشوند و فرآیند را پیش از موعد متوقف نمیکنند.
عملیات فایل میتوانند روی فایل انتخابی جاری یا چندین فایل (با انتخاب قبلی آنها) انجام گیرند. هنگامی که یک فایل را copy میکنید، lf در عمل فایل را روی دیسک کپی نمیکند، بلکه نام آن را در فایلی ثبت مینماید. کپی واقعی در زمان اجرای دستور paste انجام میشود. به همین ترتیب، اجرای paste پس از cut فایل را انتقال میدهد.
میتوانید عملیاتهای کپی و انتقال را با تعریف یک دستور paste سفارشیسازی کنید. این دستور ویژهای است که در صورت تعریف شدن به جای پیادهسازی داخلی فراخوانی میشود. میتوانید از مثال زیر به عنوان نقطه آغاز استفاده فرمایید:
-
cmd paste %{{ load=$(cat ~/.local/share/lf/files) mode=$(echo "$load" | sed -n '1p') list=$(echo "$load" | sed '1d') if [ $mode = 'copy' ]; then cp -R $list . elif [ $mode = 'move' ]; then mv $list . rm ~/.local/share/lf/files lf -remote 'send clear' fi }}
از نکات سودمندی که میتوان در نظر گرفت، استفاده از گزینههای پشتیبانگیری (--backup) یا حفظ صفتها (-a) در دستورات cp و mv در صورت پشتیبانی سیستم، تغییر نوع دستور به ناهمگام، یا استفاده از دستور rsync با گزینه نوار پیشرفت برای کپی و ارسال دورهای درصد پیشرفت به کلاینت از طریق فراخوانیهای echo راه دور است.
برنامه lf به صورت پیشفرض برای حفاظت از کاربران تازهکار، دستور delete را به هیچ کلیدی اختصاص نداده است. میتوانید حذف فایل را با تعریف یک دستور delete شخصیسازی کنید. همچنین در صورت تمایل میتوانید کلیدی به این دستور منتسب نمایید. دستوری نمونه برای انتقال فایلهای انتخابشده به پوشه سطل زباله و حذف کامل فایلها پس از درخواست تایید، در فایل پیکربندی نمونه ارائه شده است.
جستجوی فایلها (SEARCHING FILES)
دو سازوکار در lf برای جستجوی فایل در پوشه جاری تعبیه شده است: جستجو (Searching) روش سنتی برای انتقال انتخاب به فایلی منطبق با یک الگوی مشخص است. یافتن (Finding) روشی جایگزین برای جستجوی الگو احتمالاً با تعداد فشردن کلید کمتر است.
سازوکار جستجو با دستورات search (به طور پیشفرض /)، search-back (پیشفرض ?)، search-next (پیشفرض n) و search-prev (پیشفرض N) پیادهسازی شده است. میتوانید searchmethod را روی glob تنظیم کنید تا تطبیق با الگوی گلوب انجام شود. الگوهای گلوب از * برای تطبیق با هر دنبالهای، ? برای هر نویسه تک، و [...] یا [^...] برای مجموعهها یا بازههای نویسهای پشتیبانی میکنند. میتوانید searchmethod را روی regex برای تطبیق با عبارات منظم تنظیم نمایید. برای راهنمای کامل سینتکس موتور RE2 در زبان Go به نشانی زیر مراجعه کنید: https://pkg.go.dev/regexp/syntax.
میتوانید گزینه incsearch را فعال کنید تا همگام با تایپ، با فشردن هر کلید به مورد منطبق پرش شود. در این حالت میتوانید از cmd-enter برای تایید جستجو یا از cmd-escape برای لغو آن استفاده کنید. همچنین میتوانید دستورات دیگری را با cmap تعریف کنید تا جستجو بلافاصله تایید شده و دستور مورد نظر اجرا شود. برای مثال، میتوانید با نگاشت زیر با فشردن کلید جهتنمای راست جستجو را به پایان رسانده و فایل انتخابی را باز کنید:
-
cmap <right> :cmd-enter; open
سازوکار یافتن با دستورات find (پیشفرض f)، find-back (پیشفرض F)، find-next (پیشفرض ;) و find-prev (پیشفرض ,) پیادهسازی شده است. میتوانید گزینه anchorfind را غیرفعال کنید تا الگو در هر موقعیتی از نام فایل (نه لزوماً از ابتدا) تطبیق یابد. با گزینه findlen میتوان تعداد کلیدهای لازم برای تطبیق را تنظیم کرد؛ اگر روی صفر تنظیم شود، کلیدها تا زمانی دریافت میشوند که تنها یک مورد منطبق باقی بماند. مقادیر پیشفرض این دو گزینه برای پرش به اولین فایل با حرف ابتدایی دادهشده تنظیم شده است.
برخی گزینهها روی هر دو روش جستجو و یافتن تاثیر میگذارند: میتوانید گزینه wrapscan را غیرفعال کنید تا از گردش مجدد جستجو در انتهای فهرست فایلها جلوگیری شود. میتوانید گزینه ignorecase را غیرفعال کنید تا تمایز حروف کوچک و بزرگ در الگو و نام فایل رعایت شود (این گزینه با داشتن حروف بزرگ در الگو خودکار نادیده گرفته میشود که با خاموش کردن smartcase این رفتار متوقف میگردد). دو گزینه مشابه ignoredia و smartdia برای کنترل تطبیق اعراب و نشانههای صوتی در حروف لاتین تعبیه شدهاند.
باز کردن فایلها (OPENING FILES)
میتوانید دستور open (به طور پیشفرض l و <right>) را برای سفارشیسازی نحوه باز کردن فایلها تعریف کنید. این دستور تنها زمانی اجرا میشود که فایل انتخابی یک پوشه نباشد؛ در غیر این صورت برنامه وارد پوشه خواهد شد. میتوانید آن را دقیقاً مشابه هر دستور دیگری تعریف نمایید:
-
cmd open $vi $fx
امکان بهرهگیری از انواع مختلف دستورات وجود دارد:
-
cmd open &xdg-open $f
شاید بخواهید بر اساس پسوند فایلها یا نوع MIME حاصل از دستور file تصمیمگیری کنید:
-
cmd open ${{ case $(file --mime-type -Lb $f) in text/*) vi $fx;; *) for f in $fx; do xdg-open $f > /dev/null 2> /dev/null & done;; esac }}
میتوانید از setsid پیش از دستور بازکننده خود استفاده کنید تا فرآیندها پس از خروج از lf نیز به کار خود ادامه دهند.
دستورات شل معمولی ($) به محیط ترمینال میروند که برای دستوراتی که فوراً به پایان میرسند (مانند xdg-open در مثال بالا) باعث پرش صفحه نمایش میشود. اگر میخواهید از دستورات شل ناهمگام (&) استفاده کنید و در عین حال در صورت لزوم به ترمینال نیز دسترسی داشته باشید (مانند vi در مثال بالا)، میتوانید از یک دستور راه دور استفاده فرمایید:
-
cmd open &{{ case $(file --mime-type -Lb $f) in text/*) lf -remote "send $id \$vi \$fx";; *) for f in $fx; do xdg-open $f > /dev/null 2> /dev/null & done;; esac }}
توجه داشته باشید که دستورات شل ناهمگام به صورت پیشفرض در گروه فرآیندی مستقل خود اجرا میشوند و نیازی به استفاده دستی از setsid ندارند.
دستور زیر به صورت پیشفرض تنظیم شده است:
-
cmd open &$OPENER $f
همچنین میتوانید به دلخواه از سایر ابزارهای بازکننده فایل استفاده کنید. گزینههای احتمالی عبارتند از: libfile-mimeinfo-perl (نام فایل اجرایی mimeopen)، rifle (بازکننده پیشفرض برنامه ranger) یا mimeo.
پیشنمایش فایلها (PREVIEWING FILES)
برنامه lf فایلها را در پنجره پیشنمایش با چاپ محتوای فایل تا انتها یا تا زمان پر شدن صفحه نمایش میدهد. این خروجی را میتوان با ارائه یک اسکریپت پیشنمایش سفارشی برای فیلترسازی ارتقا داد. از این قابلیت میتوان برای برجستهسازی کدهای منبع، نمایش محتوای فایلهای فشرده یا مشاهده فایلهای PDF یا تصاویر بهره برد. برنامه lf برای رنگآمیزی، کدهای فرار ANSI را تشخیص میدهد.
جهت استفاده از این قابلیت، لازم است مقدار گزینه previewer را برابر مسیر یک فایل اجرایی قرار دهید. آرگومانهای زیر به فایل ارسال میشوند: (1) نام فایل جاری، (2) عرض، (3) ارتفاع، (4) موقعیت افقی، (5) موقعیت عمودی پنجره پیشنمایش، و (6) حالت اجرا ("preview" یا "preload"). خروجی حاصل از اجرای اسکریپت در پنجره پیشنمایش چاپ میشود.
انواع مختلف فایلها با تطبیق پسوند فایل (یا نوع MIME حاصل از دستور file) قابل تفکیک هستند:
-
#!/bin/sh case "$1" in *.tar*) tar tf "$1";; *.zip) unzip -l "$1";; *.rar) unrar l "$1";; *.7z) 7z l "$1";; *.pdf) pdftotext "$1" -;; *) highlight -O ansi "$1";; esac
از آنجا که فایلها ممکن است حجیم باشند، lf پس از خواندن سطرهای کافی به طور خودکار پایپ خروجی اسکریپت را با ارسال سیگنال SIGPIPE میبندد. توجه داشته باشید که برخی برنامهها ممکن است به سیگنال SIGPIPE واکنش مناسبی نشان نداده و با کد خروجی غیرصفر خارج شوند که این امر مانع از کش شدن خروجی میگردد. میتوانید یک دستور پایانی || true اضافه کنید تا از چنین خطاهایی جلوگیری شود:
-
highlight -O ansi "$1" || true
همچنین میتوانید از همان اسکریپت در میانبر صفحهبند (pager) خود نیز استفاده نمایید:
-
set previewer ~/.config/lf/pv.sh map i $~/.config/lf/pv.sh $f | less -R
برای صفحهبند less، میتوانید به جای آن از سازوکار LESSOPEN بهره ببرید تا اطلاعات سودمند درباره فایل از جمله مسیر کامل آن در خط وضعیت پایینی قابل نمایش باشد:
-
set previewer ~/.config/lf/pv.sh map i $LESSOPEN='| ~/.config/lf/pv.sh %s' less -R $f
از آنجا که اسکریپت پیشنمایش برای هر تغییر انتخاب فایل فراخوانی میشود، در صورتی که کاربر به سرعت در میان فایلها حرکت کند، ممکن است تولید پیشنمایشها با تاخیر مواجه شود. برای رفع این مسئله، میتوان گزینه preload را فعال کرد تا پیشنمایشها از قبل آماده شوند. در این حالت، همزمان با پیمایش کاربر، اسکریپت پیشاپیش روی فایلها اجرا میشود؛ اگر کد خروجی اسکریپت صفر باشد، خروجی در حافظه کش شده و توسط lf نشان داده میشود (مفید برای متون و پیشنمایشهای sixel)؛ در غیر این صورت، برنامه در زمان انتخاب واقعی فایل مجدداً اسکریپت را فراخوانی میکند (مفید برای پیشنمایشهای مدیریتشده توسط برنامههای خارجی).
تغییر پوشه (CHANGING DIRECTORY)
برنامه lf پوشه کاری فرآیند خود را به پوشه جاری تغییر میدهد تا دستورات شل همواره در پوشه نمایشیافته عمل کنند. پس از خروج، برنامه مانند سایر ابزارهای شل به همان پوشهای که از آن اجرا شده بود بازمیگردد. اگر میخواهید پس از خروج در همان پوشه جاری بمانید، میتوانید از اسکریپتهای پوسته نمونه lfcd موجود در مخزن پروژه در نشانی زیر استفاده کنید: https://github.com/gokcehan/lf/tree/master/etc
دستور ویژهای به نام on-cd وجود دارد که در صورت تعریف شدن، هنگام تغییر پوشه یک دستور شل را اجرا میکند. میتوانید آن را دقیقاً مشابه هر دستور دیگری تعریف فرمایید:
-
cmd on-cd &{{ bash -c ' # نمایش وضعیت مخزن گیت در اعلان source /usr/share/git/completion/git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=auto GIT_PS1_SHOWSTASHSTATE=auto GIT_PS1_SHOWUNTRACKEDFILES=auto GIT_PS1_SHOWUPSTREAM=auto git=$(__git_ps1 " (%s)") fmt="\033[32;1m%u@%h\033[0m:\033[34;1m%d\033[0m\033[1m%f$git\033[0m" lf -remote "send $id set promptfmt \"$fmt\"" ' }}
اگر میخواهید دنبالههای فرار (escape sequences) به ترمینال بفرستید، میتوانید از دستور tty-write استفاده کنید. دنباله فرار مخصوص xterm زیر، عنوان ترمینال را برابر با پوشه کاری قرار میدهد:
-
cmd on-cd &{{ lf -remote "send $id tty-write \"\033]0;$PWD\007\"" }}
این دستور هنگام تغییر پوشه اجرا میشود اما در زمان راهاندازی اجرا نمیگردد. میتوانید فراخوانی مستقلی اضافه کنید تا در هنگام راهاندازی اولیه نیز اجرا شود:
-
cmd on-cd &{{ ... }} on-cd
توجه داشته باشید که از انواع مختلف دستورات شل میتوان استفاده نمود، اما % و & معمولاً مناسبتر هستند، زیرا $ و ! به ترتیب باعث پرش صفحه و توقف برنامه میشوند.
همچنین دستور pre-cd وجود دارد که مانند on-cd عمل میکند، با این تفاوت که پیش از تغییر واقعی پوشه اجرا میشود. دستور مرتبط دیگر on-load است که پس از بارگذاری یک پوشه اجرا میگردد.
بارگذاری پوشه (LOADING DIRECTORY)
مشابه با on-cd، دستور on-load نیز وجود دارد که در صورت تعریف شدن، پس از بارگذاری یک پوشه یک دستور شل را اجرا میکند. این دستور در ترکیب با addcustominfo بسیار کارآمد است.
از مثال زیر میتوان برای نمایش نشانگرهای گیت در ستون اطلاعات (info) استفاده کرد:
-
cmd on-load &{{ cd "$(dirname "$1")" || exit 1 [ "$(git rev-parse --is-inside-git-dir 2>/dev/null)" = false ] || exit 0 cmds="" for file in "$@"; do case "$file" in */.git|*/.git/*) continue;; esac status=$(git status --porcelain --ignored -- "$file" | cut -c1-2 | head -n1) if [ -n "$status" ]; then cmds="${cmds}addcustominfo \"${file}\" \"$status\"; " else cmds="${cmds}addcustominfo \"${file}\" ''; " fi done if [ -n "$cmds" ]; then lf -remote "send $id :$cmds" fi }}
کاربرد دیگر میتواند نمایش ابعاد فایلهای تصویری و ویدیویی باشد:
-
cmd on-load &{{ cmds="" for file in "$@"; do mime=$(file --mime-type -Lb -- "$file") case "$mime" in # تصاویر برداری مشکلساز هستند image/svg+xml) ;; image/*|video/*) dimensions=$(exiftool -s3 -imagesize -- "$file") cmds="${cmds}addcustominfo \"${file}\" \"$dimensions\"; " ;; esac done if [ -n "$cmds" ]; then lf -remote "send $id :$cmds" fi }}
رنگها (COLORS)
برنامه lf تلاش میکند رنگهای خود را به صورت خودکار با محیط تطبیق دهد. کار با یک طرح رنگی پیشفرض آغاز شده و سپس رنگها بر اساس مقادیر متغیرهای محیطی موجود بهروزرسانی میشوند. رنگها به ترتیب زیر اعمال میگردند:
- 1.
- پیشفرض (default)
- 2.
- متغیر LSCOLORS (در دستور ls در macOS/BSD)
- 3.
- متغیر LS_COLORS (در دستور GNU ls)
- 4.
- متغیر LF_COLORS (ویژه برنامه lf)
- 5.
- فایل colors (ویژه برنامه lf)
لطفاً برای اطلاعات بیشتر درباره LSCOLORS و LS_COLORS به صفحات راهنمای مربوطه مراجعه فرمایید. متغیر LF_COLORS با همان ساختار LS_COLORS تعبیه شده تا در صورتی که بخواهید رنگها را فقط برای lf و نه ls تنظیم کنید، از آن استفاده نمایید. فایل colors (به بخش CONFIGURATION مراجعه کنید) برای پیکربندی آسانتر بدون متغیرهای محیطی در نظر گرفته شده است. این فایل شامل جفتهای جداشده با فاصله است و نویسه # برای کامنتها به کار میرود.
میتوانید رنگهای lf را به دو شیوه پیکربندی کنید: نخست، تنها ۸ رنگ اصلی مورد استفاده در ترمینال خود را تنظیم کنید و lf به صورت خودکار آن رنگها را شناسایی خواهد کرد. بسته به ترمینال خود، میتوانید رنگها را از یک پالت ۲۴ بیتی برگزینید. این رویکرد پیشنهادی است زیرا رنگهای به کار رفته در سایر برنامهها نیز با یکدیگر هماهنگ خواهند بود.
دوم، میتوانید مقادیر متغیرهای محیطی یا فایل colors را برای سفارشیسازی دقیق و جزءبهجزء تنظیم نمایید. توجه داشته باشید که LS_COLORS/LF_COLORS از LSCOLORS قدرتمندتر هستند و حتی در صورت عدم نصب ابزارهای گنو نیز کار میکنند. ترکیب این روش با روش نخست بهترین نتیجه را حاصل میکند.
در پایان، ممکن است بخواهید رنگهای خط اعلان را نیز متناسب با سایر رنگها تنظیم کنید. رنگهای خط اعلان از طریق گزینه promptfmt قابل تنظیم است که میتواند شامل کدهای فرار ANSI باشد.
شایان ذکر است که lf از تعداد رنگهایی که توسط مدخل ترمینال در پایگاه دادههای terminfo یا infocmp گزارش میشود پشتیبانی میکند. اگر ترمینال شما از رنگهای ۲۴ بیتی پشتیبانی میکند، میتوانید با تنظیم متغیر $COLORTERM به truecolor یا اطمینان از پایان یافتن $TERM با -truecolor پشتیبانی آن را فعال نمایید.
رنگهای پیشفرض lf عمدتاً از پیشفرضهای dircolors گنو گرفته شدهاند. این پیشفرضها از ۸ رنگ اصلی و صفت برجسته (bold) استفاده میکنند. مقادیر پیشفرض به همراه ترتیب انطباق در lf به شرح زیر است:
-
ln 01;36 or 31;01 tw 01;34 ow 01;34 st 01;34 di 01;34 pi 33 so 01;35 bd 33;01 cd 33;01 su 01;32 sg 01;32 ex 01;32 fi 00
توجه داشته باشید که lf ابتدا نام فایلها را تطبیق میدهد و سپس به سراغ نوع فایل میرود. ترتیب کامل تطبیق از خاصترین تا عمومیترین عبارت است از:
- 1.
- مسیر کامل فایل (مانند ~/.config/lf/lfrc)
- 2.
- نام پوشه (مانند .git/) (تنها با پوشههای دارای ممیز پایانی تطبیق مییابد)
- 3.
- نوع فایل (مانند ln) (به جز fi)
- 4.
- نام فایل (مانند README*)
- 5.
- نام فایل (مانند *README)
- 6.
- نام پایه فایل (مانند README.*)
- 7.
- پسوند فایل (مانند *.txt)
- 8.
- پیشفرض (مانند fi)
برای نمونه، برای یک فایل متنی معمولی /path/to/README.txt، مدخلهای زیر به ترتیب در پیکربندی بررسی شده و نخستین مورد منطبق به کار میرود:
- 1.
- /path/to/README.txt
- 2.
- (رد میشود زیرا فایل پوشه نیست)
- 3.
- (رد میشود زیرا فایل از نوع fi است)
- 4.
- README.txt*
- 5.
- *README.txt
- 6.
- README.*
- 7.
- *.txt
- 8.
- fi
برای یک پوشه معمولی /path/to/example.d نیز مدخلهای زیر بررسی میشوند:
- 1.
- /path/to/example.d
- 2.
- example.d/
- 3.
- di
- 4.
- example.d*
- 5.
- *example.d
- 6.
- example.*
- 7.
- *.d
- 8.
- fi
به دلایل کارایی، الگوهای شبیه گلوب تطبیق گلوب واقعی انجام نمیدهند.
برای نمونه، میتوانید یک متغیر را به این شکل تنظیم کنید:
-
export LF_COLORS="~/Documents=01;31:~/Downloads=01;31:~/.local/share=01;31:~/.config/lf/lfrc=31:.git/=01;32:.git*=32:*.gitignore=32:*Makefile=32:README.*=33:*.txt=34:*.md=34:ln=01;36:di=01;34:ex=01;32:"
قرار دادن همه موارد در یک خط ممکن است خوانایی را دشوار سازد؛ میتوانید با اسکیپ کردن خطوط جدید به کمک بکاسلش آن را در چند سطر بنویسید:
-
export LF_COLORS="\ ~/Documents=01;31:\ ~/Downloads=01;31:\ ~/.local/share=01;31:\ ~/.config/lf/lfrc=31:\ .git/=01;32:\ .git*=32:\ *.gitignore=32:\ *Makefile=32:\ README.*=33:\ *.txt=34:\ *.md=34:\ ln=01;36:\ di=01;34:\ ex=01;32:\ "
مدخل ln از مقدار ویژه target پشتیبانی میکند که از سبک مقصد پیوند برای استایل استفاده خواهد کرد. تعریف متغیری تا این حد طولانی در فایل پیکربندی شل شاید مطلوب نباشد؛ به جای آن میتوانید از فایل colors (بخش CONFIGURATION) استفاده نمایید. یک نمونه فایل colors در نشانی زیر موجود است: https://github.com/gokcehan/lf/blob/master/etc/colors.example همچنین میتوانید به صفحه ویکی کدهای فرار ANSI در نشانی زیر مراجعه کنید: https://en.wikipedia.org/wiki/ANSI_escape_code
آیکونها (ICONS)
آیکونها با استفاده از متغیر محیطی LF_ICONS یا فایل icons (بخش CONFIGURATION) پیکربندی میشوند. این متغیر از همان ساختار LS_COLORS/LF_COLORS بهره میبرد، اما به جای کدهای رنگ، از نویسهها یا نمادهای تکی به عنوان مقدار استفاده میکند. مدخل ln از مقدار ویژه target برای انتخاب آیکون مقصد پیوند پشتیبانی مینماید. فایل icons شامل آرایههای جداشده با فاصله است و نویسه # برای کامنتها به کار میرود. هر سطر باید شامل ۱ تا ۳ ستون باشد: نوع فایل یا الگوی نام فایل، آیکون، و رنگ اختیاری آیکون. استفاده از تنها یک ستون، تمام قوانین مربوط به آن نوع یا نام را غیرفعال میکند. فراموش نکنید که برای نمایش آیکونها عبارت set icons true را به فایل lfrc خود اضافه نمایید. مقادیر پیشفرض به ترتیبی که lf آنها را تطبیق میدهد در زیر آمده است:
-
ln l or l tw t ow d st t di d pi p so s bd b cd c su u sg g ex x fi -
یک نمونه فایل icons در نشانی زیر موجود است: https://github.com/gokcehan/lf/blob/master/etc/icons.example
یک نمونه فایل آیکونهای رنگی نیز در نشانی زیر در دسترس است: https://github.com/gokcehan/lf/blob/master/etc/icons_colored.example
خطکش (RULER)
خطکش میتواند با استفاده از گزینه rulerfile پیکربندی شود (به بخش CONFIGURATION مراجعه کنید). محتوای فایل خطکش باید یک قالب زبان Go (Go template) باشد که سپس برای ایجاد خروجی واقعی رندر میشود (برای جزئیات بیشتر درباره نحو به https://pkg.go.dev/text/template مراجعه فرمایید).
فیلدهای داده زیر صادر میشوند:
-
.Message string شامل پیامهای داخلی، خطاها و پیامهای دستورات echo/echomsg/echoerr .Keys string کلیدهای فشردهشده توسط کاربر .Progress []string نشانگرهای پیشرفت فایلهای کپیشده، جابجاشده و حذفشده .Copy []string فهرست فایلهای آماده کپی در کلیپبورد .Cut []string فهرست فایلهای آماده انتقال در کلیپبورد .Select []string فهرست فایلهای انتخابشده .Visual []string محدوده انتخاب بصری .Index int موقعیت نشانگر (اندیس) .Total int تعداد فایلهای مرئی در پوشه کاری جاری .Hidden int تعداد فایلهای مخفی در پوشه کاری جاری .All int تعداد کل فایلها در پوشه کاری جاری .LinePercentage string درصد سطر جاری (مشابه %p در گزینه statusline ویم) .ScrollPercentage string درصد پیمایش (مشابه %P در گزینه statusline ویم) .Filter []string فیلتر در حال اعمال .Mode string حالت جاری (NORMAL برای حالت عادی و VISUAL برای حالت بصری) .Options map[string]string مقدار گزینهها (مثلاً {{.Options.hidden}}) .UserOptions map[string]string مقدار گزینههای تعریفشده توسط کاربر (مثلاً {{.UserOptions.foo}}) .Stat.Path string مسیر فایل جاری .Stat.Name string نام فایل جاری .Stat.Extension string پسوند فایل جاری .Stat.Size int64 اندازه فایل جاری .Stat.DirSize int64 اندازه کل پوشه جاری در صورت محاسبه با calcdirsize .Stat.DirCount int تعداد اقلام پوشه جاری در صورت فعال بودن گزینه dircounts .Stat.Permissions string مجوزها و دسترسیهای فایل جاری .Stat.ModTime string زمان آخرین ویرایش فایل جاری (با فرمت گزینه timefmt) .Stat.AccessTime string زمان آخرین دسترسی به فایل جاری (با فرمت گزینه timefmt) .Stat.BirthTime string زمان ایجاد فایل جاری (با فرمت گزینه timefmt) .Stat.ChangeTime string زمان آخرین تغییر وضعیت اینود فایل جاری (با فرمت گزینه timefmt) .Stat.LinkCount string تعداد پیوندهای سخت فایل جاری .Stat.User string کاربر مالک فایل جاری .Stat.Group string گروه مالک فایل جاری .Stat.Target string مقصد پیوند نمادین در صورت پیوند بودن، وگرنه رشته خالی .Stat.CustomInfo string ویژگی سفارشی تعریفشده با addcustominfo، وگرنه رشته خالی
توابع زیر در قالب در دسترس هستند:
-
df func() string دریافت نشانگر میزان فضای خالی در دسترس روی دیسک env func(string) string دریافت مقدار یک متغیر محیطی humanize func(int64) string نمایش حجم فایل در قالبی خوانا برای انسان join func([]string, string) string اتصال عناصر یک آرایه رشتهای با یک جداکننده lower func(string) string تبدیل یک رشته به حروف کوچک substr func(string, int, int) string دریافت زیررشته بر اساس اندیس شروع و طول upper func(string) string تبدیل یک رشته به حروف بزرگ
شناسه ویژه {{.SPACER}} میتواند برای تقسیم خطکش به بخشهایی با فاصله مساوی از یکدیگر به کار رود.
فایل خطکش پیشفرض در نشانی زیر موجود است: https://github.com/gokcehan/lf/blob/master/etc/ruler.default
| 2026-07-31 | r42 |