From e65ae41a70c60a603fa6cfd2b42d4ca681e7b937 Mon Sep 17 00:00:00 2001 From: Sergey Matveev <stargrave@stargrave.org> Date: Thu, 22 Apr 2021 16:21:40 +0300 Subject: [PATCH] =?utf8?q?=D0=91=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=B1=D1=8B?= =?utf8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?utf8?q?=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=20=D0=B4?= =?utf8?q?=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://mhoffman.github.io/2015/05/21/how-to-navigate-directories-with-the-shell.html ÐÑегда лÑÐ±Ð»Ñ ÑиÑаÑÑ Ð¿Ñо вÑÑкие Ñ Ð°ÐºÐ¸ и мелоÑи кÑо как иÑполÑзÑÐµÑ Ñвой компÑÑÑеÑ. ÐÐµÐ´Ñ ÐºÐ°Ð¶Ð´Ð°Ñ Ð¼ÐµÐ»Ð¾ÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиноÑиÑÑ Ð¾Ð³ÑомнÑй вклад в ÐÐÐ. alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." ÐÐ¾Ñ ÑÑÐ¾Ñ ÑпоÑоб пеÑемеÑÐµÐ½Ð¸Ñ Ñ Ð½Ðµ одобÑÑÑ. ТоÑнее Ñак: Ñ Ñебе Ñделал нажаÑие F2 как вÑполнение cd .. Ñ Ð²Ñводом ÑекÑÑей диÑекÑоÑии: cddotdot() { cd .. pwd zle reset-prompt } zle -N cddotdot bindkey "<F2>" cddotdot Рмне кажеÑÑÑ ÑÑо ÑилÑно ÑÑÑекÑивнее и Ñдобнее: одно нажаÑие и Ñ Ñже пеÑеÑÑл на диÑекÑоÑÐ¸Ñ Ð²ÑÑе и ÑÑÐ°Ð·Ñ Ð¶Ðµ еÑÑ Ð¸ Ñвидел пÑÑÑ Ð³Ð´Ðµ Ñ Ð½Ð°Ñ Ð¾Ð¶ÑÑÑ. ÐÐµÐ´Ñ Ð½Ðµ вÑегда можно ÑоÑно ÑоÑÑиÑаÑÑ 5-или-6 ÑоÑек надо набÑаÑÑ? Ð ÑÑÑ Ð»Ð¸ÑнÑÑ ÑоÑÐºÑ Ð¸ enter -- Ñже в лÑбом ÑлÑÑае на два нажаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе. Ðдно но: в моÑм F2 ÑлÑÑае Ñ Ð¼ÐµÐ½Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¿ÐµÑемеÑений каждÑй пеÑÐµÑ Ð¾Ð´ бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÑÑ, но мне ÑÑо не доÑÑавлÑÐµÑ Ð¿Ñоблем. ÐÑполÑзование: !$ -- Ð½Ñ ÑÑо must-have-нейÑий must-have. ÐÑоÑÑо невеÑоÑÑно как ÑаÑÑо оно иÑполÑзÑеÑÑÑ Ð¸ повÑÑÐ°ÐµÑ ÐÐÐ. Я каждÑй Ð´ÐµÐ½Ñ Ð¸ какие-нибÑÐ´Ñ !:1 иÑполÑзÑÑ, Ð´Ð»Ñ Ð¿Ð¾Ð´ÑÑановки не поÑледнего аÑгÑменÑа. Ðо Ñ ÑÑим Ñже поÑложнее, ибо поÑледний вÑегда виден, а оÑÑалÑнÑе надо еÑÑ Ð³Ð»Ð°Ð·Ð°Ð¼Ð¸ оÑениÑÑ Ð³Ð´Ðµ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð¸ какой Ñ Ð½Ð¸Ñ Ð¿Ð¾ÑÑдковÑй номеÑ. ÐонкÑеÑно пÑо $CDPATH не знаÑ, но позволÑÐµÑ Ð»Ð¸ он пеÑейÑи в foo/bar, когда ÑолÑко "foo" пÑиÑÑÑÑÑвÑÐµÑ Ð² $CDPATH? Ð zsh можно иÑполÑзоваÑÑ hash -d Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±ÑквалÑно алиаÑов, оÑноÑиÑелÑно коÑоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑемеÑаÑÑÑÑ Ð¸ в поддиÑекÑоÑии и они же оÑобÑажаÑÑÑÑ Ð² пÑÑÑÑ . 086c1e54e6fb5c52b0185ef30af61fac28056033 shopt -s cdspell -- вÑÑкие ÑÑÑки ÑвÑзаннÑе Ñ Ð¸ÑпÑавлением опеÑаÑок Ñ Ð¾ÑклÑÑил давно и ÑоÑно не Ð¼Ð¾Ð³Ñ Ð½Ð¸ÐºÐ¾Ð¼Ñ ÑовеÑоваÑÑ. ÐоÑÑаÑоÑно паÑÑ Ñаз ÑÑÐ¾Ð±Ñ ÐºÐ¾ÑÑекÑÐ¸Ñ Ð¾ÑÑабоÑала не ÑовÑем как ожидаеÑÑ, пÑи ÑÑом Ñже Ð¶Ð°Ñ Ð½Ñв по Enter-Ñ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¶Ð°Ð»ÐµÑÑ Ð¾ ней. ÐпаÑÐ½Ð°Ñ ÑÑÑка. ХоÑÑ Ð»ÐµÑ 20 назад мне нÑавилаÑÑ Ð¿Ð¾ наÑÐ°Ð»Ñ ÑÑа ÑиÑка из tcsh. pushd/popd -- ÑÐ°Ð¼Ð°Ñ Ð³Ð»Ð°Ð²Ð½Ð°Ñ ÑиÑа коÑоÑÐ°Ñ Ð¼Ð½Ðµ нÑжна Ð¾Ñ shell-а инÑеÑакÑивного. ТоÑнее autopushd ÑиÑа. Ð¡Ð°Ð¼Ð°Ñ Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ð¿ÑиÑина поÑÐµÐ¼Ñ Ñ Ð½Ðµ пÑÐ¸Ð·Ð½Ð°Ñ bash ÑдобнÑм инÑеÑакÑивнÑм shell-ом ÑÑо оÑÑÑÑÑÑвие auto pushd. Ðне нÑжно ÑÑÐ¾Ð±Ñ *вÑе* cd инÑеÑакÑивнÑе по ÑÑÑи ÑабоÑали как pushd. ÐÐµÐ´Ñ pushd долÑÑе набиÑаÑÑ. Ðо нелÑÐ·Ñ Ð¿ÑоÑÑо Ñак ÑделаÑÑ alias cd=pushd, поÑÐ¾Ð¼Ñ ÑÑо... не Ð¿Ð¾Ð¼Ð½Ñ Ñже поÑемÑ, но много ÐºÐ°ÐºÐ¸Ñ -Ñо ÑонкоÑÑей возникало и вÑÑ Ñавно ÑÑо не бÑло полноÑеннÑм (казалоÑÑ Ð±Ñ Ð¸ пÑоÑÑÑм) autopushd аналогом zsh. ÐмеÑÑо набоÑа popd Ñ Ñ ÑÐµÐ±Ñ Ð½Ð°Ð¶Ð¸Ð¼Ð°Ñ F4: pushdquiet() { popd zle reset-prompt } zle -N pushdquiet bindkey "<F4>" pushdquiet Ðдно нажаÑие и Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑÑ Ð½Ð°Ð·Ð°Ð´, оÑобÑÐ°Ð¶Ð°Ñ ÐºÑда Ñ Ð¿ÐµÑеÑÑл. Ðаже еÑли F2 мне замÑÑоÑÐ¸Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¾Ð´Ð¸Ð½Ð¾ÑнÑми пеÑÐµÑ Ð¾Ð´Ð°Ð¼Ð¸ по одной диÑекÑоÑии навеÑÑ , Ñо Ñ Ð±ÑÑÑÑо Ð½Ð°Ð¶Ð¸Ð¼Ð°Ñ F4 ÑÐ¼Ð¾Ð³Ñ Ð´Ð¾Ð¹Ñи до кÑда нÑжно, Ð²Ð¸Ð´Ñ Ð¿ÑогÑеÑÑ Ð²Ð¾Ð¾ÑиÑ. lln/lf Ð¿Ð¾Ð´Ñ Ð¾Ð´ Ñ Ð½Ðµ пÑобовал. Ðне кажеÑÑÑ Ð¾Ð½ мне не нÑжен бÑл, из-за, опÑÑÑ Ð¶Ðµ zsh, Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑÑей по ÑаÑÑÑм. ÐÑли мне вÑведеÑÑÑ "foo bar baz blablabla directory", Ñо мне доÑÑаÑоÑно ввеÑÑи "cd bazdir<TAB><CR>". Ðо желание иÑполÑзоваÑÑ Ð¸Ð»Ð¸ вÑвод или какое-Ñо ÑоÑÑоÑние (git-а) Ñоже еÑÑÑ Ð¸ Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ ÑÑал доволÑно ÑаÑÑо иÑполÑзоваÑÑ fzf ÑвÑÐ·ÐºÑ Ñ tmux popup-ами. ÐÑиÑÑм когда Ñ ÑолÑко игÑалÑÑ Ð¸ еÑÑ Ð½Ðµ доÑÑл до оÑÐ¾Ð·Ð½Ð°Ð½Ð¸Ñ ÑдобÑÑва fzf, Ñо мои пеÑвÑе Ñаги Ñоже бÑли из ÑеÑии ÑказаÑÑ Ð¿Ð¾ÑÑдковÑй Ð½Ð¾Ð¼ÐµÑ Ð² вÑводе какой-Ñо командÑ. 77ede978e9c24bc8e68ee4e900b9dc5bf94b29f6 7aceadbbd5387d9e62cb3fc54d6a89d5903f71b1 8b3d925396280a38f03ccf542cb95c60927c3e6d РеÑÑ Ñ ÑÑаÑаÑÑÑ Ð¸ÑполÑзоваÑÑ zsh возможноÑÑи по glob-Ñ. Ðак в Ñ Ð¾ÑоÑо ÑÑоÑмÑлиÑованном вопÑоÑе Ñже ÑодеÑжиÑÑÑ Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð° оÑвеÑа, Ñо и в Ñ Ð¾ÑоÑо Ñказанной Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа команде ÑодеÑжиÑÑÑ Ð¸Ð´ÐµÐ°Ð»ÑнÑй конеÑнÑй ÑезÑлÑÑаÑ. ÐапÑÐ¸Ð¼ÐµÑ Ð½Ðµ нÑжно вÑводиÑÑ ÑпиÑок Ñайлов по ÑвежеÑÑи и поÑом дÑмаÑÑ ÐºÐ°Ðº Ð±Ñ Ð¾ÑкÑÑÑÑ Ð¸Ð· ÑÑого ÑпиÑка Ñайл. ÐÑжно Ñак компÑÑÑеÑÑ Ð¸ ÑказаÑÑ: оÑкÑой мне ÑамÑй Ñвежий Ñайл из Ñакого glob-а Ñ Ñакой-Ñо ÑоÑÑиÑовкой: a706ddd8826b001990c7488a128862ace64924e3 ÐоиÑк в иÑÑоÑии по наÑÐ°Ð»Ñ Ð²Ð²ÐµÐ´Ñнной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ -- Ð½Ñ ÑÑо опÑÑÑ Ð¶Ðµ Ñамое базовое ÑÑо вÑегда ÑÑÐ¾Ð¸Ñ Ð½Ð°ÑÑÑаиваÑÑ. Ðаже не пÑедÑÑавлÑÑ ÐºÐ°Ðº можно Ð±Ñ Ð±Ñло жиÑÑ Ð² shell без ÑÑого, когда ввеÑÑ /вниз не ÑÑиÑÑваÑÑ Ñже введÑннÑй ÑекÑÑ. СейÑÐ°Ñ Ñ Ð¼ÐµÐ½Ñ ÐµÑÑ Ð±Ð¾Ð»ÐµÐµ мÑдÑÑнÑй поиÑк: * пÑоÑÑо ÑÑÑелоÑки иÑÑÑ Ð¿Ð¾ иÑÑоÑии ÑÑиÑÑÐ²Ð°Ñ Ñже введÑннÑй ÑекÑÑ * пÑи ÑÑом оÑделÑнÑм ÑвеÑом мне вÑÑвеÑиваеÑÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ÑÑоÑии коÑоÑÑй бÑл Ð±Ñ Ð½Ð°Ð¹Ð´ÐµÐ½: cd9d77af5b164a6abb194187a06ebb34aecf9ebc autosuggestion ÑÑÑка -- ÑвеÑÑ ÑеннейÑаÑ! * и еÑли Ñ Ð¸ÑполÑзÑÑ shift-ÑÑÑелоÑки, Ñо Ñ Ð¼ÐµÐ½Ñ Ð²ÐºÐ»ÑÑаеÑÑÑ ÑамопиÑнÑй some-kind-of-fish-substring-search, где запÑÑкаеÑÑÑ Ð¿Ð¾Ð¸Ñк по иÑÑоÑии Ñ regexp-ом где Ð¼ÐµÐ¶Ð´Ñ ÐºÐ°Ð¶Ð´Ñми Ñже введÑннÑми Ñловами вÑÑавлÑеÑÑÑ ".*" ÑегÑлÑÑка. "u suck<S-UP>" пÑÐµÐ´Ð»Ð¾Ð¶Ð¸Ñ Ð¼Ð½Ðµ "mutt -f =suckless" ÐÑÑ ÐºÐ¾Ð³Ð´Ð°-Ñо опиÑÑвал Ñвой prompt: 2d06525ce8bc48be93376479ca8a0a639c6789eb ÐÑоде ниÑего не поменÑлоÑÑ Ñ Ñого вÑемени и Ñ Ð¶ÑÑко им доволен вÑем: показ вÑемени вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸ кода возвÑаÑа пÑедÑдÑÑей ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ -- оÑÐµÐ½Ñ Ñдобно. ÐÑиÑÑм вÑÐµÐ¼Ñ Ð¸ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñл даже во вÑемена когда иÑполÑзовал bash. -- 2.51.0