set -o vi 寞ĺżăčĄă (ĺç
§: #1)ă
bind -p ăĺčăŤăăăsupport-vi-mode ăăŠăłăă§ä˝ćĽăăă
ĺăć˘ăă keymap ăĺăćżăăćŠč˝ăŻć´ĺăă daee0b8...f82cbc4
f82cbc4...449dd70 ĺşćŹçăŞă¨ăăăŻĺŽčŁ
ăăć°ăăăă
ćżĺ
Ľă˘ăźăăăăăźăăŤă˘ăźăă¸ăŻ ESC C-[ C-c ă§ç§ťčĄăăăăăźăăŤă˘ăźăă§ăŻäťĽä¸ăŤĺŻžĺżăăă
i I a A Rx X p Pyy dd cc Y D C [ydc]?[hjkl] [ydc]?[0$^+-]ćŞă 寞ĺżăăŚăăŞăăĺŞĺ é ä˝ăŽéŤăăăŽăŻäťĽä¸ăŽéă
C-h DEL SP | Gw W b B e Er449dd70...14223ec ĺăć˘ăăăăăžă§ăĺžăŻç¸čŤăŽä¸ă§ĺŽčŁ
ăŽäşĺŽ
ć°ăă寞ĺżăăăăŽ:
o O gR gI[ydc]?C-h, [ydc]?DEL, [ydc]?SP, [ydc]?[wWbBeE], [ydc]?[fFtT;,]s, S, J, gJ[ydc]?|, [ydc]?[HL], G, ggKRET, C-m, I, [ydk]?[-+jk] ăŞăŠĺŽčŁ äťć§:
H 㨠L ăŻçžĺ¨ăŽçˇ¨éćĺĺĺ
ăŽç§ťĺă§ăG 㨠gg ăŻăłăăłă幼ć´ăŽç§ťĺă¨ăăăK ăŻçžĺ¨ăŽăłăăłăăŠă¤ăłăŤĺŤăžăăăłăăłăĺă§ cmd --help ăžă㯠man cmd ăĺŽčĄăăçľćăčżăăj, k, +, - ăŻçžĺ¨ăŽçˇ¨éćĺĺăŽćä¸čĄăťćä¸čĄăč¸ăżčśăăă¨ăăłăăłă幼ć´ăç§ťĺăăăgR ăăăł gr ăŽĺŽčŁ
㯠[1] ăŽč¨čż°ăĺ
ăŤăăăćŞăăăvim ă§čŠŚăăăă§ăăŞăăŁă(?)ESC ă§ĺ§ăžăăăŽăĺé¤ăăăă¨äťĽĺ¤ăŻ) emacs mode ăăćŽăŠĺ¤ăăŚăăŞăa A i I gI o O R gR ăŽĺźć°ăŤăŻćŞĺŻžĺżă§ăăĺźç¨:
@cmplstofB (B-bar) ăăžăble.sh ăŤăăă vi-mode ăŽĺşćŹçăŞă¨ăăăŻă§ăăăăăŤćăăžăăŽă§ăćšăăŚăăšăăŚăźăśăŤăŞăŁăŚăăă ăăă¨ăăéĄăăăŚăăăăăă§ăăăăă
ăăĺźăĺăăŚä¸ăăĺ ´ĺăŻăčż˝ăŁăŚäťĽä¸ăŤă¤ăăŚă誏ćăăžăă
ble.sh ăŤăăăč¤ć°čĄçˇ¨éăŽćšćłăŤă¤ăăŚä˝ĺăăăăăăéĄăč´ăăžăă
@akinomyoga ć§
貴éăŞćéăĺ˛ăăŚăăă ăăŚçłă訳çĄăă§ăăăăšăăŚăźăśăŽäťśă§ăăăăăăăă§ĺźăĺăăžăă
ćŠéă§ăăăç´ ăŽ urxvt ĺăłăurxvt ä¸ăŽ tmux ă§čľˇĺăă Vim ä¸ăŽ :sh (Zsh ㎠Vim-mode ăŻăăă§ăŽăă°ăăăăžă)ăă¨ă§ç˘şčŞăăžăăă
ç´ ć´ăăă§ăďź ä¸éă芌ăăžăăăăreadline ćŹćĽăŽ set -o vi ă¨éč˛ăŞăă§ăă
ăă ăăĄăăŁă¨ć°ăŤăŞăŁăçšăăăăžăăăăă㯠support-vi-mode ăăŠăłăă§ăŻĺçžăăžăăăăăăăă support-vi-mode ăăŠăłăă§ăŻ C çăŽćä˝ăĺşćĽăžăăă§ăăă
ble.sh ăčŞăżčžźăă ĺžăŤ set -o vi çă¨ă㌠vi-mode ăŤç§ťčĄăăĺ ´ĺăvi-mode ăŻĺŽčŁ
ăăăŚăăŞăă¨ăăć¨ăŽčŚĺă襨示ăăăĺžăăłăăłăăŠă¤ăłăŤ stty sane ă¨ăăćĺĺăĺ
Ľĺăăăçść
ăŤăŞăăžăă čĄă確ĺŽăăŚăżă㨠stty sane ăĺŽčĄăăăăŽă§ćçťăŽćŽăćťă¨ăă訳ă§ăŻăŞăăăă§ăă@cmplstofB (B-bar) ăăžăćŠéăŽăĺ ąĺăăăă¨ăăăăăžă! ĺăć˘ăăăĺ ąĺăŽçšăŤă¤ăăŚç˘şčŞăăăŚăăă ăăŚĺŽăăă§ăăăăă
ăă㯠support-vi-mode ăăŠăłăă§ăŻĺçžăăžăăăă
ĺçžăăŞăăŽăŻăŠăŽăăăŞĺä˝ă芳ăăćăăŚé ăăžăăă
ăăăă support-vi-mode ăăŠăłăă§ăŻ C çăŽćä˝ăĺşćĽăžăăă§ăăă
確čŞăăžăăăăăăŻă¨ăă ăăšă§ăâŚă ab6bd163b9239739462076dfd137c03c40fa8319 ă§ C 㨠D ă俎ćŁăăžăăăçŞč˛ŤăŽäżŽćŁăŞăŽă§ăĺä˝ăŤă¤ăăŚĺéĄăăŞăă確čŞăăŚé ăăă¨ĺš¸ăă§ăă
ble.sh ăčŞăżčžźăă ĺžăŤ
set -o viçă¨ă㌠vi-mode ăŤç§ťčĄăăĺ ´ĺăvi-mode ăŻĺŽčŁ ăăăŚăăŞăă¨ăăć¨ăŽčŚĺă襨示ăăăĺžăăłăăłăăŠă¤ăłăŤ stty sane ă¨ăăćĺĺăĺ Ľĺăăăçść ăŤăŞăăžăă čĄă確ĺŽăăŚăżă㨠stty sane ăĺŽčĄăăăăŽă§ćçťăŽćŽăćťă¨ăă訳ă§ăŻăŞăăăă§ăă
master ăăŠăłăăŽčŠąă¨ăăăă¨ă§čŻăă§ăăăăăĺăăăŤăăăŚăăżăžăăăăăăăŻäťć§ă§ăă
çžçśăŽ ble.sh ă§ăŻ set -o vi ăăăă¨ăăŤĺ
㎠readline ăŤćťăăăăŤăăŚăăžă (ăăŽĺä˝ăŻä¸ćçăŞăăŽă§ support-vi-mode ăăŠăłăăăăźă¸ăăăĺžăŤăŻć°ăăĺŽčŁ
ăă vi mode ăŤç§ťčĄăăăăăŤăăžă)ăăă ă readline ăŤç§ťčĄăăĺăŤäťŽćłçŤŻćŤăŽçść
ăĺ
ăŤćťăăŞăăă°ăŞăăžăăăĺŽăŻćčĄçăŞĺéĄăŤăă ble.sh ăŽä¸ăăăŻăăŽč¨ĺŽăćťăăă¨ăă§ăăŞăăŽă§ăble.sh ăćăăĺžăŤăŚăźăśăŤćă§ stty sane ăĺŽčĄăăŚé ăĺż
čŚăăăăžăăăăŽăă㍠ble.sh ăŻăłăăłăăŠă¤ăłćĺĺ㍠stty sane ăč¨ĺŽăăŚćăăăŽă§ăă
ăă master ăăŠăłăă§ăŻăŞă support-vi-mode ăăŠăłăă§ăăăĺçžăăĺ ´ĺăŻăä˝ăăăŽăăšăŞăŽă§ăăŽćăŽçśćłăĺăăă°ćăăŚé ăăă¨ĺš¸ăă§ăă
čż˝ăŁăŚăăšăăŤă¤ăăŚă誏ćăăăăžăă
@cmplstofB (B-bar) ăăžăçšăŤăżăŚăăă ăăăăă¨ăŻ č¤ć°čĄçˇ¨éă§ăŽĺä˝ ă¨ ćŹ ăăŚăă使ç¨é ťĺşŚăŽéŤăăłăăłă ă§ăă䝼ä¸ăéˇăăŞăŁăŚăăžăăžăăăăć°ăĺăăćăŤčŚăŚé ăăă°ĺš¸ăă§ăă
ble.sh ă§ăŻçˇ¨éćĺĺăŤćščĄ LF (\n) ăĺŤăžăăŚăăă¨ăăč¤ć°čĄçˇ¨éă¨ăăăăă§ăŞăă¨ăăĺä¸čĄçˇ¨éă¨ăăŚăăžăă
C-v C-j ă¨ĺ
ĽĺăăŚä¸ăă (emacs mode ă§ăŻ M-RET (C-M-m) ă§ăăăăžă)ăRET (C-m) 㯠"ăłăăłăĺŽčĄ" ă§ăŻăŞăăă¨ăăŁăżă¨ĺć§ăŽĺä˝ ("ćščĄăŽćżĺ
Ľ/揥ăŽé犺ç˝čĄé ") ă¨ăăŚăŻăăăăžăăăłăăłăĺŽčĄăăăăŤăŻ C-j ăĺ
ĽĺăăŚä¸ăăăçšăŤč¤ć°čĄçˇ¨éăŽă¨ăăĺŤăăŚăăăźăăŤă˘ăźăăŽĺăłăăłăăĺä˝ăăă確čŞăăŚé ăăăćăăžăă
C ăŽäťśăŽăă㍠(ä¸ăăŞăééăă§) ĺ¤ăŞĺä˝ăăăăăŽăăŞăăăĺ˝çś vi/vim ăŽćŠč˝ăĺŽĺ ¨ăŤĺŽčŁ ăăăăăŤăŻĺăăžăăăŽă§ăčŚćăŽĺşăăăŽăăé ăŤĺŽčŁ ăăŚăăăă¨čăăŚăăžăăăăŽăă "ăăŽăłăăłăăŻčŞĺăŻăă使ăăŽă§ĺŽčŁ ăăäžżĺŠă§ăă" ă¨ăăăăăŞăăŽăăăăžăăăăĺšžă¤ăććĄăăŚé ăăăăŞă¨čăăŚăăžăă
ç°ĄĺăŤä˝żç¨ăăŚăăă ăăŚăăĺŽç¨ăŤčăăăă¨ĺ¤ćă§ăăĺ ´ĺăŤăŻăăăăăăăăă°ă§ĺéĄăŞăăŽă§ăă ăă°ăă使ç¨ăăăŚăăă ă㌠vi mode ăŽĺä˝ăŤĺéĄăăŞăăć¤č¨źăăŚăăă ăăăăŞă¨ăčăăŚăăăžăăăăŽĺ ´ĺăŤăŻ
~/.bashrc ăŽč¨ĺŽăăăŚä¸ăăă~/.inputrc ăŤăăăăźăă¤ăłăăŁăłă°ăŽč¨ĺŽă ~/.bashrc ăŤăă bind ăłăăłăăŽč¨ĺŽăăăĺ ´ĺ㯠ble.sh ă§ăŻĺć ăăăžăăăble.sh ç¨ăŽ ble-bind ăˇă§ăŤé˘ć°ăŤăăŁăŚč¨ĺŽăčż˝ĺ ăăĺż
čŚăăăăžăăble-bind -d ăĺŽčĄăăŚé ăăă° ble-bind ăŽä˝żăćšăŻĺ¤§ä˝ĺăăăŽă§ăŻăŞăăă¨ćăăžăăă質ĺăăăă°ăŠăăé ć
ŽăŞăçłăäťăä¸ăăăăă使ăŁăŚăăĺ
㍠vi mode ăŽĺä˝ăŤă¤ăăŚä˝ăććĄăŞăŠăĺşăŚăăžăăăăŠăăăć°čť˝ăŤăçĽăăä¸ăă (ăăĄăă vi mode 䝼ĺ¤ăŽ ble.sh ăŽćŠč˝ăŤă¤ăăŚă§ăĺéĄăăăžăă)ă
ç§ăŻćŽćŽľ vi/vim ăŻä˝żăăŞăăŽă§äťĽä¸ăŽăăźă¸ă§ăŠăŽăăăŞăłăăłăăăăă調ăšăŚăĺŽé㍠vim ă§ăŠăŽăăăŤĺä˝ăăăŽă調ăšăŚăăăă樥ĺŁăăŚĺŽčŁ ăăă¨ăăĺĺ§çăŞăă¨ăăăŚăăžăă
ă¨ăăă§ăăăŽăăăŤăăŚăĺä˝ăčŻăăăăăŞăăăŽă¨ăăăŽăĺĺ¨ăăžăă䝼ä¸ăŤă¤ăăŚăčăăăŚăăă§ăăăăă
gr ă§ĺ
¨č§ăťĺč§ăŽĺš
ăčć
ŽăăŚ1ćĺä¸ć¸ăăăă¨ä¸č¨ăăźă¸ăŤăŻć¸ăăăŚăăžăăăć訹㎠vim (VIM - Vi IMproved 8.0) ă§ĺçžăăžăă (ă¨ăŠăźăŤăŞă?)gR ă§ĺ
¨č§ăťĺč§ăŽĺš
ăčć
Žăăä¸ć¸ăă˘ăźăăŤăŞăă¨ăăăžăăăăăăĺć§ăŤĺçžăăžăăăăśăăä˝ăĺéăăăŚăăăŽă ă¨ćăăžăăăăăä˝ăăĺçĽăŽăă¨ăăăăžăăăćăăŚé ăăă¨ĺš¸ăăŤăăăăžăă
@akinomyoga ć§
éˇăăŞăŁăŚăăžăăžăăăăăăžăăă
ăă°ă ă¨ćăŁăăŽăŻç§ăŽčŞčä¸čśłă§ăăăăžăăăvi-mode ă§ĺçžăäşă
ăŻă㎠stty sane ăŤă¤ăăŚčż°ăšăŚăăăŽă§ć˘ăŤčŞĺˇąč§ŁćąşăăŚăăžăă
ĺä˝ç˘şčŞ
ă¨
bashrcăŽč¨ĺŽ
ăŤă¤ăăŚăŻ ble.sh ă vi-mode ă§ĺ¸¸ç¨ăăăŚăăă ă形ă§ä˝żç¨ăăžăă
ăăă夹礟ăŞăăĺŚć Ąă§ăľăźăçăŤĺŻžăăćä˝ă¨ăăŚä˝żăăŤăŻäťăŽćŽľéă§ĺ°ăćăé˘ăăăăŽă§ăĺşćŹçăŤĺŽśăŽ Debian 9 ăŽăżă§ä˝żăăăŚăă ăăă
ăăŽçľćăĺ ąĺăŽăăźăšă @akinomyoga ć§ăŽćłĺŽăăé
ăăăă¨ă¨ćăăžăăçłă訳çĄăă§ăă
ăăžăŽćăä¸ĺ ˇĺăăăăăŽă¨ăăŚă
ăăźăăŤă˘ăźăăăćżĺ
Ľă˘ăźăăŤç§ťăŁăç´ĺžăăă㍠C-căC-m çĺăłé常ăŽăăźĺ
ĽĺăăăăŽăăăŞăăźăŻč¨ĺŽăăăŚăăŞăăă¨ăăčŚĺă¨ă¨ăăŤçĄčŚăăăćăăăă
č¤ć°čĄçˇ¨éăŤăăăŚăćĺăŽčĄăĺé¤ăăĺžăŤç§ťĺă˘ăźăăćŠč˝ăăŞăă
ăăăăăŽĺ°ăăăăŽćŁç˘şăŞĺçžăăžă ĺşćĽăŞă(ä¸ćăăăă¨ăăăă)ăŽă§ăăăç¨ĺşŚä˝żăŁăŚĺ ´ć°ăč¸ăă§ăă芳細ăĺ ąĺăăžăă
質ĺ
䝎ćłç˝Žćă˘ăźăăŽăă¨ă§ăăă
ç§ăŽç°ĺ˘ Vim 8.0 1-992 (ĺ¤ĺćć°ç) ă§ăŻçšăŤĺéĄăŻăŞăăŁăă§ăă
ăăăăŽä¸ă§ gra ă¨ćă¤ă¨ăćĺăăăăŽĺš
ăčć
Žăăăăaăă¨ăŞăăžăă(ĺžăŁăŚăćĺć°ăŻĺ¤ĺăăžăăçťé˘ä¸ă§ăŻăăă䝼éăŽćĺăŻăăăžăă)
ăžăăăăăŽä¸ă§ ra ă¨ćă¤ă¨ăćĺăăăăŻä¸ćĺăŞăŽă§ăăaăă¨ăŞăăžăă(ăăă䝼éăŽćĺăŻçťé˘ä¸ă§ăŻăăăžăăăăăŽčĄăŽćĺć°ăŻĺ¤ĺăăžăăă)
ĺżľăŽçşäťŽćłçŤŻćŤ(urxvt)ĺăłçŤŻćŤĺ¤éĺă˝ăăăŚă§ă˘(tmux)ăVim ăč§Łéăăćĺĺš ăĺ¤ăăŚăżăžăăăĺ ¨ăŚăŽĺ ´ĺăŤăăăŚĺéĄăŞăăŁăă§ăă
ććĄ
Bash ㎠vi-mode ăŤăŻăŞăăŽă§ăăăăăăšăăŞăă¸ă§ăŻăăĺŽčŁ
ăăŚćʞăăă§ăăZsh ㎠vim-mode ă§ăŻĺŽčŁ
ăăăŚăăžăă
ă¨ăăăăăăăăăăšăăŞăă¸ă§ăŻă㯠Vim ăŽćŠč˝ă§ăăŽă§ vi-mode ăŤĺŽčŁ
ăăă¨ăăăŽăŻĺ°ăä¸čŞçśă§ăăăĺäşşçăŤăŻé常ăŤéĺŽăăŚăăăŽă§ćŻéă¨ă揲ăăă§ăă
ăăăšăăŞăă¸ă§ăŻăăŤă¤ăăŚäťĽä¸ăŤç°ĄĺăŤčŞŹćăăžăă
ăăăšăăŞăă¸ă§ăŻăă¨ăăăŽăŻç°ĄĺăŤč¨ăă¨ăăăăŚăšăŽĺčŞä¸ă§ăŽăăăŤăŻăŞăăŻăŽăăźăłăăłăçăă§ăă
äžăă°ćŹĄăŽćăăĄă˘ĺ¸łăŞăŠăŽăăăšăă¨ăăŁăżăŤăăŁăă¨ăăŚă(ăăŠăŚăśăăłăłă˝ăźăŤă§ăĺăă§ă)
Lore ipsu dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
"ipsum" ă¨ăăĺčŞăŽä¸ă§ăăăŤăŻăŞăăŻăăă¨ăăŽä˝ç˝ŽăŤćăăă "ipsum" ă¨ăăĺčŞĺ
¨ä˝ăé¸ćăăăă¨ćăăžăăăă㯠Bash ㎠Emacs ă˘ăźăă 㨠\eb(é¸ćéĺ§)\ef(é¸ćçľäş) ă¨ăăĺä˝ă§ć¨ĄĺŁă§ăăă¨ćăăžăă
ăăăšăăŞăă¸ă§ăŻăăŻăăăăçŻĺ˛ăŤĺŻžăăŚä¸ĺŽăŽćä˝ăć˝ăă¨ăăćŚĺżľă§ăăăăĄăäžżĺŠă§ăă
ĺŽéç§ăŻ ble.sh ăŤç§ťčĄăăĺăŤäźźéăăăšăăŞăă¸ă§ăŻăă¨ăăŚăăŤăźă˝ăŤä˝ç˝ŽăŽĺčŞĺ
¨ä˝ăĺźç¨çŹŚă§ĺ˛ă \xqă¨\xQ ă¨ăăăłăăłăă
```rc:~/.inputrc
"\eq": "\eb\"\ef\""
"\eQ": "\eb\'\ef\'"
```
ă¨ăăćăă§ĺŽçžăăŚăăžăăăăăĄăäžżĺŠă§ă(ăă¤ăă)
Vim ăŤăăăăăăšăăŞăă¸ă§ăŻăăŻăăźăăŤă˘ăźăăŤăă㌠{operation}iw ăŤĺ˛ăĺ˝ăŚăăăŚăăžăă{operation} ăŤăŻ c``d``y ăăăăžăă
äžăă°ăăźăăŤă˘ăźăă§ăŤăźă˝ăŤäťĽä¸ăŽĺčŞăĺĽăŽĺčŞăŤăăăć㯠ciw ă¨ćăŁăĺžć°ăăĺčŞăĺ
Ľĺăăžăă
ćŹĺ˝ăŻăăŁă¨ć˛˘ĺąąç¨ŽéĄăăăăŽă§ăăăă¨ăăăăă㎠{operation}iw ă ăă§ă揲ăăă§ăă
ĺ°ăä¸čż°ăă \xq 㯠Vim ă§ăŻ ysiw" ă§ăăăăăăăăŚăăăžăăă(ysăăçŻĺ˛ăŽä¸ĄçŤŻăŤćä˝ăć˝ăăăiwăăĺčŞĺ
¨ä˝ăŤăă"ăă"ăĺ
Ľĺăăăă¨ĺč§Łă§ăăžă)
@akinomyoga ć§
ble.sh ăŤăăă vi-insert ă˘ăźăă§ăŽ C-o 㯠"accept-and-next" ă¨ăŞăŁăŚăăžăăăvi/Vim ăŽć¨ćşă§ăŻă揥ăŤĺ
Ľĺăăăăä¸ĺăăŽăăź[^1]ăăăźăăŤă˘ăźăăŤĺŻžăăăăźă¨ăăŚč§ŁéăĺŽčĄăăĺžăĺăłćżĺ
Ľă˘ăźăăŤç§ťăă[^2]ăă¨ăăč¨ĺŽăŤăŞăŁăŚăăžăă
Bash ĺăł Zsh, Fish ă§ăŻĺŽčŁ
ăăăŚăăžăăăç§ĺäşşă¨ăăŚăŻćʞăăăă¨ăŻćʞăăă§ăăăăăŽćŠč˝ăŻăăžăăŤă¨ăăŁăżçă§ăăˇă§ăŤăŽćŠč˝ăé¸čąăăŚăăăăăŤăćăă¨ăăăŽăăăăžăă
ă¨ăăăăăŽĺ¸ćă¨ăăŚăŻ C-o ăćŞĺŽçžŠ(ăăŽăćŞĺŽçžŠă㯠ble.sh(ble-bind) ăŤăăă nop ă§ă)ăŤăăŚăăă ăă¨ĺŹăăă§ăă
ç§ăćŞăăŽă§ăăăä˝ć°çĄă C-o ăĺ
Ľĺăăă¨ăăăăăłăăăŽčĄăĺŽčĄăăăŚăăžăéŠăăăŽă§ă
@cmplstofB (B-bar) ć§
ćŠéăăăăă¨ăăăăăžă!
ăăŽçľćăĺ ąĺăŽăăźăšă @akinomyoga ć§ăŽćłĺŽăăé ăăăă¨ă¨ćăăžăăçłă訳çĄăă§ăă
ăăăć°ăŤăŞăăăŞăă§ä¸ăăăĺ
ăŽčżäżĄăŤăŚĺ¤§éăŤćçŤ ăć¸ăăŚăăžăŁăăăă§ĺ§ĺăăăăŚăăăăăŤăŞăŁăŚăăžăŁăŚçłă訳ăŞăă§ăăăăĄăăŽćłĺŽă§ăŻăble.sh ă使ăŁăŚăăă¨ăăăă¨ăä˝ăćčăăăŤćŤă使ăŁăŚăăă ăăŚăăăć°ăŤăŞăăă¨ăčŞçśăŤĺşăŚăăăăăŽćçšă§ĺ ąĺăăŚé ăăă°ă¨ćăŁăŚăăăžăăăăžăăăăŻă ble.sh ăŻé§çŽă ă¨ăăć°ăŤăŞăŁăăăă¤ă§ăčŚćžăă§é ăăŚĺéĄăăăžăăă
ăăžăŽćăä¸ĺ ˇĺăăăăăŽă¨ăăŚă
- ăăźăăŤă˘ăźăăăćżĺ Ľă˘ăźăăŤç§ťăŁăç´ĺžăăă㍠C-căC-m çĺăłé常ăŽăăźĺ ĽĺăăăăŽăăăŞăăźăŻč¨ĺŽăăăŚăăŞăăă¨ăăčŚĺă¨ă¨ăăŤçĄčŚăăăćăăăă
- č¤ć°čĄçˇ¨éăŤăăăŚăćĺăŽčĄăĺé¤ăăĺžăŤç§ťĺă˘ăźăăćŠč˝ăăŞăă
ăăžăŽă¨ăăăăăĄăă§ăŻĺçžăăžăăăâŚăćŤăć§ĺăčŚăŚăżăžăă
質ĺ
䝎ćłç˝Žćă˘ăźăăŽăă¨ă§ăăă
ç§ăŽç°ĺ˘ Vim 8.0 1-992 (ĺ¤ĺćć°ç) ă§ăŻçšăŤĺéĄăŻăŞăăŁăă§ăă
ăŞăăťăŠ! ă誏ćăčŞăżăžăăŤç§ăćłĺăăćŠč˝ăŽăăă§ééăăŞăăăă§ăăâŚă¨ćăŁăŚćšăăŚčŞżăšăŚăżăžăăă vi ă§čľˇĺăăă¨ćĺšăŤăŞăăŞăăŽă§ăă (@ Fedora 25)ăvim ă§čľˇĺăăă¨ăă確čŞă§ăăžăăăăăăă¨ăăăăăžă! vim ç´ äşşăŞăŽă§ăĺć㍠vi/vim ăŽăŠăĄăă§čľˇĺăăŚăćŠč˝çăŤĺăăŞăŽăă¨ĺéăăăŚăăăžăăŚăăé¨ăăăăžăăă
Bash ㎠vi-mode ăŤăŻăŞăăŽă§ăăăăăăšăăŞăă¸ă§ăŻăăĺŽčŁ ăăŚćʞăăă§ăăZsh ㎠vim-mode ă§ăŻĺŽčŁ ăăăŚăăžăă
ăăă°äžżĺŠăăă§ăăăăăăšăăŞăă¸ă§ăŻăăŤă¤ăăŚćżçĽăăžăăăvimindex ăčŚăă¨ăăăăăăăžăăăćŻăčăăč˛ă 調ăšăŚăăĺŽčŁ ăăăă¨ăŤăăžăă
ble.sh ăŤăăă vi-insert ă˘ăźăă§ăŽ C-o 㯠"accept-and-next" ă¨ăŞăŁăŚăăžăăăvi/Vim ăŽć¨ćşă§ăŻă揥ăŤĺ Ľĺăăăăä¸ĺăăŽăăź[^1]ăăăźăăŤă˘ăźăăŤĺŻžăăăăźă¨ăăŚč§ŁéăĺŽčĄăăĺžăĺăłćżĺ Ľă˘ăźăăŤç§ťăă[^2]ăă¨ăăč¨ĺŽăŤăŞăŁăŚăăžăă
ăăăŻĺŽčŁ ăăăă¨ăŤăăžăă
ĺŽăŻćżĺ
Ľă˘ăźă㯠emacs mode ăăăźăšăŤăăŚćŞă ä˝ăĺźăŁăŚăăŞăăŽă§ăć°ăŤăŞăăă¨ăŻäťăŤăăăăŽă§ăŻăŞăăă¨ćăăžăăVim ăŽĺä˝ăŽä¸ăŤăˇă§ăŤă¨ăăŚăŽćŠč˝ (ăłăăłăĺŽčĄă幼ć´ć¤ç´˘ăŞăŠ) ăçšăčžźăžăŞăăă°ăŞăăŞăăŽă§ăăŠăŽç¨ĺşŚćŽăăŽăčŻăăŽăă¨ăăăŽăćčŚăäźşăăăçšăŽä¸ă¤ă§ăă
ĺ ăżăŤăˇă§ăŤăŽćŠč˝ă¨ăăŚăŽ C-o ăŻéĺťăŤéŁçśăăŚĺŽčĄăăăłăăłăăĺăé ĺşă§éŁçśăăŚĺŽčĄăăă¨ăăŤä˝żăăăŽă§ăăăäžăă°
$ gcc a.c
$ ./a.out
ăŽĺžăŤ up up ă¨ăăŚăłăăłă幼ć´ăă gcc ăŽčĄăĺăĺşăăăă¨ăC-o ăéŁćăăă ăă§ gcc a.c 㨠./a.out ăçš°ăčżă交äşăŤĺŽčĄăăă¨ăăăă¨ăă§ăăăăăžăă
@akinomyoga ć§
č˛ă
ĺŽčŁ
ăăŚăăă ăăă¨ăŤăŞăćčŹăăŚăăžăăăćăç
ŠăăăŚçłă訳çĄăă§ăâŚâŚă
emacs-mode ㎠C-o ă使ăć
Łăăă¨äžżĺŠă§ăăă
Vim ă§č¨ăă¨ă¤ăłăľăźăă˘ăźăă§ăŽ C-@ ăŤăŤäźźăŚăăĺ°čąĄăăăăžă (:help i_CTRL-@)ă
ă¨ăăŁăŚă C-@ ăŤăŻă䝼ĺăŽĺ
Ľĺăĺ庌ĺ
ĽĺăăĺžăăźăăŤă˘ăźăă¸ćťăăç¨ĺşŚăŽćŠč˝ăăăŞăă
ă確ĺŽăăăă¨ăăĺä˝ăŻăăŻăä¸čŞçśăăăăăžăăăâŚâŚă
ĺ ąĺăăŚăă䝼ä¸ăŽäşă¤ăŽćĺă§ăăă
ăăźăăŤă˘ăźăăăćżĺ Ľă˘ăźăăŤç§ťăŁăç´ĺžăăăăŤ
C-căC-mçĺăłé常ăŽăăźĺ ĽĺăăăăŽăăăŞăăźăŻč¨ĺŽăăăŚăăŞăăă¨ăăčŚĺă¨ă¨ăăŤçĄčŚăăăćăăăăč¤ć°čĄçˇ¨éăŤăăăŚăćĺăŽčĄăĺé¤ăăĺžăŤç§ťĺă˘ăźăăćŠč˝ăăŞăă
ăŠăăç§ăŽçŤŻćŤăŽĺéĄă§ăăă
Vim ă§ Esc ăăźăĺ¤ç¨ăăăŽă§ Esc ăăźăćźä¸ăăăć "Meta-" ăŤçśăćĺăăŞăăšăĺž
ăăŞăăăăŤăăŚăăăŽă§ăăăăăŽč¨ĺŽăçĄĺšăŤăăă¨çşçăăŞăăŞăăžăăă
ĺłĺŻăŞĺçžćĄäťśăŻćŞă ä¸ćă§ăăăä¸ĺżăŽč§ŁćąşăčŚăăŽă§ĺăä¸ăăžăă
Vim ăŽć大ăŽĺŠçšăŤăăŚć大ăŽéŁçšăŻă˘ăźăăŽĺĺ¨ă§ăăăäťăŠăăŞă˘ăźăăăä¸çŽă§ĺăăă°ăăŽéŁçšăŻçˇŠĺăăăă¨ćăăžăă
ç§ăŻ
let &t_ti = "\<Esc>[2 q"
let &t_te = "\<Esc>[2 q"
let &t_SI = "\<Esc>[5 q"
let &t_SR = "\<Esc>[4 q"
let &t_EI = "\<Esc>[2 q"
ăŽăăăŞč¨čż°ă ~/.vimrc ăŤăăăă¨ă§ăă˘ăźăćŻăŤăŤăźă˝ăŤăŽĺ˝˘çśăĺ¤ăăŚăăžăă(:help terminal-output-codes)
(ăăăŻçŤŻćŤĺ¤éĺă˝ăăăŚă§ă˘ăŤăă CS ăŽĺĽŞĺăčć
ŽăăŚăăžăăăă§ăăŽă§ĺŽéăŻăăŁă¨č¤éăŞč¨ĺŽăŤăŞăŁăŚăăžăă)
bash ㎠vi-mode ăŽĺ ´ĺăinputrc ăŤäťĽä¸ăč¨čż°ăăăă¨ă§ĺŽçžă§ăăžăăă
set editing-mode vi
$if mode=vi
set show-mode-in-prompt on
set vi-ins-mode-string "\1\e[5 q\2"
set vi-cmd-mode-string "\1\e[2 q\2"
$endif
ăăăăă㯠(GNU) readline ăŽč¨ĺŽă§ăăŽă§ăble.sh ă§ăŻĺ˝çśćĺšă§ăŻăăăžăăă
ăăă§äžăă° $KEYMAP ă¨ăăĺ¤ć°ăŤ emacsăvi-insăvi-cmd ă¨ăăŁăĺ¤ăć źç´ăăăăăŤăăŚăă ăăă¨ă
ăăăłăăăŽćĺžăŤăŤăźă˝ăŤĺ˝˘çśăĺśĺžĄăă CS ăé
罎ăăăăŽĺ¤ă $KEYMAP ăŤĺżăăŚĺĺ˛ăăăă¨ăăŁăăă¨ăĺŻč˝ăŤăŞăă
ĺäşşçăŤĺŠăăăžăă
ĺ ăżăŤ $KEYMAP ă¨ăăĺ¤ć°ăŻ Zsh ă§ĺŽéăŤç¨ăăăăŚăăăăŽăćăăă ăă§ăĺĺăŤćĺłăŻăŞăă§ăă
ăă $KEYMAP ăĺŽčŁ
ăăă¨ăăçžĺ¨ăŽćŽľéă§ăŞăŤăă˘ăźăăŽĺ¤ĺŽăă§ăăćšćłăăăăŽăŞăăăăĄăăŽćšćłăćăăŚăă ăăă¨ćłŁăăŚĺăłăžăă
14223ec...c2cd318 çžćçšăŽć§ĺ (ĺĺăăăŽĺ¤ć´)
ĺ°ăăă¤ĺŻžĺżăăŚăăă¨ăăă§ăä¸ĺşĺăăăăć´ć°ăăăă¨ćăŁăŚăăăŽă§ăăăă˘ăźăăŽĺ¤ĺŽăŤă¤ăăŚăŽććĄăťčłŞĺăăăăžăăăŽă§ăăŽćçšă§ĺăć˘ăă push ăăžăăă¨ăăăŽăăčŞĺă§ăçžĺ¨ăŽă˘ăźăăăăăăŞăăŽăä¸äžżăŤćăŁăăŽă§ăă˘ăźăă襨示ăăćŠč˝ăć˘ăŤĺ ăăăăă§ăăă
ć°ăă寞ĺżăăăăŽ
C-o[ia][][b()B{}<>wW`'"]g~ gu gU g?寞ĺżäşĺŽ (çžĺ¨ä¸éĺ獯ăŞă¨ăăă§ăă)
[ia][pst]g< g>< > ă ăŁă)guu gUU g?? (čż˝č¨ (2017-09-16 11:24): g~~ ă)surround.vim ㎠ys, yss, etc.@cmplstofB (B-bar) ć§
ăĺ ąĺăăăă¨ăăăăăžă!
Vim ă§č¨ăă¨ă¤ăłăľăźăă˘ăźăă§ăŽ C-@ ăŤăŤäźźăŚăăĺ°čąĄăăăăžă (:help i_CTRL-@)ă
ä¸ăŽĺ ąĺăŽéă vi ㎠C-o ăŤăŻĺŻžĺżăăžăăăçžĺ¨ C-o ăŻä¸ćçăŤăłăăłăăĺăäťăăăăŽăŤăŞăŁăŚăăăžăăC-@ ăŤă¤ăăŚăŻčăăŚăżăžăăăă ăăăăŻăŚăźăśăŽçć§ăŤäťťăăŚĺčŞăŽĺĽ˝ăżăŤĺăăăŚ
ble-bind -m vi_insert -f C-@ 'vi-insert/@norepeat accept-and-next'
ă¨ć¸ăăŚăăăă¨ăăăă¨ăŤăăăŽăčŻăăăăăăžăăăă
ăŠăăç§ăŽçŤŻćŤăŽĺéĄă§ăăăVim ă§ Esc ăăźăĺ¤ç¨ăăăŽă§ Esc ăăźăćźä¸ăăăć "Meta-" ăŤçśăćĺăăŞăăšăĺž ăăŞăăăăŤăăŚăăăŽă§ăăăăăŽč¨ĺŽăçĄĺšăŤăăă¨çşçăăŞăăŞăăžăăă
ăăŽčŞŹćăčŚăŚćăĺşăăžăăăĺŽăŻăäťĺ㎠vi-mode ăŽĺŽčŁ ăŽéç¨ă§ ee5c82c291bbd83730a91dbb81f516a0f72b2078 ă§ăă° (č¤ć°ăŽăăźĺ ĽĺăćşăžăŁăŚăăă¨ăăŤ2ă¤çŽäťĽéăŽćĺăĺŚçăăăŞă) ăĺăčžźăă§ăăžăăžăăŚăăă㯠12f332975270112cbbf69395efcbffadaf507905 ăŤăŚć˘ăŤäżŽćŁăăăžăăăăăăăăŤé˘éŁăăŚăăă¨ăăă°ăćć°çă§ăŻä¸č¨ăŽč¨ĺŽăçĄĺšăŤăăŞăăŚăĺăĺŻč˝ć§ăăăăžăăăăăćéăăăăžăăăç°ĄĺăŤç˘şčŞăăŚé ăăžăă¨ĺš¸ăă§ăă
Vim ăŽć大ăŽĺŠçšăŤăăŚć大ăŽéŁçšăŻă˘ăźăăŽĺĺ¨ă§ăăăäťăŠăăŞă˘ăźăăăä¸çŽă§ĺăăă°ăăŽéŁçšăŻçˇŠĺăăăă¨ćăăžăă
ĺŽăŻä¸ăŽĺ ąĺăŤăć¸ăăžăăăăăŤăăăĄăă§ăçŹčŞăŤć°ăŤăŞăŁăŚăăăŽă§ć˘ăŤĺŻžĺżăăžăăăĺŽăŻăăźăăŤă˘ăźăăŤĺ
ĽăŁăç´ĺžăŤ C-m ăŞăŠăĺšăăŞăă¨ăăăĺ ąĺăŽĺĺ ăçŹčŞăŤčăăžăăŚăăăăă㌠C-l ă§ăăźăăŤă˘ăźăăŤćťăč¨ĺŽăŤăăŚăăăŽă桡䚹ăŽĺ
ăăăăăŞăă¨čăăŚă䝼ä¸ăŽ2çšăŽĺ¤ć´ăčĄăăžăăă
C-l 㯠Zsh ăŤĺŁăŁăŚ clear-screen ă¨ăăăăăă§äžăă° $KEYMAP ă¨ăăĺ¤ć°ăŤ emacsăvi-insăvi-cmd ă¨ăăŁăĺ¤ăć źç´ăăăăăŤăăŚăă ăăă¨ă
ble.sh ăŽĺ
é¨çăŞĺ¤ć°ă§ $_ble_decode_key__kmap ăăăăŤĺŻžĺżăăžăăâŚăăă ăăăăŻĺ
é¨çăŞĺ¤ć°ăŞăŽă§ĺ°ćĽçăŤĺĺăĺ¤ăăĺŻč˝ć§ăăăăžăăĺ
Źéç¨ăŽăłăăź (äžăă° $BLE_KEYMAP) ăä˝ćăăŚăčŻăăŽă§ăăăĺŽăŻăăăăă¨ăăŚă䝼ä¸ăŽ2ă¤ăŽççąăŤăăăçžçśă§ăŻĺăăžăă
ăăăłăăĺ 厚ăŻăăźăŽĺ ĽĺăčĄăăăłăŤĺč¨çŽăăăăŽă§ăŻăŞăăăłăăłăăĺŽčĄăăăăłăŤĺč¨çŽăăăžăă
ă¨ăăăŽăăăźĺ
ĽĺăŽăăłăŤăăăłăăăŽč¨çŽăăăă¨ăćŻĺĺ
¨ä˝ăĺćçťăăĺż
čŚăăăăĄăă¤ăăŽĺĺ ăŤăŞăăăă§ăăăăăŻăć˘ĺ㎠readline ă§ăĺăĺä˝ă§ăăăă ă readline ă§ show-mode-in-prompt ăŽă¨ăăŤăŻ (ăăźĺ
ĽĺăŽăăłăŤă§ăŻăŞă) ă˘ăźăăŽĺ¤ć´ăčĄăăăćăŤéăŁăŚ çšĺĽăŤăăăłăăăĺč¨çŽăăăŽă§ăŻăŞăăă¨ćăăăžăăĺžăŁăŚăăă ble.sh ă§ăĺŽčŁ
ăăĺ ´ĺăŻĺć§ăŤ show-mode-in-prompt çăŞč¨ĺŽăćäžăăăŽăéŠĺăă¨čăăžăăăă ăĺăŁăŚă¤ăăăăăŞč¨ĺŽé
çŽăŞăŽă§äťăŽă¨ăăĺŽčŁ
ăăăăŻĺăăăžăăă
ăăăłăăăŽĺ
厚ăŻĺśĺžĄăˇăźăąăłăšăĺŤă㌠ble.sh ă§ĺ
¨ăŚč§ŁćăăŚăăžă (ĺśĺžĄăˇăźăąăłăšăŤăăăŤăźă˝ăŤç§ťĺăŞăŠăĺ
¨ăŚčż˝čˇĄăăŞăă¨ćçťä˝ç˝ŽăăăăŚăăžăăŽă§âŚăä˝čŤă§ăăăăăŽăă㍠ble.sh ă§ăŻĺ¤§ä˝ăŽĺ ´ĺă§ăˇăźăąăłăšă \[\] ă§ĺ˛ăĺż
čŚăŻăŞăăŁăăăăžă)ă
ć´ăŤăĺśĺžĄăˇăźăąăłăšăŽçżťč¨ł (ECMA-48 ăă terminfo (tput) ăŤăăăˇăźăąăłăšă¸; çšăŤ SGR) ăăăŚăăžăăăăŽéăŤăble.sh ăč§Łé(翝訳)ă§ăăŞă CSI sequence ăŻçžçśă§ć¨ăŚăŚăăžăŁăŚăăžăăă¤ăžăçžçśă§ăŻăŤăźă˝ăŤăŽĺ˝˘çśćĺŽ CSI q ăŻć¨ăŚăŚăăžăăăăŤăŞăŁăŚăăăŻăă§ăăăăăăăăłăăăŤĺăčžźăăŤăŻăč§Łéă§ăăŞăĺśĺžĄăˇăźăąăłăšăééăăăăăăŤăăăăCSI q ăŤĺŻžĺżăăăăŽĺŻžĺŚăĺż
čŚăŤăŞăăžăăâŚă
ăăăäťĺăŽĺ¤ć´ăŤăăă˘ăźă襨示ăŤăćşčśłăăă ăăĺ ´ĺăŤăŻăăă§čŻăăŽă§ăăăăăă§ăŞăăă°ăŠăŽăăăŤćŠč˝ăćäžăăăŽăăăĺ°ăç¸čŤăĺż čŚăŤăŞăăžăăâŚă
@akinomyoga ć§
寞ĺżăăăă¨ăăăăăžăă
ăăŽčŞŹćăčŚăŚćăĺşăăžăăăĺŽăŻăäťĺ㎠vi-mode ăŽĺŽčŁ ăŽéç¨ă§
ee5c82că§ăă° (č¤ć°ăŽăăźĺ ĽĺăćşăžăŁăŚăăă¨ăăŤ2ă¤çŽäťĽéăŽćĺăĺŚçăăăŞă) ăĺăčžźăă§ăăžăăžăăŚăăăăŻ12f3329ăŤăŚć˘ăŤäżŽćŁăăăžăăă
ăăŽäťśă§ăăăăăăžăăăč¨ĺŽăĺ ăŤćťăă¨ăăŻăçşçăăžăăă
ăăăłăăăŽĺ 厚ăŻĺśĺžĄăˇăźăąăłăšăĺŤă㌠ble.sh ă§ĺ ¨ăŚč§ŁćăăŚăăžă
çžçśă§ăŻăŤăźă˝ăŤăŽĺ˝˘çśćĺŽ CSI q ăŻć¨ăŚăŚăăžăăăăŤăŞăŁăŚăăăŻăă§ăă
ă¨ăŽăă¨ă§ăăăç§ăŽ Bash ăŽăłăăłăăăăłăăăŻ
PS1="\w\$\[\033[00m\]\$\[\033[5 q\] "
^^^^^^^^^^^^^^^^^^^^^^
ă¨ăŞăŁăŚăăăăŤăźă˝ăŤăŽĺ˝˘çśăŤé˘ăă CS ăĺŤăžăăŚăăžăă
ăăăŚă㎠CS ăŻăăĄăă¨ăŤăźă˝ăŤăŽĺ˝˘ăĺ¤ăăŚăăžăă
ăăă ăčŚăă¨ăble.sh ăăŤăźă˝ăŤĺ˝˘çśăŤäżă CS ăçĄčŚăăŚăăŞăăăăŤćăăŽă§ăăăăăăŻăžăéăăŽă§ăăăăă
~ ăŽĺŽčŁ
Vim ăŽăăźăăŤă˘ăźăăŤăăăŚă~ ăŻăăŤăźă˝ăŤä¸ăŽčąĺčŞăŽĺ¤§/ĺ°ćĺăăă°ăŤăăăă¨ăăćŠč˝ă§ăă(:help ~)
ç§ăŻăăŽćŠč˝ăăă使ăăŽă§ăćŻéĺŽčŁ
ăăŚćʞăăă§ăă
iw/W ĺăł aw/W ăŽéă)ăăăšăăŞăă¸ă§ăŻăăé常ăŤä˝żăćăă§ăďź sorround.vim ăçăčžźăă§ăă ăăŁăŚĺŹăăă§ăă
ä¸çšăiw/W ĺăł aw\W ăŽćĺă i a ă§ĺăăŤčŚăăžăă
Vim ăŽćĺ㯠iw ăŞă inner wordăă¤ăžă犺ç˝ćĺăĺŤăžăŞăĺčŞăçŻĺ˛ăŤćĺŽăăaw ăŞă a wordăă¤ăžă犺ç˝ćĺăçŻĺ˛ăŤĺŤăăŽă§ăăă
ble.sh ㎠vi-mode ă§ăŻăŠăĄăăĺăćĺăăăăăăŤćăăžăă
$ cat /usr/share
çă¨ăăć㎠/ ăŽä˝ç˝Žă§čŁĺŽăăăă¨ăăă¨ăčŁĺŽăăšăĺčŁăä¸čĄăŤĺăžăćăŻčŻăăŽă§ăăă
ăăă§ăŞăĺ ´ĺăŤăŤăźă˝ăŤăŽä˝ç˝ŽăčŁĺŽĺčŁăŽćĺžăăäşçŞçŽăŽčĄ(5čĄăŤäşăăŞă4čĄçŽ)ăŤç§ťĺăăŚăăžăă䝼ĺžăŽĺ
ĽĺăŤćŻéăćĽăăžăă
vi-mode ă¨ç´ćĽé˘äżăŞăă塎ăĺşăăžăăăŽă§ăăăăă˘ăšăăŞăłă°ăŽčŁĺŽăŤă¤ăăŚĺ°ăć°ăŤăŞăă¨ăăăăăăžăăă
äžăă°
$ python3 <<< 'imp
ă¨ăăćăŽćăčŁĺŽăŤĺ˛ăĺ˝ăŚăăăăăź(CTRL-I)ăćźä¸ăăă¨ăçžĺ¨ăŽăăŁăŹăŻăăŞé
ä¸ăŽĺ
厚ăčŁĺŽăăăžăă
ăĄăă㊠$ cat ./ ㎠/ ăŽä˝ç˝Žă§čŁĺŽăăćăŽć§ăŞćĺă§ăă
ăŤăźă˝ăŤăŽĺ˝˘çśăŤă¤ăăŚă§ăăăäťĺĺ ăăŚăăă ăă "--INSERT--" ăŽčĄ¨ç¤şă§ĺ¤§ćşčśłă§ăăăăăă¨ăăăăăžăă
ăăă ăčŚăă¨ăble.sh ăăŤăźă˝ăŤĺ˝˘çśăŤäżă CS ăçĄčŚăăŚăăŞăăăăŤćăăŽă§ăăăăăăŻăžăéăăŽă§ăăăăă
ćŹĺ˝ă§ăăăăłăźăăćšăăŚăăčŚăŚăżăă¨ăăăč§ŁéăăăŚăŤăźă˝ăŤăŽä˝ç˝Žă¨ SGR ăŽçść éˇç§ťăŽč¨çŽăŻăăŚăăăăăŠăă翝訳ăťăăăłăăĺ 厚ăŽĺ¤ć´ăŻăăŚăăžăăă§ăăâŚă大ĺĺăŤĺŽčŁ ăăćăŞăŽă§ăăăăźăăŚć¸ăăŚăăžăăžăăăăŞăŽă§ăăăŽçšăŤé˘ăăŚăŻĺ¤§ä¸ĺ¤Ťă§ăă
(ăă¨ć示ăăă PS1 ăčŚăŚć°äťăăăŽă§ăăăăăăŤăčŚăä¸ăăŁă readline ăŽč¨ĺŽăčŞăżéă㌠CSI q
ă¨ć¸ăăžăăăăCSI ... SP q (DECSCUSR) ă§ăăăăăŽçšăč¨ćŁăăŚăăăžăă)
č§ŁéăăăŚăŤăźă˝ăŤăŽä˝ç˝Žă¨ SGR ăŽçść éˇç§ťăŽč¨çŽăŻăăŚăăăăăŠăă翝訳ăťăăăłăăĺ 厚ăŽĺ¤ć´ăŻăăŚăăžăă
ăăăăăžăăăä˝ăăăŁăăăŁăŚăăăŽăçč§Łă§ăăžăăâŚâŚă
ă¨ăăăăăčŞăżčžźăżĺćăŻăŤăźă˝ăŤĺ¤ĺ˝˘ăŽ CS ăŻćĺšă ăăă˘ăźăăŽĺ¤ć´ăçŁčŚă§ăăé ťĺşŚă§ăŻăăŤăźă˝ăŤĺ¤ĺ˝˘ăŽ CS ăŻč§ŁéăăăŞăăăă¨ăăçč§Łă§ăăăăă§ăăăăă
éăŁăŚăăăăăăă解誏ăăăä¸č¨ăéăăžăăă¨č¨ăŁăŚăăă ăăă°ăăă§ăă
ăăżăžăăăăăăăăŚăć°ăĽăăŤăŞăŁăăăăăăžăăăăé¨ĺçăŞčżäżĄăŤăŞăŁăŚăăžăŁăăŽăŻă硨éăŽéä¸ă§čޤăŁăŚć稿ăăŚăăžăŁăŚăăžăăăäťăĺ ¨ä˝ăŤĺŻžăăčżäżĄă硨éăăŚăăăŽă§ăăăĺ ăŤä¸č¨ăŽçšăŤă¤ăăŚă ăă
ăčŞăżčžźăżĺćăŻăŤăźă˝ăŤĺ¤ĺ˝˘ăŽ CS ăŻćĺšă ăăă˘ăźăăŽĺ¤ć´ăçŁčŚă§ăăé ťĺşŚă§ăŻăăŤăźă˝ăŤĺ¤ĺ˝˘ăŽ CS ăŻč§ŁéăăăŞăăăă¨ăăçč§Łă§ăăăăă§ăăăăă
ăăżăžăăăččśłăăă§ăăăč¨ăăăăŁăăă¨ăŻéăăžăăăăble.sh ăăŤăźă˝ăŤĺ˝˘çśăŤäżă CS ăçĄčŚăăŚăăŞăăăŤé˘ăă芹ă§ăé ťĺşŚăŽčŠąă§ăŻăăăžăăă§ăă
@cmplstofB (B-bar) ć§
ćšăăŚ
ăăŽäťśă§ăăăăăăžăăăč¨ĺŽăĺ ăŤćťăă¨ăăŻăçşçăăžăăă
確čŞăăŚăăă ăăžăăŚăăăă¨ăăăăăžăăćéăăăăăăŚăăžăŁăăăă§ć縎ă§ăăăżă¤ăăłă°ăŽĺéĄă§ăăžăĺä˝ăăŞăă¨ăăăŽăŻăble.sh ăŽăŠăăă§ăăšăăŚăăĺŻč˝ć§ăăăăŽă§ăăžăćŤăć§ĺăčŚăŚăżăžăă
ăăăŻĺŽčŁ ăăžăăăĺŽăŻĺŽčŁ ĺčŁăŤăŻĺ ĽăŁăŚăăăŽă§ăăăăăăăăŽććĄăä¸ăăŁă掾éă§ĺŞĺ é ä˝ăä¸ăăŚăăžăăă
Vim ăŽćĺ㯠iw ăŞă inner wordăă¤ăžă犺ç˝ćĺăĺŤăžăŞăĺčŞăçŻĺ˛ăŤćĺŽăăaw ăŞă a wordăă¤ăžă犺ç˝ćĺăçŻĺ˛ăŤĺŤăăŽă§ăăăble.sh ㎠vi-mode ă§ăŻăŠăĄăăĺăćĺăăăăăăŤćăăžăă
ăăăŻăăšă§ăăâŚăĺźć°ăăăă¨ăăŽăŤăŚăłă (2yaw vs 2yiw) ăă寞ĺżă§ăăŚăăžăăă§ăăăĺžă§ćšăăžăă
ăăżăžăăăăă㯠-- INSERT -- ăŤĺŻžĺżăăćăŤé
罎č¨çŽăŽăłăźăăć´çăăăŽă§ăăăăăŽă¨ăăŤĺăčžźăă ăă°ă§ă df4685891ad069f74aa67a6cc22a94c37d638fed ă§ç´ăăă¤ăăă ăŁăăŽă§ăăăăăă§ăăăăăçžĺ¨ăăĄăă§ăŻĺçžăăŞăăŽă§ăăăăăă§ç´ăŁăŚăăŞăăă°ăžă調ăšăžăă(äťăžă§ćčăăŚăăŞăăŁăăŽă§ăăăăŠăŽ commit id ă§čŠŚăăŚăăăŽăăĺ ąĺăŽăăłăŤćăăŚé ăăă¨ç˘şčŞăŽäşĺşŚćéăé˛ăăŚčŻăăăăăăžăăăâŚ)
vi-mode ă¨ç´ćĽé˘äżăŞăă塎ăĺşăăžăăăŽă§ăăăăă˘ăšăăŞăłă°ăŽčŁĺŽăŤă¤ăăŚĺ°ăć°ăŤăŞăă¨ăăăăăăžăăă
ăăăć°ăŤăŞăăă¨ăăăă°ćŻéćăăŚé ăăă°ă¨ćăăžăăăăĄăăŽäťśăŤă¤ăăŚăä˝ăĺčŁăăŞăăă°ăăăŠăŤăă§ăŻăăĄă¤ăŤĺăčŁĺŽĺčŁăŤăăăă¨ăŤăăŚăăžăăăă˘ăšăăŞăłă°ă¨ăăŚä˝ăéŠĺăŞĺčŁçćăŽćĄăăăă°ćăăŚé ăăă¨ĺŠăăăžăăçžçśă§ăŻăäťăŤĺčŁăćă澎ăă°ăŞăăŽă§ă(ć¨ćşĺ ĽĺăŤăăĄă¤ăŤĺăĺ Ľăăăă¨ćăăă¨ăăŞăă¨ăéăă) ăăĄă¤ăŤĺăčŁĺŽăăăŽăŻăžă匼ĺ˝ăăŞă¨ăăăăăŤčăăŚăăăžăăă
ăŤăźă˝ăŤăŽĺ˝˘çśăŤă¤ăăŚă§ăăăäťĺĺ ăăŚăăă ăă "--INSERT--" ăŽčĄ¨ç¤şă§ĺ¤§ćşčśłă§ăăăăăă¨ăăăăăžăă
ăăăă¨ăăăăăžă! ä˝ă確čŞăăćéăăŞă push ăăŚăăžăŁăăŽă§ăăžă ä¸ĺĺăŞçšăĺşăŚăăăăăăăžăăăăăăŽćăŻăžăćăăŚé ăăă°ĺš¸ăă§ăă
c2cd318...32f1e67 ć´ć°
俎ćŁăăăăŽ
M-? ă ESC ? ă¨č§ŁéăăESC 㯠beepăaw ăŽćŻăčăăçžĺ¨ăŽćĺă犺ç˝äťĽĺ¤ăŽă¨ăĺčŞăŤçśă犺ç˝ăĺŤăăăçžĺ¨ăŽćĺă犺ç˝ăŽă¨ăĺčŞăŤĺ
çŤă¤çŠşç˝ăĺŤăăăć°ăă寞ĺżăăăăŽ
surround.vim ㎠ys{move}{foo} 㨠yss{foo} ({foo} = <... ă t... ăŤăŻćŞĺŻžĺż )~< >>> << g~~ guu gUU g??ćŞĺŻžĺżăŽăăŽ
[ia][pst]@cmplstofB (B-bar) ć§
ăä¸čŠąăŤăŞăŁăŚăăăžăă䝼ä¸ăŤă¤ăăŚăŻäżŽćŁăăžăăă
surround.vim 寞ĺżăŤă¤ăăŚĺ
ăŤčŚćăŽăăăžăă ysiw" ăŤă¤ăăŚă§ăăăç´ ăŽ vim ă§ĺăăŞăăŁăăŽă§čŞżăšăć surround.vim ă¨ăăăăŽăĺ
Ľăăă¨ä˝żăăăăăŤăŞăăăăă¨ăăăă¨ăĺăăŁăăŽă§ăăăŽĺćă§ĺŽčŁ
ăăăă¨ăŤăăžăăăĺăć˘ăăăsurround.vim ăŽćŠč˝ăŽä¸ă§ă ys 㨠yss ă ă寞ĺżăăăă¨ăŤăăžăăă
ĺ
㎠vim ă§ćĄĺźľăŽăăăŞăŽă§ăble.sh ă§ăćĄĺźľă¨ăăŚĺŽčŁ
ăăăă¨ăŤăăžăăă使ăĺ ´ĺăŤăŻă~/.bashrc ㎠ble.sh ăŽč¨ĺŽă§äťĽä¸ăŽăăăŤč¨čż°ăăŚä¸ăăă
if [[ $- == *i* ]]; then
source /path/to/blesh/ble.sh noattach
# 䝼ä¸ăŽčĄăčż˝ĺ
source "$_ble_base/lib/vim-surround.sh"
fi
注ćçš
<tag>...</tag> ăŽĺ˝˘ăŽăăŽ) ăŤăŻćŞĺŻžĺżă§ăăsurround.vim ă§ăŻ ys3iw" ăŞăŠăŽăăăŤĺźć°ăćĺŽăăă¨ăăŽĺä˝ăĺăăăŞăăŁăăŽă§ăăăçžçśă§ ble.sh ă§ăŻ y3iw ăŞăŠă¨ćĺŽăăćă¨ĺć§ăŽçŻĺ˛ăćŹăăăăŤăŞăŁăŚăăžăăăăăăăčŻăĺä˝ăăăăžăăăăć示ä¸ăăăyss ăŤé˘ăăŚăŻ g~3~ ăŞăŠă¨éăŁăŚ ys3s ăŽăăăŞćĺŽćšćłăŻä˝żăăžăăăăăăŻĺ
㎠surround.vim ă¨ĺăĺśéă§ăăçšăŤčŚćăăăă°äťĽä¸ăĺŽčŁ ă§ăăžă
<tag>...</tag> ăŽĺ˝˘ăŽăżă°ds cs yS ySS ăŞăŠ surround.vim ăŤĺŤăžăăäťăŽćŠč˝let g:surround_45 = "<% \r %>" ăŞăŠăŤĺŻžĺżăăč¨ĺŽćšćłé˘éŁăăăĺăăăžăăăăăăźăăŤă˘ăźăă§ ESC ăćŁăăĺŚçă§ăăŚăăŞăăŁă (Meta 俎飞ă¨ăăŚćąăŁăăžăžăŤăŞăŁăŚăă) ăŽă俎ćŁăăžăăăăžăăăşăŹăăăăăŞăăŽă§ć縎ă§ăăăăăčĺłăăăăăă§ăăăăžă芌ăăŚăăă ăăă¨ăĺŻč˝ă§ăă
äťăžă§ăŤăĺ ąĺăăă ăăăăŽăŤă¤ăăŚăä¸ćŚăăŽćçšă§ăŽćŞćąşçé çŽăć´çăăžăă
C-@ ㍠accept-and-next ăĺ˛ăĺ˝ăŚăĺŻč˝ć§ â ĺžă§ăăĄăă§čĺŻ@akinomyoga ć§
ăŠăŽ commit id ă§čŠŚăăŚăăăŽăăĺ ąĺăŽăăłăŤćăăŚé ăăă¨ç˘şčŞăŽäşĺşŚćéăé˛ăăŚčŻăăăăăăžăăăâŚ
ăăăžăăăćć
Žä¸čśłă§ăăăăăăăăŻăăăăžăă
ç§ăŻ Git ä˝ćĽăŤăŻĺ
¨ăăŽĺĺżč
ă§ăăŽă§ăäťăŤćł¨ćăăšăçš(ĺ ąĺăŽĺ˝˘ĺźç)ăăăă°ćŻéćăăŚăă ăăă¨ĺŠăăăžăă
iw/Wăaw/W ăŽćĺ1b9e2a4 ă§ç˘şčŞăăžăăăăăăă¨ăăăăăžăă
ăăăžăăăäťčŚç´ăăăăăăšăăŞăă¸ă§ăŻăăç´šäťăăéăsurrond.vim ăĺż
čŚă ă¨ăăć¨ăŽćł¨éăäťăĺżăăŚăăžăăă
ćéăćăăăăăă¨ă¨ăŞăçłă訳çĄăă§ăă
ă§ăăă dsăcs ăĺ ăăŚăăă ăăŞăă§ăăăăăăéĄăăăžăă
ăžăăsurround_45 ĺ¤ć°ăŤç¸ĺ˝ăăćŠč˝ă¨ăăăă寧ă ble.sh 菚製㎠vim-sorround.sh çŹčŞăŽćŠč˝ă¨ăăŁăćšăăăă§ăăă
ăłăăłăĺąéĺăłčĄĺ
ćźçŽăŽăăźăŤăç°ĄĺăŤćżĺ
Ľă§ăăă¨ĺŹăăă§ăă
ĺ
ˇä˝çăŤăŻăéŠĺ˝ăŞăăŹăăŁăŻăšă§ $(/) ă $((/)) ăĺ
Ľĺăăăă¨ăăăă¨ă§ăă
ĺäşşç㍠yss- ă§ $( line )ăysiW= ă§ $(( 4+6 )) ă¨ăăŁăćä˝ăçćłă§ăă
(ă¤ăžă - ă $(/) ăŤă= ă $((/)) ăŤĺŻžĺżăăŚăăă¨ăăŁăćăă§ă)
1b9e2a4 ăŤăŚă
č¤ć°čĄăŤäşăčŁĺŽĺčŁăăăćăŽä¸ĺ
ˇĺă俎ćŁăăăŚăăăă¨ă確čŞăăžăăăăăăă¨ăăăăăžăă
č¨ăăăŚăżăă¨ăăă˘ăšăăŞăłă°ă§ăŽčŁĺŽăŻçžĺ¨ăăŁăŹăŻăăŞä¸ăŽăăĄă¤ăŤ/ăăŁăŹăŻăăŞčŁĺŽăăăŞăă§ăăâŚâŚă
:help f)ĺ¤ĺăăŽéĄăčŚăŚăĺăăăŞăă¨ćăăžăăĺ
ˇä˝äžă§ç¤şăăžăă
^ ăŻăŤăźă˝ăŤä˝ç˝Žă§ăă
çžĺ¨ăăźăăŤă˘ăźăă§ăă
揥ăŽăăăŞčĄăŤăăăŚăfs ă¨ăăĺ
Ľĺăăăžăă
$ cat ~/doc/a.csv | sort -r | uniq
^
ĺ˝çśĺćšăŤ "s" ăŻçĄăăŽă§ć¤ç´˘ăŻĺ¤ąćăăăŤăźă˝ăŤăŻä¸ĺă§ăă
$ cat ~/doc/a.csv | sort -r | uniq
^
ăăă§ăćŹĺ˝ăŻĺžćšăć¤ç´˘ăăăŽă ăŁăă¨ćăç´ăăFs ă¨ăă䝣ăăăŤ
fs ă§ "s" ăć¤ç´˘ăăăăăŽă¨čŚĺă㌠, ăĺ
Ľĺăăžăă
ăăăăćăŤăçžçś (1b9e2a4)
ă§ăŻăŤăźă˝ăŤăŻä¸ĺăăăăăŻĺĺćĺăăćéă§ć¤ç´˘ăăăĺčŞăŤç§ťĺăăŚăăžăăžăă
ăă㯠Vim ăŽćĺă¨äźźăăŞăăŽă§ăă§ăăă°
ăć¤ç´˘ă夹ćăăŚăăăŽĺčŞăč¨ćśăă;/, ăĺ
ĽĺăăăćăŻăăŽĺčŞăĺćš/ĺžćšăŤĺć¤ç´˘ăăă
ă¨ăăćŠč˝ăŤăăŚćʞăăă§ăă
% ăŽĺŽčŁ
Vim ăŽăăźăăŤă˘ăźăăŤăă㌠% ăŻă寞ĺżăăćŹĺź§(ăăăăŻăăăŤćşăăăăŽ)ăŽĺŻžăŤéŁăśăă¨ăăćŠč˝ăĺ˛ăĺ˝ăŚăăăŚăăžăă(:help %)
ĺŽčŁ
ăăŚăăă ăă¨ă¨ăŚăĺŹăăă§ăă
ăŞăăVim ă§ăŻăăŽă寞ĺżăăćŹĺź§ăăŽćĺă matchpairs ăĺ¤ć´ăăăă¨ă§č¨ĺŽă§ăăžăăăăˇă§ăŤăŽăŠă¤ăłă¨ăăŁăżă¨ăăŚăŻć¨ćşăŽ ()ă{}ă[] ă§ĺĺăŞć°ăăăžăă
(ä¸ć㍠<> ăŽçľăŞăŠăŤĺŻžĺżăăă¨ăŞăă¤ăŹăŻăăŽćźçŽĺăŤĺĺżăăŚé˘ĺăŞăă¨ăŤăŞăăăă§ăă)
emacs-mode ă§ăŽćä˝ĺçť ăčŚăŚăżăă¨ă"'select, copy, and paste'" ă¨ăă
ĺĽăé¸ćăă貟ăäťăăŚăăžăăăvi-mode ă§ăŻä¸ĺŻč˝ăŞăŽă§ăăăăă
çćłă¨ăăŚăŻăăźăăŤă˘ăźăă§ v ă§é¸ćéĺ§ăcădăy çăŽćä˝ăĺăäťăă^C/^[ ă§é¸ćăč§Łé¤ăă¨ăăŁăăăŽăăăă§ăă
bash ć¨ćş (set -o emacs) ă§ăŻ CTRL-_ ăŤăĺ¤ć´ăç ´ćŁăă¨ăăćŠč˝ăĺ˛ăĺ˝ăŚăăăŚăăžăăăăă㯠ble.sh ăŤăă Readline ăŤăŻăŞăăŽă§ăăăăă
ăăăăă°ăăăźăăŤă˘ăźăă§ăŽ u ăŤĺ˛ăĺ˝ăŚăŚćʞăăă§ăă
- ăă˘ăšăăŞăłă°ăŽčŁĺŽĺčŁ â ăăčŻăĺčŁă¨ăăŚä˝ăčăăăăă?
- ćżĺ Ľă˘ăźă
C-@㍠accept-and-next ăĺ˛ăĺ˝ăŚăĺŻč˝ć§ â ĺžă§ăăĄăă§čĺŻ- Esc ăăźăćźä¸ăăăć "Meta-" ăŤçśăćĺăĺž ăăăŤé俥ăăă¨ăăźăčŞčăăăŞăă¨ăăăă
- č¤ć°čĄçˇ¨éăŤăăăŚăćĺăŽčĄăĺé¤ăăĺžăŤç§ťĺă˘ăźăăćŠč˝ăăŞăăă¨ăăă
ăă˘ăšăăŞăłă°ăŽčŁĺŽĺčŁ â ăăčŻăĺčŁă¨ăăŚä˝ăčăăăăă?
ä¸čż°ăăžăăăčŻăčŁĺŽĺčŁăŻćăäťăăžăăă§ăăă
ćżĺ Ľă˘ăźă
C-@㍠accept-and-next ăĺ˛ăĺ˝ăŚăĺŻč˝ć§ â ĺžă§ăăĄăă§čĺŻ
ç§ăŻć˘ăŤ ~/.bashrc ă§
ble-bind -m vi_insert -f C-@ 'vi-insert/@norepeat accept-and-next'
ă¨ăăĺ˛ăĺ˝ăŚăčĄăŞăŁăŚăăžăăă確ĺŽăäź´ăŞăĺä˝ăŞăŽă§ć¨ćşăŤăăŞăăťăăčŻăă¨ćăăžăăă
ă¨ăăăćŁç´ Vim ă§ăŽ CTRL-@ ăŽćĺă¨ăŻĺ°ă
éăăŽă§âŚâŚă
Esc ăăźăćźä¸ăăăć "Meta-" ăŤçśăćĺăĺž ăăăŤé俥ăăă¨ăăźăčŞčăăăŞăă¨ăăăă
ăăăžăăăăžă çşçăăžăă@akinomyoga ć§ăŽćĺ
ă§çşçăăŞăă¨ăăăă¨ăŻç˘şĺŽăŤç§ăŽçŤŻćŤĺ´ăŽĺéĄă§ăăŽă§ăăăĄăă§ĺŻžĺŚăăžăă
ăŠăăăć°ăŤăŞăăăŞăă§ăă ăăă
č¤ć°čĄçˇ¨éăŤăăăŚăćĺăŽčĄăĺé¤ăăĺžăŤç§ťĺă˘ăźăăćŠč˝ăăŞăăă¨ăăă
ăă㯠1b9e2a4 ăŤăăăŚçşçăăžăăă§ăăăăăăă¨ăăăăăžăă
ččśłć°ĺłă§ăăďźvim ăä¸ă
éă㌠:help ăăăŽă鏹éśăăĺ ´ĺăŻ
ăă¤ă§ăăŠăă§ă :help ăă ă¨ăăăľă¤ăăăăăžăăŽă§ďźăŞăłăŠă¤ăłă§ćĺźăăé˛čڧă§ăăžăă
ăăăžăăăăăžăăŤĺ¤ćŠč˝ăćăżăăăžăăăé˘ĺăŞćĄäťśăŻé ć ŽăŞăćžç˝ŽăăŚăă ăăă
@cmplstofB (B-bar) ć§
ăăăă¨ăăăăăžăă
commit id ăŽč¨čż°ăăăă¨ăăăăăžă!
ăŠăŽ commit id ă§čŠŚăăŚăăăŽăăĺ ąĺăŽăăłăŤćăăŚé ăăă¨ç˘şčŞăŽäşĺşŚćéăé˛ăăŚčŻăăăăăăž ăăăâŚ
ăăăžăăăćć Žä¸čśłă§ăăăăăăăăŻăăăăžăă
ăăăăăăŤé˘ăăŚăŻç§ăćčăăŚăăŞăăŚăĺ ăŽčżäżĄăć¸ăăŚăăă¨ăăŤćłĺ°ăăăă¨ă§ăăŽă§ćć Žä¸čśłă¨ăăăă¨ăŻćąşăăŚăăăžăă (čăăŚăżăă° GitHub ăŽäťăŽăăă¸ă§ăŻăă§ă Issue ăĺ ąĺăăă¨ă㍠commit id ăč¨čż°ăăŚăăăŽăä˝ăăżăăă¨ăăăăžăăăăâŚ)ă
ăăă§ăăăăŻăäťĺăŽăĺ ąĺăčŞăă§ commit id ăăăă¨ĺăăăăăă¨ćăăžăăăăăăăŚăăă ăăă¨ĺŠăăăžăă
ç§ăŻ Git ä˝ćĽăŤăŻĺ ¨ăăŽĺĺżč ă§ăăŽă§ăäťăŤćł¨ćăăšăçš(ĺ ąĺăŽĺ˝˘ĺźç)ăăăă°ćŻéćăăŚăă ăăă¨ĺŠăăăžăă
git pull ăŻă使ăă§ăăăble.sh ăćć°çăŤć´ć°ăăă¨ă㯠git pull & make (& make install) ă§ć¸ăżăžăăds cs 寞ĺżăăžăăă$( \r ) 㨠$(( \r )) ă寞ĺżăăžăă
č¨ăăăŚăżăă¨ăăă˘ăšăăŞăłă°ă§ăŽčŁĺŽăŻçžĺ¨ăăŁăŹăŻăăŞä¸ăŽăăĄă¤ăŤ/ăăŁăŹăŻăăŞčŁĺŽăăăŞăă§ăăâŚâŚă
ăăăŞăŽă§ăăăâŚă
ĺ
ăŽčżäżĄĺžăŤăăăăčăăŚăăăŽăŻ (äžăă°ĺ
ăŽäžă§ăŻ) python3 ăŤĺŻžă㌠import ăčŁĺŽă§ăăăĺŹăăă¨ăăăă¨ăŞăŽă§ă"ăă˘ăšăăŞăłă°ç¨ăŽčŁĺŽé˘ć°" ăăŚăźăśă§č¨ĺŽă§ăăăăăŤăăă¨ăăćăăăăŞăăă¨ăăăă¨ă§ăăăăă ăĺäşşçăŤçžçśăŽčŁĺŽăŽć çľăżă大ĺš
ăŤć´çăăăăŽă§ăăă寞ĺżăăăŤăăŚă vi mode ăŽĺŽčŁ
ăçľăăŁăŚăăăŤăăžăă
:help f)ăŞăăťăŠăăăăŻć°ăĽăăžăăă§ăăă寞ĺżăăžăăăăŻăčŞĺă ă¨ăăăăŁăăă¨ăŤăŻć°ăĽăăŞăăŽă§ăvim ăă使ăăŽćšăŤčŠŚăăŚăăă ăăŚĺżĺźˇăă§ăă
ăăăŻĺŽčŁ ăăžăăă
ăă¸ăĽă˘ăŤă˘ăźăăťé¸ćă˘ăźăă¨ăăăăŽăŽăă¨ă§čŻăă§ăăăăăĺŽăŻä˝żăŁăăă¨ăĺ ¨ăăŞăăŁăăŽă§ćăăŁăŚĺŽčŁ ăăŚăăžăăă§ăăâŚăĺ¤ĺă"é°ĺ˛ć°ĺŽčŁ " ăŤăŞăŁăŚăăžăăžăăĺăć˘ăăĺŽčŁ ă芌ăăŚăżăžăă
ăăżăžăăăăăŻăăăăŻćʞăăćŠč˝ă§ăăăăble.sh ă§ăŻćŞĺŽčŁ
(emacs mode ă§ă使ăăŞă) ă§ăă
ĺŽăŻćčĺŻ (memo.txt#L1571-L1591) ăăăăŽă§ăăăčŞĺčŞčşŤăä˝ă使ăăŞăăăŽă§ăăăäťć§ç˘şĺŽă§ăăăŤçľăăŁăăŽă§ăăăĺ°ăč°čŤăăăŚé ăăă°ăäťć§ç˘şĺŽăăŚĺŽčŁ ă§ăăă¨ćăăžăă䝼ä¸ăŽăăăăăŤă¤ăăŚä¸ťčŚłă§ć§ăăžăăăŽă§ăŠăĄăăŽćšăčŞçśăŤćăăăăçç´ăŞćčŚăé ăăă°ă¨ćăăžăă
幼ć´é
çŽ (éĺťăŤĺŽčĄăăăłăăłăăŽ1ă¤1ă¤) ăŽç§ťĺă redo/undo ăŽĺŻžčąĄăŤĺŤăăăĺŚă?
ĺč: Zsh ăŻĺŤăăŚăăăBash ăŻĺŤăăŚăăŞăă
幼ć´é çŽćŻăŤçˇ¨é幼ć´ăč¨é˛ăăăăĺ ¨ä˝ăŤĺŻžăăŚçˇ¨é幼ć´ăč¨é˛ăăă
ĺč: Bash ăŻé çŽăă¨ăZsh ăŻĺ ¨ä˝ăŤĺŻžă㌠(ăăăăăă¨é çŽăă¨ăŤ undo ăăćšćłăăăăăăăăŞă)ăâťĺ ¨ä˝ăŤĺŻžăăŚçˇ¨é幼ć´ăč¨é˛ăăă°ăĺççăŤăŻä¸ă¤ä¸ă¤ăŽĺąĽć´é çŽăŤĺŻžăă幼ć´ăć˝ĺşă§ăăăăă§ăăăăăŽĺĺŚçăéĺšçăŤăŞăăžăă
ĺäşşçăŤăŻ Zsh ăăă Bash ăŽĺä˝ăŽăťăăćŚăĺăăăăăă¨čăăŚăăăŽă§ăăăăăă§ăăăăă
ă¨ăăă§ vimindex ㎠U ăŽçŽćăŤ
U 2 1čĄä¸ăŽćčżăŽĺ¤ć´ăăăšăŚĺăćśăă
ă¨ć¸ăăăŚăăăŽă§ăăăăăšăŚăă¨ăăă¨ăăăéăăăăŚăăžăăĺŽéăŤčŠŚăăŚăżăă¨ăăăšăŚĺăćśăă¨ăăé°ĺ˛ć°ă§ăŻăŞăăćčżăŽĺ¤ć´ (U čŞčşŤăĺŤă) ăĺăćśăă ăăŽăăăŤčŚăăžăăä˝ăăĺçĽă§ăăăăăăžă u ăŤé˘ăăŚă注ćçšăŞăŠăăă°ćăăŚé ăăă°ĺš¸ăă§ăă
確ĺŽăäź´ăŞăĺä˝ăŞăŽă§ć¨ćşăŤăăŞăăťăăčŻăă¨ćăăžăăăă¨ăăăćŁç´ Vim ă§ăŽ CTRL-@ ăŽćĺă¨ăŻĺ°ă éăăŽă§âŚâŚă
ăăŻăć¨ćşă§ĺŽčŁ ăăăŽăŻĺăăăŤăăăŽă§ăăăvi mode ăŚăźăśăăăŽčŚçšăăăă¨ăăăăăžă!
ăăĄăă§ĺŻžĺŚăăžăăăŠăăăć°ăŤăŞăăăŞăă§ăă ăăă
ćŻĺşŚčŠŚăăŚé ăăăăă¨ăăăăăžăăăăŽĺéĄăŻĺăć˘ăăäżçă¨ăăŚăé ăŽçé ăŤă§ă罎ăăŚăăăă¨ăŤăăžăă
ăă㯠1b9e2a4 ăŤăăăŚçşçăăžăăă§ăăăăăăă¨ăăăăăžăă
ćżçĽăăžăăăăžăä˝ăĺéĄăăăăžăăăăçĽăăä¸ăăă
ččśłć°ĺłă§ăăďźvim ăä¸ă éă㌠:help ăăăŽă鏹éśăăĺ ´ĺăŻăă¤ă§ăăŠăă§ă :help ăă ă¨ăăăľă¤ăăăăăžăăŽă§ďźăŞăłăŠă¤ăłă§ćĺźăăé˛čڧă§ăăžăă
ăăăă¨ăăăăăžă! äžżĺŠă§ăă! (ă¨ćăŁăŚĺžăŤ surround ă¨ćăŁăŚăżăăăăăžăăă¨č¨ăăăŚăăžăăžăăăâŚsurround ăŻć¨ćşćŠč˝ă§ăŻăăăžăăăăă)
ăťăă䝼ä¸ăŤă¤ăăŚăŽç˘şčŞăăăă¨ăăăăăžă!
ăăăžăăăčż˝ĺ ă§ĺ ąĺăăăăžăă
ăăăšăăŞăă¸ă§ăŻăăŤĺŻžăă c (ĺé¤ĺžćżĺ
Ľă˘ăźăăŤç§ťčĄ) ăă d ă¨ĺăćŻčăăŤăŞăăžăă
Ver: 1b9e2a4
ăžăă>/< ĺăłĺ¤§ćĺĺ°ćĺçłťçľąăŽĺä˝ăŽç˘şčŞĺ ąĺăĺżăăŚăăžăăăĺ
¨ăŚĺŽç§ăŤĺä˝ăăžăăăăăăă¨ăăăăăžăă
@cmplstofB ć§
ă˘ăŤăŚăłăĺăçľąä¸ăăăăŽă§ăăăäťĺžă¨ăĺŽăăăéĄăč´ăăžăă
căăăšăăŞăă¸ă§ăŻăăŤĺŻžăă c (ĺé¤ĺžćżĺ Ľă˘ăźăăŤç§ťčĄ) ăă d ă¨ĺăćŻčăăŤăŞăăžăă
ăĺ ąĺăăăăă¨ăăăăăžăă俎ćŁăăžăăăăăăŻĺ¤§ăăšăŞăŽă§äť push ăăžăă 3958c51842df0b474877349f4c94966de9578fe6 (俎ćŁăăŚăăć°äťăăăŽă§ăăăăăăă㌠c ăčťä¸ŚăżĺăăŞăăŞăŁăŚăăăăăăăžăă)ă
ćŠč˝ăćĄĺźľăăŚăăä¸ă§ĺ
é¨ć§é ă大ĺš
ăŤĺ¤ć´ăăăă¨ăăă°ăă°ĺşăŚăăăŽă§ăăăŽăăăŤäťĽĺĺăăŚăăăăŽăăă°ă§ĺăăŞăăŞăŁăŚăăžăă¨ăăăă¨ăăăă¨ăăăă¨ăŻăçłă訳ăăăžăăăăćżçĽä¸ăăăžăăäťĺ㯠vi_command ăăźăăăă vi_command 㨠vi_omap (ăăăă Vim ㎠nmap, omap ăŤĺŻžĺż) ăŤĺĺ˛ăăćăŽăă°ă§ăăă
ăžăă>/< ĺăłĺ¤§ćĺĺ°ćĺçłťçľąăŽĺä˝ăŽç˘şčŞĺ ąĺăĺżăăŚăăžăăăĺ ¨ăŚĺŽç§ăŤĺä˝ăăžăăă
ä¸ă¤ä¸ă¤ç˘şčŞăăă ăăžăăŚćŹĺ˝ăŤăăăă¨ăăăăăžă!
俎ćŁăăăă¨ăăăăăžăă確čŞăăžăăă
ă˘ăŤăŚăłăĺăçľąä¸ăăăăŽă§ăăăäťĺžă¨ăĺŽăăăéĄăč´ăăžăă
ăăĄăăăăä¸čŠąăŤăŞăăžăă
Commit ID: 3958c51
ä˝ĺşŚăăăăžăăăăăăăăăŻäťč¨ăăšăă ă¨ćăŁăăŽă§ĺ ąĺăăžăă
ăŤăźăăŚăźăśăŤăŞăçşăŤăsu - ăĺŽčĄăăăăšăŻăźăăćăĄčžźăă¨ăăăăŞăă¨ăŤăŞăăžăă
ćĺăŽćĺăŻăĺ
Ľĺăă¨ăłăźăăăŞăă¨ăăĺ°ĺ¸¸ăŽćĺă§ăăăç´ĺžăŤćščĄ(LF/CR ă¨ăăŻĺăăăŞăă§ă)ăăăŚăăăšăŻăźăăŽćĺĺă丸čŚăăŤăŞăăžăă
ăăŽăžăžĺ
ĽĺăăŚćąşĺŽăăă¨ă(ćăă)ćĺăŽä¸ćĺăăăăšăŻăźăă¨ăăŚĺ¤ĺŽăăăăčŞčăŤĺ¤ąćăăžăă
ăžăă丸čŚăăŤăŞăŁăŚăăćĺĺăŻăĺŽčĄăăăăăăăŽăăăŞăłăăłăăŻăŞăăă¨ăăă¨ăŠăźăĺşăžăă
ĺäşşçăŤăăăŻăˇăšăă ä¸ĺąéşăăăă¨ćăŁăăŽă§ă俎ćŁăăŚćʞăăă§ăă
Readline ăĺ
¨ćť
ăŞăŽă§äžăă° ble.sh ăčŞăżčžźăă çść
ă§ Dash ă辡ĺăăŚăsu - ăĺŽčĄăăŚăĺć§ăŽçľćăŤăŞăăžăăă
ăăĄăă ble.sh ăčŞăżčžźăžăŞăăă°ćŁĺ¸¸ăŞăăšăŻăźăčŞč¨źăă§ăăžăă
Commit ID: 3958c51
@cmplstofB ć§
ăĺ ąĺăăăă¨ăăăăăžă! cbab20b1b90e9998394e1e2a81b06553d6c1e6e3 stty ăŽč¨ĺŽăç´ăăžăăăăăăă§ăăăăă
(ăăźâŚăă㯠ble.sh ăçŻäşşă ăŁăăŽă§ăăăčŞĺăŽă¨ăăă§ăĺăçžčąĄăŤăŞăă¨ăăăă¨ăŻčŞčăăŚăăăŽă§ăăăä˝ă root ăŤăŞăăŞăăă¨ăťć¤ç´˘ăăŚăäźźăççśăŽäşşăĺşăŚăăŞăă¨ăăăă¨ăăćžç˝ŽăăŚăăžăăăble.sh ăĺĺ ă ăŁăă¨ăŻăéçă§ć¤ç´˘ăăŚăĺşăŚăăŞă訳ă§ăâŚăćĽăăăăéăă§ă)
ăăăă¨ăăăăăžăďźćŁĺ¸¸ăŞćĺăŤăŞăăžăăă
ç§ăćŽćŽľăŻ sudo ă§ăăšăŻăźăçĄăăŽčŞč¨źă°ăăă ăŁăăŽă§äťčżć°ăäťăăžăăă§ăăă
Commit ID: cbab20b
é迌ăŤčŞŹćłăŽăăă§ĺ¤ąç¤źă§ăăăTwitter ăŽćšă§ç´šäťăăăăŠă°ă¤ăłăŤă¤ăăŚčŞŹćăăžăă
ăžăăVim ăŽăăŠă°ă¤ăłăăăźă¸ăŁă¨ă㌠vim-plug ăăĺ§ăăăžăă
ć°ăăăĺççăŞä˝çłťă§ăăŽă§ă
vim-operator-surround 㯠vim-operator-user ăŤäžĺăăăŽă§ăvim-plug ĺźă ă¨ăăăŞćăăŽč¨ĺŽăĺż čŚă§ăă
call plug#begin(~/.vim/plugged)
" ăăŠă°ă¤ăłăŽčŞăżčžźăż
Plug 'kana/vim-operator-user'
Plug 'rhysd/vim-operator-surround'
call plug#end()
" Surround.vim ăŤăłăăłăä˝çłťăĺăăă
nmap <silent> ys <Plug>(operator-surround-append)
nmap <silent> ds <Plug>(operator-surround-delete)
nmap <silent> cs <Plug>(operator-surround-replace)
let g:operator#surround#blocks = {}
let g:operator#surround#blocks['-'] = [
\ { 'block' : ["'", "'"], 'motionwise' : ['char', 'line', 'block'], 'keys' : ['q'] },
\ { 'block' : ['"', '"'], 'motionwise' : ['char', 'line', 'block'], 'keys' : ['Q'] },
\ { 'block' : ['(', ')'], 'motionwise' : ['char', 'line', 'block'], 'keys' : ['p'] },
\ { 'block' : ['[', ']'], 'motionwise' : ['char', 'line', 'block'], 'keys' : ['b'] },
\ { 'block' : ['{', '}'], 'motionwise' : ['char', 'line', 'block'], 'keys' : ['B'] },
\ ]
ăăăčŞăżčžźăă ă (:source $MYVIMRC)ă:PlugUpdateăĺŽčĄăăŚăăŠă°ă¤ăłăĺ°ĺ
ĽăăŚä¸ăăă
ăăŽč¨ĺŽă§ăă¨ăéŠĺ˝ăŞĺčŞä¸ă§ ysiw ă¨ăăă¨ä¸é¨ăŤ block: ă¨čĄ¨ç¤şăăăäžăă° q ă¨ĺ
Ľĺăăă¨ĺčŞă '/' ă§ĺ˛ăžăăžăă
Surround.vim ăŽćšăć ĺ ąăčŚă¤ăăăăăă¨čŚăăŹććĄăăăŚăçľćć˘ćşăăăŚăăžăŁăăă¨ăă芍ăłăăžăă
@cmplstofB ć§
ăăăă¨ăăăăăžă! ĺŽăŻăăć˘ăŤ surround.vim ĺźăŽĺŽčŁ
ăé˛ăă§ăăžăŁăŚăăăŽă§ăä¸éăçľăăŁăŚăă確čŞăăăăžăăă(čż˝č¨: ĺŽăŻ ds ăŻä¸éăçľăăŁăŚ cs ăŤĺ
Ľăă¨ăăă§ă)
ćŹĺ˝ăŤăăăžăăâŚâŚă
@akinomyoga ć§ăčżäżĄăé ăăŚăăăăŽă§ăă
git pull çĽăăŞăăŁăă§ăăgit ăŻéćăă§ăćä˝ă§ăăă¨ăăăă¨ă§ "git" ă¨ăăĺĺăăăăŽă§ăăăăăăăăćąăăŞăă¨ăŻâŚâŚă
undo ăŤé˘ăăŚăŻĺşćŹç㍠Bash ăŽăăăŤĺăăăŚćʞăăă§ăă
U ăłăăłăăŽćĺăăăç§ăăăĺăăăŞăă§ăăăă ău/CTRL-R çă¨éăăU ăăčŞčşŤăä¸ă¤ăŽçˇ¨éăłăăłăăŤăŞăŁăŚăăăŽă§ău/CTRL-R ă§ăU ăŤăăćä˝čŞä˝ăă undo/redo ă§ăăžăă
ĺŽéĺéĄ Vim ăŽćĺźăă§ăăăăŽĺä˝ăŻăăăăŤăăăăăăăžăăăă¨ăăăŽă§ăä˝ç¨ĺăăăŤăăćĺăŞăă ă¨ăăăăžăă
ăŞăăU ă§ăĺ
ăŤćťăăăăĺşĺăăŻăćżĺ
ĽăłăăłăăăăŽç§ťčĄçă§ăă(:help undo-blocks/:help i_CTRL-G)
ĺäşşçăŤăundo-block ăŞăŠăŻĺŽčŁ
ăăŞăćšăčŻăă¨ćăăžăă
ăăăăćç¨ăŞăŽăŻăăŞăč¤é㪠undo/redo ăčŚćąăăăĺžăŽä˝ćĽă§ăăăBash ăŽčĄçˇ¨éă§ăŻăăé ťçšăŤăŻčľˇăăŞăă ăăăăă§ăă
akinomyoga ć§ăăăŁăăăŁăŚăăžăăăăăăăĺŽčŁ
ăăă¨ăăŞăéăăŞăăăăŞăŽă§ă
case "$ins" in
(['<t'])
ble/widget/vi-command/bell
return ;;
('p') prefix='( ' suffix=' )' ;;
('b') prefix='[ ' suffix=' ]' ;;
('B') prefix='{ ' suffix=' }' ;;
(ĺžçĽ)
ăžăă§ăăă° q ă§ '/'ăQ ă§ "/" ăĺ
Ľĺă§ăăăăăŤăăăăŽă§ăăă
bash:ble.sh/lib/vim-surround.sh
# in 'ble.sh/lib/vim-surround.sh`
('q') prefix="'" suffix="'" ;;
('Q') prefix='"' suffix='"' ;;
ăŽăăăŤč¨ĺŽăăŚă(ĺ˝çśă¨ăăă°ĺ˝çśă§ăă)ä¸ćăčĄăăŞăă§ăă
ĺźç¨çŹŚăŽĺ
Ľĺă q/Q ăç¨ăăŚčĄăŞăč¨ĺŽăŻăŠăŽăăăŤč¨čż°ăăă°ăăă§ăăăăă
Vim ćżĺ
Ľă˘ăźăă§ăŻćŹćĽ CTRL-K ăŻăăźăăăăŤĺ°ĺăăăŚăăŞăăăăŞćĺăŽĺ
ĽĺăŤä˝żăăăžăă(:help i_CTRL-K)ă
寧ăăłăăłăăŠă¤ăłăŤăăăŚăăŽăăăŞćĺă桡ĺ
Ľăăăă¨ăŻĺąéşăŞć°ăăăăŽă§ăble.sh ㎠vi-mode ăŤăăă CTRL-K 㯠kill-line ăŽăžăžă§ăéĄăăăžăă
Commit ID: 9afa3fa
@cmplstofB ć§
undo ăŤé˘ăăŚăŻĺşćŹç㍠Bash ăŽăăăŤĺăăăŚćʞăăă§ăă
ăăăă¨ăăăăăžă! ćżçĽăăžăăăăă emacs mode ăŽćšă¨ăä¸çˇăŤĺŽčŁ
ăăăăŽă§äťăăĺŽčŁ
ăăăăŻĺăăăžăă (merge ăăŚăăĺŽčŁ
ăăćšăčŻăć°ăăăăăăŠăăć°ăă¤ăăăĺŽčŁ
ăăŚăăăăâŚ)ă
ĺŽéĺéĄ Vim ăŽćĺźăă§ăăăăŽĺä˝ăŻăăăăŤăăăăăăăžăăăă¨ăăăŽă§ă
ăăăŞăŽă§ăăă
çľąč¨ăăăăăă§ăŻăŞăăŽă§ĺŽăăŞäşăŻč¨ăăžăăăăăżăŞăă㎠Vim ăŽč¨ĺŽăăĄă¤ăŤăčŚăă¨ăU ㍠undoăă¤ăžă CTRL-R ăĺ˛ăĺ˝ăŚăŚăă
ăŞăăťăŠăăăŽćšĺăć¤č¨ăăŚăżăžăăăăăă"ă弽ăżă§č¨ĺŽăăĄă¤ăŤăŤć¸ăăŚä¸ăă" ă¨ăă誏ćăăŠăăăŤć¸ăăŚăăăŽăčŻăăăă§ăăăăă
ä¸ăŤăć¸ăăŤăŞăŁăč¨ĺŽă§ćŁăăăăăŞć°ăăăžăăăă ă([a-zA-Z]) ăŽčĄăăăä¸ăŤć¸ăăŞăă¨ăăăžăăăăăžăçžĺ¨ăăŽčžşăăŻćżăăć¸ăćăăŽĺŻžčąĄă§ăăăă¨ă¨ăăă㎠$(), $(()) ăŽäťśăŽĺŻžĺżă¨ĺćăŤĺ¤é¨ăăćĄĺźľă§ăăäťçľăż (let g:surround_45 çăŞ) ăä¸ăăäşĺŽă§ăăŽă§ăăăŽă¨ăăŤă誏ćăăăăžăă
ble.sh ㎠vi-mode ăŤăăă CTRL-K 㯠kill-line ăŽăžăžă§ăéĄăăăžăă
ăŻăăĺăčăă§ă! ĺŽăŻä¸çŹ C-k ăŻăă¤ă°ăŠăă ăŁăăŽă§ăăăćťăăžăăăBash ㎠C-k ăć˘ĺŽă§ kill-line ă§ăăăă¨ă¨ăčŞĺă§ä˝żăŁăŚăżăŚăăăŻćˇˇäšąăŽĺ
ă ăŞă¨ćăŁăăăă§ăăćč§ĺŽčŁ
ăăăŽă§ăć˘ăăŚăă¤ă°ăŠăă使ăăăäşşăŽăăăŤäťĽä¸ăŽ Wiki ăăźă¸ăŤč¨ĺŽćšćłăŻć¸ăăžăăăăäťĺžć˘ĺŽă§ C-k ăăă¤ă°ăŠăăŤăŞăäşĺŽăŻăăăžăăăŽă§ăĺŽĺżä¸ăăăžă!
32f1e67...795ceca ć´ć°
ăăżăžăăăăă°ăč˛ă ĺşăăŚăăžăăâŚă
ć°ćŠč˝
[ia][pst]% {count}%vim-surround.sh: č¨ĺŽ "bleopt vi_surround_45", etc. ăŤĺŻžĺżĺä˝ĺ¤ć´
r{char} gr{char} ă§ä¸ć¸ă寞蹥ăçč˛C-m, C-h, DEL; nmap: o, O ă§ă¤ăłăăłăăčŞčăă°äżŽćŁ
2yj ăŞăŠ) ăăăă¨ă¨ăŠăźăŤăŞăăă°ăŽäżŽćŁyib ăŞăŠ) ä˝ç˝ŽăŽç§ťĺă辡ăăăŞăăă°ăŽäżŽćŁisearch ăŽéä¸ă§ăăźăăŤă˘ăźăăŤç§ťčĄăăă¨é¸ćçść
ăăăŽăžăžăŤăŞăăă°ăŽäżŽćŁ{count}L ă§çžĺ¨čĄăăä¸ăŤčĄăĺ ´ĺă{count}H ă§çžĺ¨čĄăăä¸ăŤčĄăĺ ´ĺăŞăŠă§çŻĺ˛ăčŁčżăăă°ăŽäżŽćŁ+ - H L yib ăŞăŠă§é犺ç˝čĄé ăŤç§ťăćĄäťśăŽäżŽćŁgg G (çžĺ¨ăŽăłăăłăĺ
ăŽç§ťĺ) ă§ăĺźć°ççĽćăŤĺźć° 1 ă¨č§ŁéăăŚăăăă°ă俎ćŁ$? ĺăł $_ ăŽĺžŠĺ
ăĺăăŞăăŞăŁăŚăăăă°ăŽäżŽćŁchar_width=emacs ăŽă¨ăăâ
ăŞăŠăŽćĺ (U+2000 - U+2600) ăŽćĺĺš
ă常㍠1 ăŤăŞăŁăŚăăăă°ăŽäżŽćŁćŞĺŻžĺż
vim-surround.sh (ds cs): ă¤ăłăăłăăăăăšăăŞăă¸ă§ăŻă p s tăăłăăłă yS, ySSu C-r U / ? n N (ăăă㯠master ăŤăăźă¸ĺž)@cmplstofB ć§
ĺźç¨çŹŚăŽĺ Ľĺă q/Q ăç¨ăăŚčĄăŞăč¨ĺŽăŻăŠăŽăăăŤč¨čż°ăăă°ăăă§ăăăăă
ăăăŻć˘ăŤ dotfiles ăŤčż˝ĺ ăŞăăăăăŽă§ĺéĄăăăžăăă
795ceca...5f95282 ć´ć°
ć°ćŠč˝
/ ? n N : gj gk _ g0 g<home> g^ g$ g<end> gm go g_ ge gEv char, V line, C-v block);~ u U ? s x <delete> r C D X S R Yvim-surround.sh ăŤăŚĺ˛ăżćĺă¨ă㌠t T < ăćĺŽăăă¨ăăăżă°ĺăŽĺ
Ľĺăĺăäťăăăă°äżŽćŁ
>> ăŞăŠ) ă§ă¨ăŠăźăĺşăăă°ă俎ćŁg~ ăĺźăłĺşăăŞăăă°ă俎ćŁk - G gg ăŞăŠă§ĺąĽć´é
çŽăç§ťĺăăă¨ăăŤ(ćĺžăŽćĺă§ăŞă)čĄćŤăŤăŤăźă˝ăŤăćĽăăă°ăŽäżŽćŁ> ăăăł < ă§çŠşčĄăćśćť
ăăăă°ăŽäżŽćŁble-bind -d" ăŽĺ
é¨ă§ăăšĺĺąéă辡ăăŁăŚĺşĺăćŁăăăŞăăă°ăŽäżŽćŁĺä˝ăŽĺ¤ć´
c{linewise} ({linewise} = j k H L + - gg G) ăŽă¨ă犺čĄăćżĺ
ĽăăăăăŤäżŽćŁd ă§ćçľčĄăĺé¤ăăă¨ăĺăŽčĄăŤç§ťĺăăăăăŤäżŽćŁf F t T r gr ㍠C-? ăŽĺ˝˘ĺźă§ćĺăćĺŽă§ăăăăăŤäżŽćŁdd, yy, etc. ăăăł D ăŻćçľčĄă§ 2 䝼ä¸ăŽĺźć°ăä¸ăăă¨ă¨ăŠăźăŤăăăăăŤäżŽćŁćŞĺŻžĺż
u C-r U (ăăźă¸ĺžăŽäşĺŽ)I A J gJ ^] ăăăšăăŞăă¸ă§ăŻăăŽćŁăăĺä˝ (ăăŽĺ
)= (ćŞĺŽ)vim-surround.sh: cs ds ăŽă¤ăłăăłă, yS ySS (ćŞĺŽ)@akinomyoga ć§
čż˝ĺ ăŽć§ă
ăŞĺŽčŁ
ăăăă¨ăăăăăžăăčżäżĄé
ăăžăăă
çĺă¨čŚćăčż˝ĺ ă§ăăăžăăä˝ĺşŚăä˝ĺşŚăćŹĺ˝ăŤăăăžăăâŚâŚă
: ăłăăłăăŽĺ˝šĺ˛é常ăŞĺ¤ąç¤źăćżçĽă§čăăžăăăăăŻä¸ä˝ä˝ăăăăłăăłăăŞăŽă§ăăăăă
Vim ㎠ex ă˘ăźăăŽăăăŞăăŽă ă¨ĺćăŤč§Łéăďź
$ sudo atp install emacs
-- NORMAL --
ă¨ăăăăăŞçść
ă§ : ăćźä¸ăďź
$ sudo atp install emacs
:s/atp/apt
ăŽăăăŞĺ ĽĺăčĄăŞăŁăăŽăĄďź
$ sudo apt install emacs
-- NORMAL --
ăŽăăăŞçść ăŤăŞăăă¨ăĺćăŤäşćăăăŽă§ăăďźä˝ă辡ăăăžăăă§ăăă
ăă¤ăăăŚăăăžăăăăăăăŞăăďźăăŻăăŤăźă˝ăŤăŽĺ˝˘çśăă˘ăźăéă§ĺ¤ć´ăăăă§ăă
ăťăăŽĺ°ăă§ăăç§ăŽçŤŻćŤĺśĺžĄă¸ăŽçč§Łăé˛ăżďźăŤăźă˝ăŤĺ¨ă㎠CS ăă˘ăźăĺ¤ć´ćŻăŤé俥ăăăăăăă¨ăçĄčŹăŞčŚćă ă¨ăŻéă
ăŤćżçĽăăŚăăžăăăăăăŠăăŤăâŚâŚă
ĺ°ĺ¤§ăŞč¨ăčăŤăŞăŁăŚăăžăăžăăďźä¸ĺŻč˝ďźăăăăŻćéăŽĺ¤ăă§çĄçăŞăă°ăăäşĺşŚă¨ăŤăźă˝ăŤăŽĺ˝˘çśăŤäżăčŚćăŻăăžăăă
More Than Human---Wikipedia ăŤăăă¨ďźăMore Than Humanăă¨ăă SF ĺ°čŞŹăŽä¸ă§ďźăbleshăă¨ăăé čŞăďźă(6äşşăŽč˝ĺč ă) ĺăĺăăăăă¨ăăăăăŞćĺłă§ç¨ăăăăŚăăăăă§ăă

ăĄăăŁă¨çĄçç˘çăŞč§Łéă§ăăďźwidget ăŽçľĺăă§ĺźˇĺăŞçˇ¨éč˝ĺăçşćŽăă ble.sh ăŤéĄć¨ă§ăăžăăďźăMore Than Humanăă¨ăăéĄĺă _More Than Bash_ 㪠ble.sh ăŤäźźĺăŁăŚăć°ăăăžăăă
ăă´ă¨ăăŤä˝żăăă¨é˘ç˝ăăăă§ăă
@cmplstofB ć§
ăčŚćăŞăŠăăăă¨ăăăăăžă!
ăăżăžăăăăă㯠: ăéăăŚĺĽăŽč˛ă
ăŽăłăăłăăĺźăłĺşăăăăăŤăăăăăŤć çľăżăčż˝ĺ ăăă ăă§ăĺŽéăŽăłăăłăăŻćŞă ć´ĺăăŚăăžăă (çŠĺă沢幹ăăăžăăâŚ)ă芌é¨ç㍠:q (ăˇă§ăŤçľäş) ăŞăŠăăăăŽăżă§ăăć¤ç´˘ (/, ?) ăĺŽčŁ
ăăăă㍠cmap ăĺŽçžŠăăĺż
čŚăăăŁăŚăăăŽăăăŤĺă㍠: ăĺŽčŁ
ăăă¨ăăăă¨ăŞăŽă§ăăă
äťăŽă¨ăăăčŚćăĺşăŞăéăăŻăăăăăŽăłăăłăăŽĺŻžĺżăăăäşĺŽăŻăăăžăăăčŚćăĺşăă¨ăăŚăä¸ćŚ master ăŤăăźă¸ăăŚăăăŤăăžăăă
ĺ ăżăŤăble/widget/vi-command:ĺĺ ă¨ăăé˘ć°ăĺŽçžŠăăŚăăă ăăă°ă:ĺĺ ĺźć°... ăŤĺŻžăăŚăăŽé˘ć°ăĺźăłĺşăăăăăăŤăŞăăžă (ăă ăwidget ăŽĺŽčŁ
ćšćłăŤă¤ăăŚăŽčŞŹćăăŞăăŽă§ćĺłăŽăŞăć
ĺ ąăăăăăžăăăăăăżăžăăâŚ)ă
ăăăŽĺŻžĺżăŻĺŽăŻç°Ąĺă§ăăă˘ăźăăĺăćżăăă¨ăăŤĺśĺžĄăˇăźăąăłăšăĺăă°čŻăăŽă§ăĺŽăŽă¨ăăăć˘ăŤăä¸ć¸ăă˘ăźăăŽćăŤăŻ SM/RM(?25) (\e[?25h, \e[?25l) ăŤăăŁăŚăŤăźă˝ăŤăé襨示ăŤăăăăăŞĺśĺžĄăčĄăŁăŚăăăžăă
ăŠăŽăăăŤĺŻžĺżăăăŽăčŻăăăăăŤă¤ăăŚăćčŚăăăă ăăžăăăăăćčŚăăŞăăă°ĺćăŤĺŽčŁ ăăžă
tput Ss ăăăć) ăăăŠăŤăă§ăŤăźă˝ăŤĺ¤ć´ăćĺšăŤăăăăŠăăDECSCUSR 㯠terminfo ă§ăŻ Ss ăç¨ăăăăŚăăăăă§ăă [1]ă)ĺŽăŽă¨ăă TERM ăŤäžĺăăŚăŚăźăśăĺ ´ĺĺăă§č¨ĺŽăć¸ăăŞăăă°ăŞăăŞăăăăŞč¨ĺŽé
çŽă§ăŻăŞăăŚăble.sh ăŽä¸ă§č§Łćąş (TERM äžĺăŽĺăćżă㯠tput ăç¨ăăŚĺ
é¨çăŤč§Łćąş) ă§ăăăăăŞč¨ĺŽé
çŽăŤăăăă¨ăăăŽăŻăăăžăăĺ ăżăŤč¨ĺŽăŽ $'\e[1m-- NORMAL --\e[m' ㎠\e[1m ăŞăŠăŻ ble.sh ĺ
é¨ă§ ANSI ăŤĺşăĽăč§Łéă tput ăŽçľćăŤĺżăăŚéŠĺăŞăăŽăŤç˝ŽăćăăŚĺşĺăăŚăăžă (䝼ĺăĺéăă ăŁăă¨ć¸ăăžăăăćšăăŚăłăźăăčŞăă¨ăăŻă罎ăćăăŻăăŚăăžăăâŚ)ăăăŽćĺłă§ DECSCUSR ă ble.sh ă§čŞăżĺăă¨ăăćăăăăžăăăăăŽčžşăăŻĺăăăăăă¨ăŽĺ
źăĺăă§ăă
ć ĺ ąăăăă¨ăăăăăžă!
blesh ă¨ăăĺčŞăŽćĺłăŻç˘şčŞăăăăŻăăŚăăăŽă§ăăăć çťăŤă¤ăăŚăŻçĽăăžăăă§ăăăč˛ă
ă¨ĺĺă§é˘éŁă調ăšăăŽăŻćĽ˝ăăă§ăăăăčŞĺăăăăžăă(ăă ăžăăç¸ĺ˝čŞŹĺžĺăăŞăéăăŻä˝ăĺžäťăăŻă"ĺ
Źĺźă§ăŻ" ăăăăăŞăăŞă¨ăăăŽăŻăăăžăăăŚăźăśăŽćšă§č˛ă
čăăŚăăă ăăŽăŻĺŹăăă§ă)
ăă´ăăăŁăćšăčŻăă§ăăăăĺŽăŽă¨ăă ble.sh ăŻä˝ăĺć§ăçşćŽăăăăŽă§ăŻăŞăăŚçŠşć°ăŽăăăŤĺĺ¨ăćčăăŞăăŚă使ăăăăŽăŤăăăăŞăăŞăŠă¨čăăŚăăăăăžă (vim ăŽç´°ăăĺä˝ăŤćăŁăŚăăăŽăăăăăăă¨ăŤăăăžă)ăăŞăŽă§ăăă´ăä˝ăă¨ăăăăăăăăŞăşă ă¨ăăăŽă§ăăăăăăŞăŤă桥ç˝ăŞăăŽăăăăŞăă¨čăăŚăăžăăă
čż˝č¨ ăŤăźă˝ăŤĺśĺžĄăŽčłć
DECSCUSR ăŽĺźć°ă§ 5 䝼ä¸ăŻéŤăăŽçžĺçă¨č§Łéăă獯ćŤăăăŁăăŻă5f95282...af62754 ć´ć°
äťéąćŤăŻé˛ăăăăŞăăŽă§ăă push ăăžăăăŹă¸ăšăż "x ă¨ăăźăŻ mx ăŽĺŻžĺżă§ć šĺššăĺźăŁăăă¨ăä˝ăăăšăăăŚăăŞăăŽă§ä¸ĺŽĺŽăăăăăžăăăă厚辌ä¸ăă
ć°ćŠč˝
mx, `x, 'x (x = [][<>`'a-zA-Z"^.])gi, <C-d> (犺ćĺĺăŽă¨ă exit), "x (ăŹă¸ăšăż)I, A, p, P, J, gJ, aw, iwyS, ySS, ySs, cS, xmap S, gSbleopt tab_width: ăżăăŽčĄ¨ç¤şĺš
, ć˘ĺŽĺ¤ '' (tput ă使ç¨))bleopt indent_offset: > ă < ăŽă¤ăłăăłăăŽĺš
, ć˘ĺŽĺ¤ 4 (8 ăă 4 ăŤĺ¤ć´ăă)bleopt indent_tabs: > ă < ăŽă¤ăłăăłăăŤăżăăç¨ăăăăŠăă, ć˘ĺŽĺ¤ 1 (true)ăă°äżŽćŁ
ESC ? ăä¸çˇăŤçš°ăčżăăăŚăăăă°ăŽäżŽćŁg? ăĺăăŞăăŞăŁăŚăăăŽă俎ćŁ/ ?): ć¤ç´˘ĺŻžčąĄăŽĺ
Ľĺä¸ăŤ C-c ăăŚăăăŁăłăťăŤăăăŞăăă°ăŽäżŽćŁr (visual char/line)): ĺ
¨ä˝ă罎ćăăăăŽăé¸ćçŻĺ˛ăŤćżĺ
ĽăăăŚăăăă°ăŽäżŽćŁ$): čĄćŤă§ $ ăăăă¨ăăŤčĄ¨ç¤şăć´ć°ăăăŞăăă°ăŽäżŽćŁ0): ăŞăăŹăźăżăčŞčăăŚăăŞăăŁăăă°ă俎ćŁ/ ? n N 寞ĺżăŽéăŤĺăčžźăă§ăăăŽă§äżŽćŁcomplete -F something -D ă§çťé˛ăăăŚăăčŁĺŽé˘ć°ăćŁăăĺŽčĄăăăŚăăŞăăŁăăŽă俎ćŁPROMPT_COMMAND ăŤăăŁăŚč¨ĺŽăăă PS1 ăćžăŁăŚăăŞăăŁăăă°ă俎ćŁC-z (fz) ăăă¨ćçťéŤăăćŁăă確äżă§ăăŚăăŞăăă°ăŽäżŽćŁĺä˝ĺ¤ć´
< >): Visual block ă§ăŽćŁăăćŻăčă: / ?): ćĺĺĺ
Ľĺä¸ăŤçŠşćĺĺă§ DEL or C-h ăăăă¨ă§ăăŁăłăťăŤă§ăăăăăŤäżŽćŁJ, gJ): ĺźć°ăŤĺŻžĺżp): ćĺžăŽčĄă§ćżĺ
Ľăăă¨ăăŤä˝ĺăŞčĄăĺ
ĽăăŞăăăăŤäżŽćŁY D R): č¨é˛ăăăă¸ăĽă˘ăŤă˘ăźăăŽç¨ŽéĄă俎ćŁ.SHELL_COMMAND): ĺŽčĄăăŞăăłăăłăăŤč˛ăă¤ăăŚăăăŽăŻăăăăăăŽă§ă°ăŹăźă˘ăŚăăăć§ăŤĺ¤ć´äťăŽĺ¤ć´
ćŞĺŽčŁ
., xmap o, O (ĺŽčŁ
äşĺŽ)u, C-r, U (ăăźă¸ĺžăŽäşĺŽ)=, xmap ăăăšăăŞăă¸ă§ăŻăăŽćŁăăĺä˝ (ćŞĺŽ)ăăăăŞăăăăă¸ăĽă˘ăŤă˘ăźăăŽăăăšăăŞăă¸ă§ăŻăăŻé˘ĺăŤăŞăăžăăăĺžĺăă§ă
@akinomyoga ć§
# 誤ćä˝ă§ăăŠăźăŻăăŚăă¨ćăăžăăăăăžăăă
: ăłăăłăăŽĺ˝šĺ˛ćŠă¨ăĄăăăŚăăžăăăwidget ăŽä˝ăćšăŻă˝ăźăšăčŚăŚĺ埡ăăăŚé ăăžăă
ăăăă¨ăăăăăžăďź ćŻéăăăăăăžăă
@akinomyoga ć§ăŤč¨ăăăă§ăă
ăăă (é迌ăŤčŞŹćłă§ăă) ććĄăăă¨ăăăŞăďź
bleopt is_toggle_cursor_shape_in_vi_mode:=1 ăŽăăăŤăăă¨çşçžăă) ăŻăăŞăă——...
bleopt cs_vi_normal_mode_cursor_shape=$'\e[2 q' # ăăźăăŤ
bleopt cs_vi_ins_mode_cursor_shape=$'\e[5 q' # ćżĺ
Ľ
bleopt cs_vi_operator_mode_cursor_shape=$'\e[4 q' # y/c/d etc...
...
ăăăžăă誏ćăççĽăăžăă
$ cat <<. > tmp/bbbb.ttt
-bash: čŚĺ: ăă˘ăăăĽăĄăłă㎠3 čĄçŽă§ăăĄă¤ăŤçľäş (EOF) ăŤéăăžăă (`.' ăĺż
čŚ)
Esc ă§ăăźăăŤă˘ăźăăŤç§ťčĄăăŞăäťśçľčŤăăč¨ăă¨ďźăăžă č§ŁćąşăăŚăăžăăăăžăďźäťăŽă¨ăăďźă¨ăăăă確ĺŽăŤçś´ăăé俥ă§ăăăăź (ĺ
ˇä˝çăŤăŻ C-c ăć˝°ăăŚăžă) ă vi-insert/normal-mode ăŤĺ˛ăĺ˝ăŚăŚăăžăă
ĺăŤăčż°ăšăžăăăďźăăăŻčŞćŠăŽĺéĄă ă¨ćăăŽă§ďźč§ŁćąşăŻăăĄăă§é ĺźľăăžăăďźä¸ĺżĺ ąĺăăăŚăăăžăă
Esc ăćźăăŚăăĺ¤§ä˝ 0.4 sec 䝼ĺ
ăăăăŤčąć°ĺăă_ćŽéăŽ_ăăźăé俥ăăă¨ďźăăźăăŤă˘ăźăăŤç§ťčĄăďźăžăăăŽăăźăŤĺ˛ăĺ˝ăŚăăăŚăăĺä˝ăĺŽčĄăăăžăăEsc ăăźă 0.4 sec 䝼ĺ
ăŽééă§__4ĺ__ (3ĺă§ăŻé§çŽă§ă) ĺŠăă¨ăăźăăŤă˘ăźăăŤç§ťčĄăăžăăEsc ăŤçśăăŚăăç§ć°_䝼ĺ
_ă§äťăŽăăźăé俥ăă㨠Meta-* ă¨čŚĺăăăăă¨ăăççśăŽăťăăä¸čŹçăŞć°ăăăžăăCommit ID: af62754
@cmplstofB ć§
ăăżăžăăăçžçśă§ăŻ C-q RET ăžă㯠C-v RET ăŞăŠă¨ăăŚč¤ć°čĄçˇ¨éăŤăăŚĺ
¨ăŚĺ
ĽĺăăŚăăă ăăŚăăăC-j ă§ĺŽčĄăăŚăăă ăăŞăăă°ăŞăăžăăă
ăććłçăŤçśăăăăă¨ăăăă¨ăćăăăŞć㍠RET ăĺ
Ľĺăăăĺ ´ĺăĺŽčĄăăăŤćščĄăćżĺ
Ľăăăă¨ăăăŽăŻĺă
ăăčăăŚăăăŽă§ăăăble.sh ăŽććłč§ŁćăŤčޤăăăăă¨ăĺŽčĄă§ăăăŻăăŽăłăăłăăĺŽčĄă§ăăŞăăă¨ăăăă¨ăŤăŞăĺ
źăăŞăăŽă§ć
éăŤăŞăŁăŚăăăŽă§ăăăăăŽčžşăăŻăăźă¸ĺžăŤĺŻžĺżăăžăă
ăăăŻä¸ĺşŚć°ăŤăŞăŁăŚăăă¨ăăă§ăăăăăč§ŁćąşăăŞăăăă§ăăă ble.sh ăŤăăźăăŹăź (ble.sh ăĺŽéăŤčŚăŚăăăă¤ăĺăťćĺăŽĺăťăăźăŽĺăč¨é˛ăăćŠć§) ăçľăżčžźăă§ĺŽčĄăăŚăăăăă¨ăčăăŚăăžăăă
ăăŽĺăŤăăŠăŽăăăŞĺä˝ăćĺž ăăăŽăčĄăéăăăăăăăŞć°ăăăăŽă§ă確čŞăăăŚăăă ăăŚăăă§ăăăă:
ESC ăćĽăă (揥ăŽćĺăĺž
ăăăŤ) ăăŽĺ ´ă§ăăźăăŤă˘ăźăăŤç§ťčĄăăăă¨ăćłĺŽăăŚăăžăăăçžçśăŽ ble.sh ă§ăŻćéééăŤäžĺăăă揥ăŽćĺăćĽăăžă§ĺŚçăăžăă (ă¨ăšăąăźăăˇăźăąăłăšăŽĺ
é ăăăăăŞăăŽă§)ăćŞă ăĄăăă¨čŞżăšăŚăăŞăă§ăăăăăśăă寞ĺżă§ăăžăăă¨ăăĺ ąĺé ăăĺä˝ăŤă¤ăăŚă0.4 sec 䝼ä¸çľéăăă¨ăăăăăŠăŽăăăŤĺä˝ăăăŽă§ăăăăăăžăăŠăŽăăăŤĺä˝ăăăă¨ăćŹćĽćĺž ăăăŽă§ăăăăăăăăăăăăăăăăăžăă
@akinomyoga ć§
ĺăăăžăăăăśăŁăĄăăă¤ăłăżăŠăŻăăŁăăˇă§ăŤă§ăŻăăžăăă˘ăăăĽăĄăłăă使ăăŞăă¨ćăăŽă§ďźĺĽăŤĺéĄăŞăă¨č¨ăă°ăŞăăŽă§ăăâŚâŚă
Esc ăăźăăźăăăŻĺŽĺ ¨ăŤç§ăŽčŞčăééăŁăŚăăžăăă
ăăăăăŚ
ESCăćĽăă (揥ăŽćĺăĺž ăăăŤ) ăăŽĺ ´ă§ăăźăăŤă˘ăźăăŤç§ťčĄăăăă¨ăćłĺŽăăŚăăžăăă
ăŻăďźăăćłĺŽăăŚăăžăăăăăăžăăâŚâŚă
0.4 sec 䝼ä¸çľéăăă¨ăăăăăŠăŽăăăŤĺä˝ăăăŽă§ăăăăă
čąć°ĺăăźăćźä¸ăăĺ ´ĺ: ăăŽčąć°ĺăăłăăłăăŠă¤ăłăŤćżĺ Ľăăăžăăă¤ăžăćżĺ Ľă˘ăźăă§ĺ ĽĺăăăŽă¨ĺăăăăŞćĺă§ăă
Esc ăăźéŁćăŽĺ ´ĺ: ä˝ă辡ăăďźăăŁă¨ćżĺ
Ľă˘ăźăăŽăžăžă§ăă
@cmplstofB ć§
ăŻăďźăăćłĺŽăăŚăăžăăăăăăžăăâŚâŚă
ćżçĽăăžăăăăăŽăăăŤĺŽčŁ ăăŚăżăžăă
0.4 sec 䝼ä¸çľéăăă¨ăăăăăŠăŽăăăŤĺä˝ăăăŽă§ăăăăă
- čąć°ĺăăźăćźä¸ăăĺ ´ĺ: ăăŽčąć°ĺăăłăăłăăŠă¤ăłăŤćżĺ Ľăăăžăăă¤ăžăćżĺ Ľă˘ăźăă§ĺ ĽĺăăăŽă¨ĺăăăăŞćĺă§ăă
- Esc ăăźéŁćăŽĺ ´ĺ: ä˝ă辡ăăďźăăŁă¨ćżĺ Ľă˘ăźăăŽăžăžă§ăă
ăăăăăăŻä¸ćč°ă§ăăâŚăăăŻă揥ă§ăăźăăŹăźăĺ Ľăăăă¨ăŤăăžă
確čŞăăăăžăăă
Esc ăăźă¸ăŽĺŻžĺżăăăă¨ăăăăăžăďź
@cmplstofB ć§
ăăăć¸ăčžźăĺăŤčżäşăćĽăŚăăžăăžăăă確čŞăăăă¨ăăăăăžă!
ESC ㎠timeout ăŤĺŻžĺżăăžăăăESC ăŽăżă¤ă ă˘ăŚăăŤé˘ăăŚăŻă獯ćŤăă Bash ăžă§ăŽçľčˇŻăŤăăĺ
¨ăŚăŽ timeout ăç´ŻçŠăăăă¨ăŤă注ćä¸ăăăĺă
ăŽč¨ĺŽ (stty, tmux, screen, bash, etc.) 㯠Wiki ăŤć¸ăăžăăăŽă§ĺžĄčڧăă ăă âŚă¨ć¸ă㌠Wiki ăäťçˇ¨éăăŚăăăŽă§ăăăćŞă ć¸ăéä¸ă§ăăćŚčŚ(č¨ĺŽăŽäž)ăć¸ăă¨ă
# stty (bashrc)
stty time 0 # ĺä˝: 1/10ç§
# bash-4.3 äťĽä¸ (bashrc)
bind 'set keyseq-timeout 1' # ĺä˝: ăăŞç§
# tmux (tmux.conf)
set -sg escape-time 1 # ĺä˝: ăăŞç§
# screen (screenrc)
maptimeout 1 # ĺä˝: ăăŞç§
čż˝č¨: Wiki ć´ć°ăăžăă: Vi (Vim) editing mode ¡ akinomyoga/ble.sh Wiki
af62754...2310b18 ć´ć°
â äťĺăŽäżŽćŁăŤăŻç ´ĺŁçĺ¤ć´ăĺŤăžăăŚăăăŽă§ćł¨ćăăŚä¸ăăâ
ç ´ĺŁçĺ¤ć´
vi_command -> vi_nmap, vi_insert -> vi_imapble/widget/{no,}marked -> ble/widget/@{no,}markedble/widget/vi-command/* (ä¸é¨) -> ble/widget/vi_nmap/*ble/widget/vi-insert/@norepeat ĺťć˘ăĺĽăŽćšćł (_ble_keymap_vi_imap_white_list) ăç¨ăăăŽă§ĺă
ăŤćĺŽăăĺż
čŚăŻăŞăăŞăăć°ăăćŠč˝
term_vi_[inoxc]mapshopt -s histverify, shopt -s histreedit ăŤĺŻžĺż #D0547. ăŻĺŽčŁ
éä¸ (çžçś nmap/omap ăŤăăăăŞăăŹăźăżçľçąăŽĺ¤ć´ăŽăżč¨é˛) #D0542 #D0549 #D0550ăă°äżŽćŁ
p, P ăćŁăăĺä˝ăăŞăăă°ă俎ćŁgg, G): ăŹă¸ăšăżăźćĺŽăćśĺ¤ąăăŚăăăă°ăŽäżŽćŁy, d ăŤćŁăă渥ăŁăŚăăŞăăŁăăă°ăŽäżŽćŁPROMPT_COMMAND ă§č¨ĺŽăăă PS1 ăć°¸çśĺăăăŚăăŞăăŁăăă°ăŽäżŽćŁbind -x ă§ćć§ăŞçťé˛ăăăŁăŚ bash_execute_unix_command ă¨ăŠăźăŤăŞăŁăŚăăĺéĄăŽäżŽćŁ #D0544vi.sh, emacs.sh ăŤăă㌠default.sh ăĺ¤éăŤĺźăłĺşăăăŚăăçĄé§ăŽäżŽćŁ #D0545ble/util/assign ăĺŁăăŚăăăă°ăŽäżŽćŁĺä˝ĺ¤ć´
x, <delete>, s, X, C, D): support registerssource ble.sh ăŤăăăŚçĄäşăŤăăźăăăăă¨ăăŤçľäşăšăăźăżăš 0 ăčżăăă¨ăäżč¨źreadlink -f ăĺăăŞăă¨ăă) ăˇăłăăŞăăŻăŞăłăŻăéăăăăźăăŤĺŻžĺż #D0543ToDo
., xmap o, O (ĺŽčŁ
äşĺŽ)ToDo (ăăźă¸ĺž)
u, C-r, U=, xmap ăăăšăăŞăă¸ă§ăŻăăŽćŁăăĺä˝RET ăŤăăč¤ć°čĄă˘ăźăç§ťčĄ@cmplstofB ăăž
ăčŞçćĽăăă§ă¨ăăăăăžă! ăăĄă㯠. ăăĄăăăĺŽčŁ
ăăŚăăăăăŤćĽăŤĺ¤ąéăăŚä˝ăé˛ăă§ăăžăăăăçžçśă§ push ăăžăăăăă¨ăäťĺăŽĺ¤ć´ăŤăŻç ´ĺŁçăŞĺ¤ć´ăĺŤăžăăŚăăăăăŤăbashrc ăŤăăăč¨ĺŽăć¸ăćăăă°ăŞăăžăăăĺžă§ dotfiles ăŤäźşăăžăă
ăăăăăéĄăăăăăžă!
ăčŞçćĽăăă§ă¨ăăăăăžă!
ăăăă¨ăăăăăžăă
ĺžă§ dotfiles ăŤäźşăăžăă
ăăżăžăăăďźcommit ăăăžă§ĺ°ă ćéăé ăăăă§ăă
ăăżăžăăăďźcommit ăăăžă§ĺ°ă ćéăé ăăăă§ăă
ćżçĽă§ăăä¸čĄăă¤ăłăĄăłăăăŚăăĄăă§äżŽćŁăăŚé ăćšăčŻăă§ăăăăă
ćăăŻăăăĄăă§ PR ăä˝ăăžăăăă (ĺŽăŻăăĄăă¨ăăŚăŻ PR ăŽćšă漽ă§ă)ă
ćăăŻăăăĄăă§ PR ăä˝ăăžăăăă (ĺŽăŻăăĄăă¨ăăŚăŻ PR ăŽćšă漽ă§ă)ă
ĺăăăžăăăPR ăăŚä¸ăăăĺŞäť push ăăžăăăďźé常ăŤĺ獯ăŞč¨ĺŽăŤăŞăŁăŚăăă¨ćăăžăăăćéăćăăăžăâŚâŚă
@akinomyoga ć§
PR ăăăă¨ăăăăăžăăćŠéăŽĺ ąĺă§ăăăžăăăćĺăä¸čŞçśăŞçšăăăăžăă
răăźăăŤă˘ăźăă§ r ăćźä¸ăăĺž (ä˝ăĺ¤ć´ăăăŤ) Esc ăĺ
Ľĺăăă¨ăŤăźă˝ăŤä¸ăŽćĺă ^[ ăŤç˝ŽćăăăŚăăžăăžăăVim ăŽčŚĺŽăŽćĺă¨ăăŚăŻ Esc ăŻăĺ罎ćă˘ăźăăćăăăă¨ăăĺä˝ăćĺž
ăăăžăă
Commit ID: 2310b18
@cmplstofB ć§
ăĺ ąĺăăăă¨ăăăăăžă! 俎ćŁăăžăă! 89233a3c3841125a33d99515fe7849588da4d281 ăăăă§ăăăăă
čż˝č¨: ă¨ăăă§ commit id ăŻćă§ăŞăłăŻăć¸ăăŞăăŚăăĺŽăŻăăŽăžăžč˛źăäťăăă°čŞĺçăŤăŞăłăŻăŤăŞăăžăăăäž: 2310b180d507f6f88a22a262235590508225a843
r寞ĺżăăăă¨ăăăăăžăă確čŞăăăăžăăă
Commit ID: 89233a3
echo $*** ăŽčĄ¨ç¤şçľćBash, Zsh, sh ăŤăăăŚăŻ echo $*** ă¨ăăăłăăłăăŽĺŽčĄçľć㯠echo * ă¨ĺçă§ăăďźble.sh ăŤăăăŚăŻ echo */** ă¨ĺçă§ă [^1]ăăăăŤăŻä˝ăćĺłăăăăŽă§ăăăăăăăă¨ă ble.sh ăŽĺŽčŁ
ä¸ĺśă
ăăăŞăŁăăŽă§ăăăăăăśăŁăĄăăăăŽăăăŞăˇă§ăŤĺąéăčĄăŞăăă¨ăŻćŽăŠăŞăăŽă§ăŠăĄăă§ăć§ăăŞăăŽă§ăăďźăăăć°ăŤăŞăăžăăă
^1: ăŞă echo $** ăŽçľć㯠echo * ăŽçľćă¨ĺăă§ăăďźăă㯠ble.sh ĺŤăĺ
ąéă§ăă
@cmplstofB ć§
echo $*** ăŽčĄ¨ç¤şçľćăăźăăä¸ćč°ă§ăăâŚăĺŽéăŽăłăăłăăŽĺŽčĄăŻ bash ăŤäťťăăŚăă (eval ăăŚăă) ăŽă§ăăŽăăăŞéăăŻĺşăŚćʞăăăŞăăŽă§ăăâŚăŻăŚ
ć訹㧠globstar ăćĺšăťçĄĺšăŤăăŚčŠŚăăŚăżăăŽă§ăăĺçžăăžăăăâŚă
shopt -s globstar ăŽă¨ă @ Fedora 25```bash:
[murase@padparadscha 0 ble]$ shopt -s globstar
[murase@padparadscha 0 ble]$ echo $* | wc
1 298 7347
[murase@padparadscha 0 ble]$ echo / | wc
1 245 6728
[murase@padparadscha 0 ble]$ echo * | wc
1 298 7347 # â ble.sh 㯠* ăŽćŻăčă
[murase@padparadscha 0 ble]$ bash --norc # ç´ ăŽ Bash
[murase@padparadscha 0 ble]$ shopt -s globstar
[murase@padparadscha 0 ble]$ echo $* | wc
1 298 7347
[murase@padparadscha 0 ble]$ echo * | wc
1 65 686
[murase@padparadscha 0 ble]$ echo * | wc
1 298 7347 # â bash 㯠** ăŽćŻăčă
### 2. `shopt -u globstar` ăŽă¨ă @ Fedora 25
[murase@padparadscha 0 ble]$ shopt -u globstar
[murase@padparadscha 0 ble]$ echo $* | wc
1 65 686
[murase@padparadscha 0 ble]$ echo / | wc
1 126 2755
[murase@padparadscha 0 ble]$ echo * | wc
1 65 686 # â ble.sh 㯠* ăŽćŻăčă
[murase@padparadscha 0 ble]$ bash --norc # ç´ ăŽ Bash
[murase@padparadscha 0 ble]$ shopt -u globstar
[murase@padparadscha 0 ble]$ echo $** | wc
1 65 686
[murase@padparadscha 0 ble]$ echo * | wc
1 65 686 # â bash 㯠* ăŽćŻăčă
```
çłă訳ăăăăžăăăă
shopt ăŽĺşĺçľćă塎ăćŻăăŞăăă°ćăăŚé ăăžăăăecho "'$*'" ăŽçľć注ć: ĺ˝çśă¨ăăă°ĺ˝çśă§ăă-s globstar ăŽă¨ăăçŠĺăăăăăăăĄă¤ăŤăăăăăŁăŹăŻăăŞă§ echo ** ă¨ĺ
Ľĺăă㨠ble.sh ĺşăžăăžăăâŚăăăăŻăŠăăăăăăăăžăăăăŞăŽă§ăä¸č¨ăŽ -s globstar ăŽăăšăăăăćăŻä˝ă沢幹ăľăăăŁăŹăŻăăŞăťăăĄă¤ăŤăŽăŞăăăŁăŹăŻăăŞă§ăéĄăăăžă)
@akinomyoga ć§
ć
ă
調ăšăŚăăăŁăŚçłă訳çĄăă§ăă
$ bash --version
GNU bash, ăăźă¸ă§ăł 4.4.12(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
ăŠă¤ăťăłăš GPLv3+: GNU GPL ăăźă¸ă§ăł 3 ăžăăŻăă䝼é <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ uname --operating-system --kernel-name --kernel-version --kernel-release
Linux 4.13.9-200.fc26.x86_64 #1 SMP Mon Oct 23 13:52:45 UTC 2017 GNU/Linux
shopt ăŽĺşĺçľć (éˇăăŽă§ćăçłăă§ăăžă) autocd on cdable_vars off cdspell on checkhash on checkjobs off checkwinsize on cmdhist on compat31 off compat32 off compat40 off compat41 off compat42 off compat43 off complete_fullquote on direxpand off dirspell off dotglob off execfail off expand_aliases on extdebug off extglob on extquote on failglob off force_fignore on globasciiranges off globstar on gnu_errfmt off histappend on histreedit on histverify on hostcomplete off huponexit off inherit_errexit off interactive_comments on lastpipe off lithist off login_shell on mailwarn off no_empty_cmd_completion on nocaseglob on nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off
$ shopt -s globstar
$ echo * | wc
1 8 35
$ echo ** | wc
1 7238 307555
$ echo $** | wc
1 8 35
$ echo */* | wc
1 64 936
$ echo $*** | wc
1 7238 307555
$ echo */** | wc
1 7238 307555
$ shopt -u globstar
$ echo * | wc
1 9 40
$ echo ** | wc
1 9 40
$ echo $** | wc
1 9 40
$ echo */* | wc
1 64 936
$ echo $*** | wc
1 9 40
$ echo */** | wc
1 64 936
$ bash --norc
$ shopt -s globstar
$ echo * | wc
1 8 35
$ echo ** | wc
1 7238 307555
$ echo $** | wc
1 8 35
$ echo */* | wc
1 64 936
$ echo $*** | wc
1 7238 307555
$ echo */** | wc
1 7238 307555
$ shopt -u globstar
$ echo * | wc
1 9 40
$ echo ** | wc
1 9 40
$ echo $** | wc
1 9 40
$ echo */* | wc
1 64 936
$ echo $*** | wc
1 9 40
$ echo */** | wc
1 64 936
^W ăŽćĺăăżăžăăăć¸ăĺżăăžăăăă¤ăłăľăźăă˘ăźăă§ăŽ ^W ăŽĺ
Ľĺă§ćśĺťăăăĺşéă犺ç˝ćĺăĺşćşă¨ăăŚăăžăă
$ ls /usr/share/binâ
$ #ăăă§ `^W` ćźä¸
$ lsâ
2310b18 ćšč¨ăžă§ăŻç˘şăăŤăšăŠăăˇăĽăăă¤ăăłăă¤ăăšăăăŽĺşĺăă¨ăăŚčŞčăăŚăăăŽă§ďźäżŽćŁăăŚćʞăăă§ăă
$ ls /usr/share/binâ
$ #ăăă§ `^W` ćźä¸
$ ls /usr/share/â
ăć示ăŽçľć (shopt -u globstar) ăŽçŻĺ˛ă§ăŻ ble.sh 㨠Bash ă§éăăŻăŞăăăă§ăă⌠(bash --norc ăŻć˘ĺŽă§ shopt -u globstar ăŽăŻă)ăwc ăŞăŽă§čŠłç´°ăŻĺăăăžăăăăčŚăă¨ăăăŻĺ¤ăŞćŻăčăăăăŚăăžăăăbash --norc ㎠shopt -s globstar ăŽă¨ăăŽćŻăčăăŤă¤ăăŚăčŚăŚé ăăžăăăă
ăăăŻăă 5a8b522 ă§ĺ¤ăăŚăăžăăžăăă
ĺ ă ăŽč¨ĺŽăĺçžăăăŤăŻäťĽä¸ăŽć§ăŤăăŚä¸ăăăžăă
ble-bind -m vi_imap -f 'C-w' delete-backward-cword
ăă ăăăăŻĺłĺŻăŤăŻ Vim ㎠C-w ă¨ăŻćŻăčăăç°ăŞăăŽă§ăăăăăŞăŽă§ăä¸ćăŤäźźăăăŽăŻăăăŚăReadline ㎠vi-insert C-w ăŤĺŁăŁăŚçŠşç˝ĺşĺăăŤĺ¤ăăŚăăžăăžăăăĺžă§ăVim ㎠C-w ă¨ĺć§ăŤĺä˝ăăăăŽăĺŽčŁ
ăăžăăŽă§ăăăăžă§ăŻä¸č¨ăŽĺ
ă
ăŽč¨ĺŽă使ăŁăŚé ăăžăăăă
echo $*** ăŽčĄ¨ç¤şçľćă迡ćăćăăăžăăă
^W ăŽćĺäşč§Łăăžăăă
2310b18...1f57221 ć´ć°
â äťĺăŽäżŽćŁăŤăĺ¤ĺ°ăŽç ´ĺŁçĺ¤ć´ăăăăžăâ
ç ´ĺŁçĺ¤ć´
ble/widget/vi-insert/* â ble/widget/vi_imap/*keymap_vi_normal_mode_name â keymap_vi_nmap_namevi-insert/magic-space ĺťć˘ă䝣ăă㍠magic-space ăç´ćĽç¨ăăăć°ćŠč˝
o O. ĺăć˘ăăĺŽć?gvăă°äżŽćŁ
`x 'x): ăŞăăŹăźăżăĺźăłĺşăăăŞăăă°ăŽäżŽćŁ[ia]w): čąć°ĺ㨠_ ăŽéŁçśă§ăŻăŞăčąĺ㨠_ ă ăăŽéŁçśăĺčŞă¨ăăŚăăăă°ăŽäżŽćŁ{count}i...<C-[> ăŤăă㌠<C-q>x <C-v>x ăćŁăăçš°ăčżăăăŞăăŁăăă°ăŽäżŽćŁ{count}i...<C-c> ă§çš°ăčżăăćĺšăŤăŞăŁăŚăăăă°ăŽäżŽćŁ{N}%): çŽçăŽčĄăŤç§ťĺăăŞăăŞăŁăŚăăăă°ăŽäżŽćŁ_): d_ ĺăł d1_ ă linewise ăŤăŞăŁăŚăăŞăăă°ăŽäżŽćŁI A): ĺăăŞăăŞăŁăŚăăăă°ăŽäżŽćŁI A): ĺŽčĄĺžăŽăŤăźă˝ăŤä˝ç˝ŽăăăăŚăăăă°ăŽäżŽćŁI A c s C): çŠĺ˝˘ćżĺ
ĽăŽĺžăŽçˇ¨éçŻĺ˛ `[`] ăă1čĄçŽăćăăŚăăăă°ăŽäżŽćŁ?): ć¤ç´˘ ? ă operator g? ăŤăŞăŁăŚăăăă°ăŽäżŽćŁ/ ? n N): ăă¸ăĽă˘ăŤă˘ăźăăŽé¸ćçŻĺ˛ăć¤ç´˘ăŽä¸č´çŻĺ˛ă§ä¸ć¸ăăăăăă°ăŽäżŽćŁ/ ? n N): çžĺ¨ăŽĺąĽć´é
çŽăŽä¸ă§ä¸č´ăăŞăćăĺĽăŽĺąĽć´é
çŽăŤăă¸ăĽă˘ăŤă˘ăźăăŽăžăžç§ťĺăăăă°ăŽäżŽćŁcs cS): nmap . 寞ĺżćăŤĺźć°ă¨ăŹă¸ăšăżăĺšăăŞăăŞăŁăŚăăăă°ăŽäżŽćŁS): v ăŤăăăă¸ăĽă˘ăŤă˘ăźăă§ćščĄăĺĺžăŤćżĺ
ĽăăăŚăăăă°ăŽäżŽćŁĺä˝ĺ¤ć´
<C-w>): vim ăŽĺčŞĺşĺă (w) ăŤăăĺé¤ăŤĺ¤ć´[rRfFtT]x): <C-[> ă§ăăŁăłăťăŤăăăăăŤĺ¤ć´w b e ge): éčąć°ĺ ASCII ăŽéŁçśă¨ăUnicode ćĺăŽéŁçś ăăăăăĺĽăŽĺčŞă¨ćąăăăăŤĺ¤ć´c s C): I, A ă¨ĺć§ăŽçŠĺ˝˘ćżĺ
ĽăŤĺŻžĺżToDo (ăăźă¸ĺž)
u, C-r, U=, xmap ăăăšăăŞăă¸ă§ăŻăăŽćŁăăĺä˝RET ăŤăăč¤ć°čĄă˘ăźăç§ťčĄ@cmplstofB ăăž
äťĺăŻăăăťăŠĺ¤§ăăăăăžăăă䝼ä¸ăŽ2çšă確čŞä¸ăăăžăă
keymap_vi_normal_mode_name â keymap_vi_nmap_namevi-insert/normal-mode â vi_imap/normal-modeimap <C-w> 寞ĺżăăžăăă
大ăăŞćŠč˝ăŻĺ¤§ä˝ (nmap u <C-r> 䝼ĺ¤) ć¸ăă ăŽă§ćŤăĺŻăăăŚăă°ăĺŠăăžăăĺéĄăăŞăăă°ăăŽăžăžăăźă¸ăăžăă
@akinomyoga ć§
ăăăă¨ăăăăăžăďź ćŠéčż˝ĺžăăăŚăăă ăăžăăă
ă¨ăăă§ďźăăŽăăăŞäşăĺ°ăăăŽăŻć°ćĽăăăăăŽă§ăăďź@akinomyoga ć§ăŽć´ć°ăŽăĺ ąĺăŽĺžďźčż˝ĺžĺžăŽăăĄăăŽç°ĺ˘ă§ĺ
¨ăćŁĺ¸¸ăŤĺăăŚăăĺ ´ĺďźç§ăŻăăŽć¨ăé˝ĺşŚĺ ąĺăăŚăăžăăďźăăŽăžăžăŽĺ˝˘ă§ăăăăă§ăăăăă
ăăă¨ă (äžăă°ă :+1: ăă¨ăăçľľćĺă確čŞăŽĺĺłăŤăăăŞăŠ) ćŁĺ¸¸ăŞĺä˝ăŽĺ ąĺăŻćĺ°éăŤă¨ăŠă Unix ăăăăăă°ăä¸ĺ
ˇĺăŽĺ ąĺăŤĺžšăăăšăă§ăăăăă
ă¨ăăăŽăŻďźissue ăŽçŽçă¨ăăŚăĺăăžăăăă¨ăăĺ ąĺăŻéŞéăăŞă¨ćăăžăăŚâŚâŚă
@cmplstofB ć§
ç§ăŻăăŽć¨ăé˝ĺşŚĺ ąĺăăŚăăžăăďźăăŽăžăžăŽĺ˝˘ă§ăăăăă§ăăăăăăăă¨ă (äžăă°ă đ ăă¨ăăçľľćĺă確čŞăŽĺĺłăŤăăăŞăŠ) ćŁĺ¸¸ăŞĺä˝ăŽĺ ąĺăŻćĺ°éăŤă¨ăŠă Unix ăăăăăă°ăä¸ĺ ˇĺăŽĺ ąĺăŤĺžšăăăšăă§ăăăăăă¨ăăăŽăŻďźissue ăŽçŽçă¨ăăŚăĺăăžăăăă¨ăăĺ ąĺăŻéŞéăăŞă¨ćăăžăăŚâŚâŚă
ăŠăĄăă§ăć§ăăžăăăăč˛ă ăŞčăćšăŻăăăă¨ćăăžăăăçšăŤĺéĄăçşçăăŞăéăăŻĺéĄăăăžăăăă弽ăăŞćšă§ă
ăăć¸ăĺżăăžăăăăăĺ ąĺăăăă¨ăăăăăžă!
äşč§Łăăăăžăăă確čŞăŽé˝ĺşŚĺ ąĺăăăŚăăă ăăžăăăăăăăéĄăăăžăă
cw/cW ăŽćĺVim ă§ăŻăŤăźă˝ăŤăĺčŞä¸ăŤăăĺ ´ĺ㎠cw/cW 㯠ce/cE ă¨ĺçă§ă(:help cw)ăăăăŻĺăăç§ťĺăłăăłă w/W ă§ćä˝ăăă dw/dW ă¨ç¸ççžăăžăăďźVim ăŽĺŽčŁ
ä¸ăăăŞăŁăŚăăďźç§ĺäşşă¨ăăŚăčŤççă§ăŻăăăžăăăăăĄăăŽćĺăŽăťăăäžżĺŠă§ăă
çžĺ¨ăŽ ble.sh ă§ăŻ cw/cW 㯠dwi/dWi ă¨ĺçăŽćĺă示ăăžăă
âŚâŚă¨ăăă ce/cE ă¨ĺăăŞăăăă使ăă°čŻă芹ă§ăăăăŽă§ăăă
# ćŹćĽăŻĺĽ issue ăĺťşăŚăăšăă§ăăďźăăăžăăăăăă§čŚćăăăŚăă ăăă
Bash ăŽćŠč˝ă§ăăăăŹăźăšĺąéăç¨ăăéďźăăĄă¤ăŤĺĺăłăăŁăŹăŻăăŞĺăŤă¤ăăŚăŽčŁĺŽăĺšăă¨ĺŹăăă§ăă
$ ls foo/
bar baz qux
$ cp foo/{bâ
$ # ăăă§čŁĺŽăăźćźä¸
$ cp foo/{bâ
bar baz
Commit ID: 1f57221
ĺŽĺ
¨ăŤ ce / cE ă¨ĺăĺä˝ă§čŻăă§ăă? ç´ăăŚăżăžăă 27019ee3a1d05d22df6bbf24a5b2496c93848e16 ăăăăăăăăăăžăă
äťăŽĺ¤ć´çš
ăŤăźă˝ăŤĺ¤ć´ăŽăˇăźăąăłăšăŽć˘ĺŽĺ¤ (terminfo ㍠Ss ăçťé˛ăăăŚăăŞăă¨ă) ă犺ćĺĺăŤĺ¤ć´ăăžăăăŽă§ă注ćä¸ăăăăăăterminfo ㍠Ss ăçťé˛ăăăŚăăŞăăăŤăźă˝ăŤĺ¤ć´ă使ăăăăă¨ăăćăŤăŻă_ble_term_Ss=$'\e[@1 q' ă¨ăăĺ
ˇĺăŤč¨ĺŽăä¸ć¸ăăăŚăăžăŁăŚä¸ăăă
čż˝č¨
ăăźăăăăăŻé˘ĺă§ăăăăżăžăăăĺžĺăă§ă
cw/cW ăŽćĺăăăă¨ăăăăăžăăăăžăďźterminfo ăŽäťśăććĄăăăăžăăă
ĺăăăžăăă
çłă訳çĄăă§ăăcw/cW ăŽćĺăŤă¤ăăŚďźä¸ĺŽĺ
¨ăŞçšăăăăžăă
ĺŽĺ ¨ăŤ
ce/cEă¨ĺăĺä˝ă§čŻăă§ăă
ăťăă¨ăăŤăăăžăăăčŻăăŞăă§ăă
:help cw ăŤăăă¨
çšĺĽăŞĺ ´ĺ: "cw" 㨠"cW" ăŻăăŤăźă˝ăŤăĺčŞăŽä¸ăŤăăă¨ăăĺčŞăŽăă¨ăŤă¤ăĽă
犺ç˝ăĺŤăăăĺčŞăŽćŤĺ°žăžă§ăĺ¤ć´ăă("ce" 㨠"cE" ă¨ĺăĺăăăă)
ă§ăă
çľčŤăăč¨ăă¨ďźce/cE ă¨ĺçăŽćĺăŤăŞăăŽăŻďź(ăŤăźă˝ăŤă <word>/<WORD> ä¸) â§ (ĺłçŤŻäťĽĺ¤ăŤăă) ĺ ´ĺă§ăă
ćĺ ㎠Vim 8.0 ă§ăŻďźćăă揥ăŽ3éăăŤĺĺ˛ăăžăă
<Tab> ĺăł <space> ăŽä¸ăŤăăćdwi/dWiă¨ĺä¸: 揥ăŤćĽă <word>/<WORD> ăŽĺˇŚçŤŻăŽç´ĺăžă§ĺé¤ăďźćżĺ
Ľă˘ăźăăŤă$ cp ./foo.txt â /tmp/
-- NORMAL --
$ # cw
$ cp ./foo.txt â/tmp/
-- INSERT --
<word>/<WORD> ăŽĺłçŤŻ (ćŤĺ°žăŽćĺ) ăŽä¸ăŤăăćs ă¨ĺä¸: ç´ä¸ăŽćĺăŽăżăĺé¤ăďźćżĺ
Ľă˘ăźăăŤă$ cp ./foo.txâ /tmp/
-- NORMAL --
$ # cw
$ cp ./foo.txâ /tmp/
-- INSERT --
$ # ---
$ cp ./foâ.txt /tmp/
-- NORMAL --
$ # cw
$ cp ./foâ.txt /tmp/
-- INSERT --
<word>/<WORD> ăŽĺłçŤŻäťĽĺ¤ăŽä¸ăŤăăćce/cE ă¨ĺä¸: <word>/<WORD> ăŽĺłçŤŻăžă§ĺé¤ăďźćżĺ
Ľă˘ăźăăŤă$ cp ./foo.tât /tmp/
-- NORMAL --
$ # cw
$ cp ./foo.tâ /tmp/
-- INSERT --
$ cp ./foâ.txt /tmp/
-- NORMAL --
$ # cW
$ cp ./foâ /tmp/
-- INSERT --
ăăăžăăďźăăăăăéĄăăăžăăç§ăč¨ăăăă¨ă§ăăŞăăŽă§ăăďźăăŽčžşă㎠Vim ăŽĺŽčŁ ăŻä˝żăćăăŽă§ăăćĺăŤçľąä¸ć§ăăŞăăŚčŹă§ăâŚâŚă
@cmplstofB ć§
ăăăă¨ăăăăăžăăăä˝ă ăä¸ćč°ăŞĺä˝ă§ăăâŚăćŞă ĺä˝ă確ĺŽă§ăăŚăăžăă
犺čĄă羥ăă§ăăă¨ć´ăŤăăĺăăăžăăă [čż˝č¨: ăăżăžăăčŞĺˇąč§Łćąşăăžăă] :help exclusive-linewise (ă¨ăăŽĺăŽé
çŽ) ă羥ăă§ăăă¨ćăăŽă§ăăăč˛ă
芌ăăŚăăŚăŠăăŠăĺăăăŞăăŞăŁăŚăăžăăâŚă:help exclusive-linewise ĺ¨ăăŽćĽćŹčŞč¨łăŻčłŞăćŞăă¨ăăăčŞĺźăăăăŽă§čąćăĺźç¨ăăžăă
Which motions are linewise, inclusive or exclusive is mentioned with the command. There are however, two general exceptions: 1. If the motion is exclusive and the end of the motion is in column 1, the end of the motion is moved to the end of the previous line and the motion becomes inclusive. Example: "}" moves to the first line after a paragraph, but "d}" will not include that line. exclusive-linewise 2. If the motion is exclusive, the end of the motion is in column 1 and the start of the motion was at or before the first non-blank in the line, the motion becomes linewise. Example: If a paragraph begins with some blanks and you do "d}" while standing on the first non-blank, all the lines of the paragraph are deleted, including the blanks. If you do a put now, the deleted lines will be inserted below the cursor position.
- Note: ăăăăŽćŻăčăăŻćŞă ăăçč§Łă§ăăŚăăŞăăŽă§
ble.shă§ăŻćŞĺŽčŁ ă§ă- Note: č˛ă 芌ă㨠1. ăŻç§ťĺĺăŽä˝ç˝Žăăăç§ťĺĺ ăŽä˝ç˝ŽăŽćšăĺžăŤăăă¨ăăŤăăçşĺăăŞăăăă§ă
5 ăŽä˝ç˝Žă§ w ă¨ăă㨠9 ăŽä˝ç˝ŽăŤčĄă訳ă§ăă dw ă¨ăă㨠5678 ㎠4 ćĺă ăĺé¤ăăžăă5 ăŽä˝ç˝Žă§äťŁăă㍠gj ă¨ăăă¨ăăŻă 9 ăŽä˝ç˝ŽăŤčĄăăžăăădgj ă¨ăăă¨ăăŤăŻćĺž
éă㍠5 ăă 9 ăŽç´ĺăžă§ĺé¤ăăžăădw ăŽć㯠1. ăé˘äżăăŚăăăăăŞć°ăăăžăăč
ăŤč˝ăĄăžăăă
12345678
90ab
:help word-motionsăăé¨ăăăăŚăăżăžăă
> ăăä¸ă¤ăŽçšćŽăŞăąăźăš: ăŞăăŹăźăżăłăăłăă¨ç§ťĺăłăăłă "w" ăçľăżĺăăăă¨
> ăăŤăźă˝ăŤăăăŽä¸ăç§ťĺăăćĺžăŽĺčŞăčĄćŤăŤăăŁăĺ ´ĺăăăŽĺčŞăŽçľăăăăŞ
> ăăŹăźăżăŽĺŻžčąĄăŤăŞăăăăšăăŽçľăăăŤăŞăăžăă揥ăŽčĄăŽćĺăŽĺčŞă§ăŻăăăžă
> ăă
>č§Łćąşć¸ ăžăă䝼ä¸ăŽ 1 ăŽä˝ç˝Žă§ } / 2gj / `a (äşă 3ggma ăăŚăă) / 12<space> ăăă¨ä˝ăă3čĄçŽăŽčĄé ăŤç§ťĺăăžăăăăŽć 1 ăŽä˝ç˝Žă§ d} / d2gj / d`a ăăă㨠1. 㨠2. ăéŠç¨ăăăŚĺăăŽ2čĄăĺé¤ăăăä¸ćšă§ă d12<space> ăčĄă㨠1..a ăŽçŻĺ˛ăĺé¤ăăăžăăăăŽéăăŻä˝ă§ăăă?
567890ab
xxxx
čż˝č¨1 (č§Łćąş): ăă :help whichwrap ăŤć¸ăăăŚăăžăăâŚă
ç§ťĺăăźăĺé¤ăŞăăŹăźăżăĺ¤ć´ăŞăăŹăźăżă¨ĺ ąăŤä˝żăăăă¨ăăŻă<EOL> ă ćĺăŤĺŤăžăăăăăŽăăăŤăźă˝ăŤăčĄćŤăéăă¨ăăŻă"3h" ăŽĺă㨠"3dh" ăŽĺăăŻç°ăŞăă
ĺżľăŽăă: vim ăŻäťĽä¸ă使ăŁăŚăăžăă
$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Sep 1 2017 12:36:38)
éŠç¨ć¸ăăă: 1-1030
1f57221...fb77258 ć´ć°
ć°ćŠč˝
:help exclusive-linewise çšĺĽčŚĺ (exclusive -> inclusive, exclusive -> linewise) ăŤĺŻžĺżC-c C-[ ă§ć示çăŤăăŁăłăťăŤcomplete_stdin_frequency (ć˘ĺŽĺ¤ 50) čż˝ĺ ĺä˝ĺ¤ć´
e, E): ç§ťĺĺ
ăćçľčĄăŽćĺžăŽćĺăŽçŠşç˝ăŽă¨ăăomap ăŞă bell ăéł´ăăăŞăăăăŤĺ¤ć´<space>, <back>, <C-h>): ćščĄăŽć°ăćšăĺ¤ć´cw, cW): ĺčŞăŽćĺžăŽćĺăăăăłçŠşç˝ăŽä¸ăŤăăă¨ăăŽćŻăčăăŽĺ¤ć´ble-bind -D ă§ăăźăăăăŽĺ
é¨çść
ăĺşĺăăăăăŤĺ¤ć´_ble_term_SS ăŽć˘ĺŽĺ¤ă犺ćĺĺăŤĺ¤ć´shopt -s no_empty_cmd_completion ă§ăŻčŁĺŽă (ăłăăłăăŽčŁĺŽäťĽĺ¤ă) ĺ
¨ăčĄăăŞăăăăŤĺ¤ć´@cmplstofB ć§
寞ĺżăăžăă 62d95015c8839b2409712f40fc3ff24f2f5e691aă
source "$_ble_base/keymap/vi_test.sh")ă:help exclusive-linewise ăŽćŻăčăăč˛ă
芌ăăŚĺăăŁăăŽă§ĺŽčŁ
ăăžăă 5a5dca034f083d41a7c34174c0e3819cce42897aăĺŽé㎠Vim ăŽćŻăčăăŻă:help ăŽč¨čż°ă¨éăŁăŚäťĽä¸ăŽăăăŞăăŽăŤćăăăžă:
ăŞăăŹăźăżăŤçśăç§ťĺăłăăłăăćäťçă§ăç§ťĺĺžăŽä˝ç˝Žă1ćĄçŽăŽă¨ă
<ol>
<li>ç§ťĺĺžăŽä˝ç˝Žăç§ťĺĺăŽä˝ç˝ŽăăĺžăŤä˝ç˝ŽăăŚăăă¨ăăăŞăăŹăźăżăŽĺŻžčąĄçŻĺ˛ăŽćĺžăŻ<br />
ĺăŽčĄăŽćĺžăŤĺăăăăăăăăŤăç§ťĺĺăŽä˝ç˝ŽăăăŽčĄăŽćĺăŽé犺ç˝ćĺ䝼ĺăŤă<br />
ăă¨ăălinewise ăŤăŞăăă䝼ĺ¤ăŽă¨ă inclusive ăŤăŞăă</li>
<li>ç§ťĺĺăŽä˝ç˝Žăç§ťĺĺžăŽä˝ç˝ŽăăĺăŤä˝ç˝ŽăăŚăăă¨ăăç§ťĺĺăŽä˝ç˝ŽăčĄé ăŤăăă¨ă<br />
linewise ăŤăŞăă<br />
:help word-motions ăŽćŻăčăăŤă寞ĺżăăžăă fe017e19b87852248ae54d512124cdeaf89517abă@akinomyoga ć§
cw/cW ăŽćĺ確čŞăăăăžăăăăăăă¨ăăăăăžăă
ćŠéă§ăăďźĺ°ă čŚćăăăăžăă
^[ ćźä¸ă§é˘čą:help c_CTRL-[ ĺăł :help search-commands ăŤăăă°ďźăłăăłăăŠă¤ăłă˘ăźăăć¤ç´˘ă˘ăźă㯠^C ă ăă§ăŞă ^[ ăŤăăŁăŚăč§Łé¤ăăăžăă
^[ ăăăł ^C ăŤăăŁăŚé˘čąă (ă¤ăžăĺŽčĄăăä¸ćă) ăĺ ´ĺă§ăďźĺąĽć´ĺźăłĺşăăăź (^P ç) ăŤăăŁăŚĺźăłĺşăăžăăăăăŤă¤ăăŚďźéŠĺ˝ăŞćĺźăé ăčŚäťăăăžăăă§ăăăďźVim ă§ :foo ă¨ĺ
Ľĺăăĺž ^M ă§ĺŽčĄăă㍠^[ (ăžă㯠^C) ă§ĺŽčĄăä¸ć ăăĺ ´ĺă§ăďź: ă¨ĺ
ĽĺăăŚăłăăłăăŠă¤ăłă˘ăźăăŤĺăłéˇç§ťăăĺžďźĺąĽć´ăĺźăłĺşă㨠:foo ă¨ăăĺ
ĽĺăäżĺăăăŚăăăă¨ăĺăăă¨ćăăžăă
K ăłăăłăăŽćšĺăťććĄäžăŤăăŁăŚç§ăŽç˘şčŞăçăĺŽéă¨ĺžŽĺŚăŤç°ăŞăĺä˝ăčż°ăšăŚăăĺŻč˝ć§ăăăăžăďźăăăžăăăă§ăăéăç°ĺ˘ĺ¤ć°ăŞăŠăŽäžĺăŻć¸ăăăŚčŠŚé¨ăŻăăŚăăă¤ăăă§ăă
äžăă° clear ăŞăŠăŽä¸é¨ăŽăłăăłăăŽćĺźăăŻćĽľă
çăăďźäťŽćłçŤŻćŤăŽéŤăăčśăăžăăăăăŽăăăŞĺ ´ĺďźçžçśă§ăŻ man ăăźă¸ăŤçąćĽăăă¨ćăăăĺśĺžĄćĺăăăăăŽă襨示ăăăă ăă§ďźćĺźăăé˛čڧăăăă¨ăă§ăăžăă[1]ă
ä¸ćš tty ăŽăăăŤďźtty --help ă§ćĺźăă襨示ăăăăłăăłăă§ďźăăŽéŤăă䝎ćłçŤŻćŤăŽăăăčśăăŞăăăŽăŻä¸ĺżćŁĺ¸¸ăŤčĄ¨ç¤şăăăžăăăăăçľĺąä¸ĺ
ˇĺăçăăŚăăžăăžăă揥ăŽćŽľč˝ă§čŞŹćăăžăă
ls ăŞăŠăŽéˇă (ă¤ăžă䝎ćłçŤŻćŤăŽçťé˘éŤăčśăă) ćĺźăďźĺăłä¸č¨ăŽäşéăăŽčĄ¨ç¤şăŽĺžďźĺ
ąéăăĺä˝ă¨ăăŚçŠşčĄă襨示ăăăžăăăăŽçŠşčĄăŤăŻďźćăăăăŽćŽľéă§ďźK ăćźä¸ăăćăŽăłăăłăčĄăć źç´ăăăŚăăžă[2]ăćżĺ
Ľă˘ăźăăŤĺ
Ľăä˝ăĺ
Ľĺăăăďźăłăăłă幼ć´ĺźăłĺşăăăź (k ăŞăŠ) ăćźä¸ăăă¨ăăŽăăźăéŠĺăŤĺŚçăăăăă¨ĺ
ăťăŠăŽçŠşčĄăŤăłăăłăčĄăĺşĺăăăžăăăăăăăŽĺ ´ĺă§ăăăăłăăçăŻčĄ¨ç¤şăăăŚăăžăăă
äžăă°äťĽä¸ăŽăăăŞĺ ´ĺă§ăă
$ ls| less
-- NORMAL --
$ cd; ls -l
-- NORMAL --
K ăŽćźä¸ä˝ç˝ŽăŤăăŁăŚćĺźăă襨示ăăăłăăłăăĺ¤ć´ăăVim ăŽć˘ĺŽă§ăŻ (:help K) K ăŻăăŤăźă˝ăŤä¸ăŽ <Keyword> (:help iskeyword) ăĺźć°ăŤ man ăĺŽčĄăăăăăŤăŞăŁăŚăăžăăďźăăă¨ĺăăăăŞćŠč˝ăŤăăŚćʞăăă§ăă
ăĺăă ă¨ćăăžăăďźBash ㎠vi-mode ăŤăŻ (vi ăŽćŠč˝ă§ăŻăŞăăŽă§ĺ˝çś) ăŞăďźăžă Zsh ㎠vim-mode ăŤăŻć˘ĺŽă§ăŻ K ăŻč¨ĺŽăăăŚăăžăăă大ćľăŻ run-help ăŞăĺ˝ć°[3]ă K ăăźăŤĺ˛ăĺ˝ăŚăžăăďźăăăŻĺşćŹçăŤć塌ăŽăłăăłăăŽăżă寞蹥ă¨ăăžăă
ble.sh ăŤăăă K ăŤćăä˝ç˝ŽĺĽăŽćĺ
$ test $(expr 8 / 2) -eq 4 || echo 'This will not be printed'
^
$ # K --> function-for-help test --> man -P 'less $LESS -p ^test' bash
$ test $(expr 8 / 2) -eq 4 || echo 'This will not be printed'
^
$ # K --> function-for-help expr --> expr --help | $PAGER
$ test $(expr 8 / 2) -eq 4 || echo 'This will not be printed'
^
$ # K --> function-for-help echo --> man echo
ăăăžă§č¤éă§ăŻăŞăăŚăăăă§ăăăăăŻăăăžă§çćłă§ăă
ĺ
ˇä˝ă§ç¤şăăžăă(ăŤăźă˝ăŤăŽä˝ç˝Žă @ č¨ĺˇă§ç¤şăăžă)ă
$ fn() {
@ome
sommand's
list
}
-- NORMAL --
$ # ^V2j
$ fn() {
@ome
@ommand's
@ist
}
-- VISUAL BLOCK --
$ # 3I#^[
$ fn() {
@##some
###command's
###list
}
-- NORMAL --
çĽăăŞăăŁăă§ăăćăăŚé ăăăăă¨ăăăăăžăă
$LESS ㍠--quit-if-one-screen ă¨ăăĺ¤ăĺăăăéăŻçžĺ¨čĄăŽç´ä¸ăŤäťśăŽĺśĺžĄćĺă襨示ăăďź--RAW-CONTROL-CHARS ăĺăăăă¨ăăăăŽĺśĺžĄćĺăŻčĄ¨ç¤şăăăŞăăŞăăžăă
Commit ID: fb77258
@cmplstofB ć§
ăĺ ąĺăăăă¨ăăăăăžă! č˛ă
ă¨ĺä˝ă確čŞăăŚé ăăŚĺżĺźˇăă§ăă
ăăżăžăăăĺŽéăŽĺŻžĺżăŻĺžăŤăŞăăžăăăK ăŤă¤ăăŚăŻä¸ĺşŚĺ
ćĽĺŻžĺżăăă¨ăăă ăŁăăŽă§çžćçšă§ push ăăžăă
ăłăăłăăŠă¤ăłă˘ăźăăŤăăă ^[ ă¨ĺąĽć´ăŽäťśăćżçĽăăžăăă寞ĺżăăžă
K ăŤé˘ăăŚăŻčŞĺă§ăć°ăŤăŞăŁăŚăăă¨ăăăŞăŽă§ăćăăăĺ
ćĽäżŽćŁăčĄăŁăă¨ăăă§ăă d83fd58ffbce61d1b07a677d1637b622a5c43266 ă俎ćŁăŻă
"$command_name --help" ăĺźăłĺşăăŚăăăăŤĺ¤ąćăăă "man $command_name" ăĺźăłĺşăă¨ăăăăăŞĺŽčŁ
ă§ăăăăĺŞĺ
é ä˝ăĺ¤ăăŚĺ
㍠man $command_name ăĺźăłĺşăăăăŤĺ¤ć´ăăžăăăRe: ăăźă¸ă表ăăŞăĺ ´ĺăčć ŽăăŚćʞăă
ăăăŻĺéĄă§ăăâŚăless ăăŚăźăśăŽč¨ĺŽăŤäžĺăăăŠăŽăŚăźăśăŽç°ĺ˘ă§ăĺć§ăŤĺä˝ăăăăă§ăŻăŞăă¨ăăäşăçéăăŚăăăžăăăăŚăźăśăŽäťťćăŽč¨ĺŽăçśćżăăăăăŤăăă¨ĺŻžĺŚăéŁăăăŞăăŽă§ăĺăć˘ăăć˘ĺŽă§ăŻ [ć¤ĺ (2017-11-10 11:10): ĺ
ă
LESS= LESSPIPE= less ăŞăŠă¨ăăŚăŚăźăśăŽč¨ĺŽă嚲ć¸ăăŞăăăăŤäżŽćŁăăäşĺŽă§ăă$PAGER ăĺç
§ăăŚăăăŽă§čŠłç´°ăŞăăźă¸ăŁăŽćŻăčăăŻăăăăĺśĺžĄä¸ăŤăăăžăăă§ăăăčăăćšăăŚăăŚăźăśăŽč¨ĺŽăŻă§ăăă ăć˝°ăăŞăăă¨ăŤĺ¤ć´ăăžăă] ĺćăŤăble.sh ç¨ăŽ pager ăŽč¨ĺŽăă§ăăăă㍠bleopt ĺ¤ć°ăčż˝ĺ ăăăŽăčŻăăăă§ăăăăă
äžăă° clear ăŞăŠăŽä¸é¨ăŽăłăăłăăŽćĺźăăŻćĽľă çăăďźäťŽćłçŤŻćŤăŽéŤăăčśăăžăăăăăŽăăăŞĺ ´ĺďźçžçśă§ăŻ man ăăźă¸ăŤçąćĽăăă¨ćăăăĺśĺžĄćĺăăăăăŽă襨示ăăăă ăă§ďźćĺźăăé˛čڧăăăă¨ăă§ăăžăă[1]ă
ăăăŻăć˘ĺŽă§ $command_name --help ăŤăăŚăăăŽăăăăžăăă§ăăăecho --help, clear --help ăŞăŠăŻăłăăłăĺŽčĄăćĺăăŚăăžăăžăăăŞăŽă§ăble.sh ăŻćŁăăăăŤăăŽćĺĺăĺžăăăă¨ĺéăăăŚăăăŽĺ
厚ă襨示ăăŚăăžăăžăă
Re: ćĺźăăŽçľäşćăŤčĄ¨ç¤şăäšąăă
ćăăă§ăăăless ăăćăăćăŤĺ
ăŽçťé˘ĺ
厚ă垊ĺ
ăăăă¨ăăĺćăŽĺŽčŁ
ăĺĺ ă§ăăâŚăble.sh ăŻçŤŻćŤä¸ăŤăăăłăăă硨éä¸ăŽćĺĺăŽčĄ¨ç¤şăćŽăŁăŚăăă¨ĺéăăăŚä¸ĺż
čŚăŞćçťăŻčĄăăŞăăăăŤă"čŚăăŞăăăăăŤăăčĄ" ăŤăŞăŁăŚăăžăăžăă
--quit-if-one-screen ăŽćăŻăçťé˘ĺ
厚ăŽäżĺăťĺžŠĺ
ăčĄăăăăăŽăžăžĺ
厚ăĺşĺăăăŚăăžăăŽă§ăçťé˘ăŽčĄ¨ç¤şä˝ç˝ŽăăăăŚăăžăăŽăĺĺ ă§ăăăă
確čŞ: č¤ć°ăăźă¸ăŤäşăćăŽĺä˝ăŤă¤ăăŚç˘şčŞăăăŚăăă ăăăăŽă§ăăăä˝ăăăŽč¨ĺŽă§çŤŻćŤăŽ alternate screen (SM(?1049) / terminfo smcup) ăçĄĺšăŤăăŚăăç°ĺ˘ă§ăăăă? äžăă°ă
LESS ㍠-X ăćĺŽăăŚăăă~/.tmux.conf ㍠set-window-option -g alternate-screen off ăŤăăŚăăă~/.screenrc ă§ altscreen off ăŤăăŚăăăterminfo ㍠smcup, rmcup ăçťé˛ăăăŚăăŞă or ć¸ăćăăŚćśăăŚăăăŞăŠăŽç°ĺ˘ă§ă (alternate screen ăćĺšăŤăŞăŁăŚăăă°ăless ăăćăăćăŤăless ăĺźăłĺşăăçŹéăŽçŤŻćŤăŽçść
ă垊ĺ
ăăăžă)ăăăăaltscreen ăŽĺéĄă§ăŻăŞăĺ ´ĺăŤăŻăăžă調ćťăĺż
čŚăŤăŞăăžăă
ĺ°ăŞăă¨ăăăŚăźăśă altscreen ăçĄĺšăŤăăŚăă or 獯ćŤă寞ĺżăăŚăăŞăăąăźăšăŻăăăŽă§ăăăźă¸ăŁăĺźăłĺşăăĺžăŤăŻćŻĺĺćçťăăăăăŤäżŽćŁăăžăă
Re: ăĄăżćĺăĺ
é¨ăăŁăźăŤăĺşĺăćĺăäťăăăŤĺĺ¨ăăă¨ćĺźăăć¤ç´˘ăăăŞă
ăăăŻăäťăžă§ăŽĺŽčŁ
ă§ "ćĺăŽĺčŞ (犺ç˝ĺşĺă)" ă§ăłăăłăăć˘ç´˘ăăŚăăăŽăĺĺ ă§ăăăăă㯠d83fd58ffbce61d1b07a677d1637b622a5c43266 ă§çşçăăŞăăŞăŁăăŻăă§ăă
Re: ăććĄăK ăŽćźä¸ä˝ç˝ŽăŤăăŁăŚćĺźăă襨示ăăăłăăłăăĺ¤ć´ăă
run-help / run-help-hoge ăŤĺŻžĺżăăäťçľăżăŻä˝ćăăžăăćăă ble/help:default, ble/help:hoge çăŞé˘ć°ĺăŤăăăă¨ăŤăŞăă¨ćăăžă (ćăăŻăĺžă§ăłăăłăćŻăŽčŁĺŽăŽäťçľăżă¨çľąĺăăăăăăăžăăăăăăŽăăăăŻăăĺ°ăčĺŻăăžă)ăman -P 'less $LESS -p ^test' bash ăăăŻčăăĺż
čŚăăăăžăăć訹ă§čŠŚăăžă㨠test ăŻčĄé ăŤăŞăăŽă§ĺźăŁăăăăžăăă-p "^[[:space:]]*test" ăŤăăă¨ä¸č´çŻĺ˛ăŤçŠşç˝ăĺŤăžăăŚăăžăčŚčŚăăăă¨ăŤăŞăŁăŚăăžăăžăâŚăĺ㍠-p test ă¨ăăă¨ăăŁă¨ćĺăŽĺĽăŽăăŽăŤĺźăŁăăăŁăŚăăžăăžăăéŁăăă§ăăâŚăäť less +$((man bash | grep -n ...))g/test^M çăŞćšćłăčăăŚăăžăăăć°ăŤăŞăăă¨ăăăăŽă§ăăĺ°ăčăăŚăżăžăăĺžăĺ OS ă§ăŽ less ăŽäşćć§ăăŠăăŞăŁăŚăăăŽăă確čŞăăŞăăă°ăŞăăžăăăăăŻć訹ă§ăŻăć示ăŽéăăŤĺăăŚăăăŽă§ä¸ćč°ă§ăăâŚă
ăăĺ°ăĺăăăă¨ăăăăžăăăćăăŚé ăăă¨ĺš¸ăă§ă
@akinomyoga ć§
ăăăă¨ăăăăăžăă
clear ăŽćĺźă
ăăăŞăăťăŠďźclear ăłăăłăăŻăĄăă㊠tput clear ăé俥ăăăŽă§ďźman ăăźă¸çąćĽă ă¨ćăŁăŚăăĺśĺžĄćĺăŻçťé˘ĺśĺžĄăŽăăă ăŁăăă§ăăă
ĺćăŤăble.sh ç¨ăŽ pager ăŽč¨ĺŽăă§ăăăă㍠bleopt ĺ¤ć°ăčż˝ĺ ăăăŽăčŻăăăă§ăăăăă
ăŻăďźăăă弽ăă§ăăĺäşşçăŤďź$MANOPT ăçĄĺšăŤăăćšăčŻăă¨ćăăžăăăăăç§ăŽč¨ĺŽăŽĺéĄă§ăăďź$MANOPT ㍠--all çăŽĺ¤ăč¨ĺŽăăŚăăă¨ďźble.sh 㨠man ăăźă¸ă獜ĺăăăä˝ăăăŚăăźĺ
ĽĺăĺăäťăăăăŞăăŞăăžăă
ç§ăŻ Xfce4 Terminal [1] ă使ăŁăŚăăăŽă§ăăďźăăŽäťŽćłçŤŻćŤăŻ xterm-256color ă terminfo ă¨ăăŚç¨ăăŚăăďźxterm-256color ㎠terminfo ă§ăŻăăĄă㨠alternate screen ăŻćĺšăŤăŞăŁăŚăăăžăăă
ćźä¸ä˝ç˝ŽĺĽăŽ man ăăźă¸ă辡ĺăăăăă¨ă確čŞăăăăžăăă
man -P 'less $LESS -p ^test' bash ăŽäťśă§ăăďźç§čŞčşŤăăĄăăŁă¨çĄçăăăăŞă¨ćăŁăŚăăžăăăăăă $PAGER ă less ă§ăŞă (more ăăăăŻéŤćŠč˝ăŞăăŽ) ă使ăŁăŚăăăăăĺ ´ĺďźĺźˇĺśç㍠less ăĺŽčĄăăăŚăăžăăžăă[2]ă
確čŞăăžăăăĺéĄăŞăăŁăă§ăă
ăăźăžăăăăăăŚăăžăăžăăăăăăžăăďźĺéăă§ăăăă¨ăăăŽăŻďź^Vă§çŠĺ˝˘é¸ćăăĺžiăŞăŠćŞĺŽçžŠăŽĺ ĽĺăčĄăŞăďźç´ĺž (^[ ăćźä¸ăă) ㍠3I ă¨ăăă¨ĺźć°ăč§Łéăăăžăăăăďźăă㯠Vim ăŽćĺă¨ĺ ¨ăĺä¸ă§ăăŽă§ĺŽĺ ¨ăŤćŁĺ¸¸ă§ăăă
.TP^Mfoo ă¨ăăé¨ĺăč§Łéăăă¨ăďźfoo ă¨ăăćĺĺăăŠăăăŤć źç´ăăŚăăăŚďźman --topic="foo" ăŽăăăŞĺ˝˘ă§ćĺŽă§ăăăăăăăŽćŠč˝ďźman ç¨ĺşŚăŤéĺăŞăăă°ăŠă ă§ăăă°ĺŽčŁ
ăăŚăä¸ćč°ăăăŞăăă§ăăďźäťăŽă¨ăăăăăăăŽăŻăŞăăăă§ăăâŚâŚă
Commit ID: d83fd58
ä¸čşžă§ăăăžăăăďźcache.d ăăŁăŹăŻăăŞă ble.sh ăŽčľˇĺăăĄă¤ăŤ (# bash script to be sourced from interactive shell ă§ĺ§ăžăăăĄă¤ăŤ) ă¨ĺä¸ăŽăăŁăŹăŻăăŞăŤä˝ćăăăŚăăăŽăŻä˝ăççąăăăŁăŚăŽăă¨ăŞăŽă§ăăăăă
ăăăăăă§ăŞăăŞăďź$XDG_RUNTIME_DIR/blesh ăŤăăăăŽăăĄă¤ăŤăä˝ćăăăăăŤăăăďźç°ĺ˘ĺ¤ć°çă§ćĺŽă§ăăăăăŤăăŚăăă ăăă¨ăŻă§ăăŞăă§ăăăăăXDG Base Directory ăŽäťć§ă§ăŻăŠăłăżă¤ă ăăĄă¤ăŤăŻă$XDG_RUNTIME_DIR é
ä¸ăŽéŠĺăŤĺäťăăăăăľăăăŁăŹăŻăăŞăŤăăŽăăĄă¤ăŤăé
罎ăăăăă¨ăĺ§ĺăăăŚăăăăă§ăăĺăäťć§ăŤăăă¨ăăăžă大ăăŽĺŽšéă使ăăšăă§ăŞăăăăă§ăăďźç§ăŽç°ĺ˘ă§ăŻ cache.d/1000 䝼ä¸ăŽçˇĺŽšé㯠2.0 e2 KiB 埡ç¨ĺşŚă§ăăŽă§ĺ
¨ăĺéĄăŞăă¨ćăăžăă
ăăăŻĺ¤ć´ăăăăŞăŠăăăăăăŞă¨ćăŁăŚăăă¨ăăă§ăăă
äťăŻ ble.sh ăŻăŚăźăśăŽăăźă ăăŁăŹăŻăăŞăŽä¸ăŤă¤ăłăšăăźăŤăăŚä˝żăŁăŚăăă ăăŚăăžăăăäžăă°ăˇăšăă ㎠/opt/blesh ă ă¨ă /usr/local/share/blesh ăŽä¸ăŤă¤ăłăšăăźăŤăăŚä˝żăă¨ăăĺ ´ĺăčăăăă訳ă§ă (cache.d/1000 ăŽăăăŤăŚăźăś ID (1000) ă§ăľăăăŁăŹăŻăăŞăĺăŁăŚăăăŽăăăăăŁă使ç¨ăćłĺŽăăŚăŽăă¨ă§ăă)ăčŞĺçăŤă¤ăłăšăăźăŤĺ
ăŽç¨ŽéĄăćŁăăçšĺŽăăŚăăŁăŹăŻăăŞć§ćăĺ¤ć´ăăăŽăé˘ĺă ăŞă¨ćăŁăŚăăăŽă§ăă
ĺăć˘ăăă寞ĺżăăžăă
ăăăăżăžăăă$XDG_CACHE_HOME ($HOME/.cache ăŞăŠ) ăŽčŠąăă¨ćăŁăŚć¸ăăŚăăžăăžăăă$XDG_RUNTIME_DIR ăŽčŠąă§ăăă
blesh/cache.d/1000 ăŻăăă $XDG_CACHE_HOME ăŤĺŻžĺżăăžăă$XDG_RUNTIME_DIR (ćŽçşć§ăŽăăźăż) ăŤĺŻžĺżăăăăŽăŻăĺŽăŻ /tmp/blesh/1000 ăŤç˝ŽăăŚăăžăăăă¨äťćšăăŚčăăŚăżăćăblesh ă $XDG_DATA_HOME ă§ăŻăŞăăˇăšăă ăŤă¤ăłăšăăźăŤăăăŚăăă¨ăăŚăăăŚăźăśćŻăŽăăĄă¤ăŤăŻ XDG ăŽăăŁăŹăŻăăŞăŤç˝ŽăăŚăčŻăă§ăăâŚăçé˘çŽăŤčăăŚăăŞăăŁăăŽă§ăăăŽçšăŤćłĺ°ăăŚăăžăăă§ăăă
ĺăć˘ăăă$XDG_CACHE_HOME 㨠$XDG_RUNTIME_DIR ăŤăŻĺŻžĺżăăžăă
ç´°ăăăă¨ă§ăăăžăăâŚâŚă
ăă¨ďźăăä¸ă¤ç´°ăăăŽă§ăăďźfailglob ăćĺšăŤăăŚăăă¨ďźl* ăŽăăăŞăłăăłăăĺ
Ľĺăăĺ ´ĺďź(ćąşĺŽăăźăćźä¸ăăĺăŤ) ă-bash: ä¸č´ăăžăă: _ble_decode_keymap_stack[last]ăă¨ăăă¨ăŠăźăĄăăťăźă¸ăĺşăžăăăăŽĺžăŻăăŻăä˝ăĺ
Ľĺăăăă¨ăăŚăăăŽăĄăăťăźă¸ăĺşăŚăžă¨ăăŤĺ
Ľĺă§ăăŞăăŞăăžăă
GNU bash, ăăźă¸ă§ăł 4.4.12
ä¸ĺ ˇĺĺ ąĺăăăă¨ăăăăăžă!
ç´°ăăăă¨ă§ăăăžăăâŚâŚă
ăă¨ďźăăä¸ă¤ç´°ăăăŽă§ăăďźfailglob ăćĺšăŤăăŚăăă¨ďź
ăăăŻăžăăă§ăăâŚĺ ¨çśç´°ăăăăăžăăăăăă寞ĺŚăăžă
fb772580ff14337010083ed5fab28adfe9349637...d886a7eea9d12e064756b3bac057f29c375688eb ć´ć°
ć°ćŠč˝
* # qx...q @xpager (ć˘ĺŽĺ¤ '')K): ble/cmdinfo/help:$command 㨠ble/cmdinfo/helpăă°äżŽćŁ
<C-[>): ăłăăłăăŠă¤ăłă˘ăźăăăăŁăłăťăŤăăăăźăăăă bell ă§ä¸ć¸ăăăăŚăăăă°ăŽäżŽćŁshopt -s failglob, shopt -s nullglob ă§ unset ăćŁăăĺăăŞăăă°ăŽäżŽćŁK): MANOPT=-a ă§ćä˝ă§ăăŞăăŞăăă°ăŽäżŽćŁĺä˝ĺ¤ć´
ble/widget/command-help), vi-mode (nmap K): ăŤăźă˝ăŤä˝ç˝ŽăŽăłăăłă㎠man ă襨示ăăăăăŤĺ¤ć´XDG_CACHE_HOME, XDG_RUNTIME_DIR ăĺç
§ăăăăăŤĺ¤ć´XDG_DATA_DIR ăĺç
§ăăăăăŤĺ¤ć´K): çľăżčžźăżăłăăłăăťăăźăŻăźă㯠man bash ă襨示ăăăK): ăˇă§ăŤé˘ć°ăŻé˘ć°ĺŽçžŠă襨示ăăă@cmplstofB ć§
ć°ă ăŽăĺ ąĺăăăă¨ăăăăăžăăé ăăŞăăžăăăăä¸éă寞ĺżăăžăăă
clear --help ăŞăŠăŤăăä¸éŠĺăŞčĄ¨ç¤şă§ăăăăman ăĺŞĺ
ăăăăă¨ăŤăă辡ăăăŤăăăŞăăžăăăd886a7ed886a7eble/cmdinfo/help ă§ĺŽçžŠĺŻč˝ăŤ (Zsh run-help ăŤç¸ĺ˝)ăĺĺĽăŽăłăăłăăŽăăŤăăăˇă§ăŤé˘ć° ble/cmdinfo/help:ăłăăłăĺ ă§ĺŽçžŠĺŻč˝ăŤ (Zsh run-help-ăłăăłăĺ ăŤç¸ĺ˝)ăâťă¨ă¤ăŞă˘ăšăŤăŻă§ăăžăăăĺż
ăăˇă§ăŤé˘ć°ă¨ăăŚĺŽçžŠăăŚä¸ăăăd886a7eman bash ăŤĺŻžĺżăăžăăă 2 ĺ man bash ăĺźăłĺşăăŚăă(ĺžčż° "ćĽćŹčŞ man ăŽĺ
厚ăŽĺĺžăŽäťćš?")ăŽă§é
ăă§ăăd886a7e çžĺ¨ăŽćŻăčăăŻ:man ă使ăŁăŚčĄ¨ç¤şăăă¨ăăŽăăźă¸ăŁăŻ man ăŤäťťăăžăăble.sh ăăăźă¸ăŁăé¸ăłăžăăbleopt pager ăč¨ĺŽăăăŚăăă°ăăă使ăăžăăăă䝼ĺ¤ăŽă¨ă $PAGER ăăăă°ăăă使ăăžăăăŠăĄăăĺŽçžŠăăăŚăăŞăă¨ă less / pager / more ăŽé ăŤăłăăłăăć˘ç´˘ăăžăăä˝ăăĺŽçžŠăăăŚăăŞăă¨ă cat ăç¨ăăžăăd886a7eman ăŽĺ
厚ăŽĺĺžăŽäťćš?ĺŽčŁ
ăćšĺă§ăăŞăăă¨ĺ°ăćŠăă§ăăăă¨ăăăăžăă
ä˝ăć
ĺ ąăťă˘ă¤ăăŁă˘ăăćăĄă§ăŞăăăĺ°ăăăăăŽă§ăă
çžĺ¨ăçľăżčžźăżăłăăłăăăăłäşç´čŞăŤĺŻžăăŚăŻăman bash ăŽčОĺ˝ä˝ç˝ŽăŤă¸ăŁăłăăăăăăŤăăŚăăžăăăă¸ăŁăłăĺ
ăŽä˝ç˝ŽăçšĺŽăăŚăăĺŽéăŤčĄ¨ç¤şăăăă㍠2 ĺ man bash ăĺźăłĺşăăŚăăăŽă§ĺ¤ĺ°é
ăăŞăŁăŚăăžă (man ăŻĺ
é¨ă§ gunzip ă groff ăŞăŠăćŻĺĺźăă§ăăăŽă§é
ă)ăăăŽçĄé§ăçăăăăŤ
man_contents=$(man bash) # man bash ăŽĺ
厚ăĺ¤ć°ăŤč¨é˛ăă
line_number=$(grep ... <<< "$man_contents") # çľăżčžźăżăłăăłăăŽčОĺ˝ä˝ç˝Žăć˘ç´˘
less -r +${line_number}g <<< "$man_contents" # ăăä¸ĺşŚ man bash ăĺźăłĺşăăŽă§ăŻăŞăč¨é˛ăăăăŽă襨示
çăŞăă¨ăăăăăŽă§ăăăăăă§äťĽä¸ăŽĺéĄăçşçăăžăă$(man bash) ă¨ăăă¨
ăă㯠man bash > a.txt ăŽăăăŤăăĄă¤ăŤăŤăŞăă¤ăŹăŻăăăŚăăman bash | cat ăŽć§ăŤăă¤ăăŤćľăăŚăĺć§ă§ăăFedora/Ubuntu/Cygwin ă§ĺçžăăžăăăăăŻĺ¤§ĺĺéĄăŞć°ăăăăŽă§ăăăć¤ç´˘ăăŚăĺăççśă訴ăăŚăăäşşăŻčŚĺ˝ăăăžăă (ĺăŤć¤ç´˘ĺä¸čśłăăăăăžăăă)ăăăŽççśăŤé˘ăă寞ĺŚćłăŞăŠăĺçĽă§ăăăă (äžăă°ăĺşĺăĺśĺžĄăăăŞăăˇă§ăłăŞăŠă§âŚ)ă
ĺŽăŻă䝼ä¸ăŽăăăŞćăă§ćĽćŹčŞăŽ man ăŽĺ
厚ăčŞăżĺşăăă¨ăŻă§ăăžăăă
stealer='sh -c "cat >> $tmpfile"'
MANPAGER=$stealer PAGER=$stealer man bash
IFS= read -r -d '' man_output < "$tmpfile"
ăăă [čż˝č¨ (2017-11-11 1:12): äťăăăă㌠POSIX ăčŚăăăŞăăˇă§ăłăŻăŞăăŚă $MANPAGER / $PAGER / ăŞăăˇă§ăł -P 㯠POSIX ă§ĺŽăăăăŚăăŞăăŽă§ăĺŻćŹă§ăŻăăăžăăPAGER ăŻăĄăăă¨ăăăžăăâŚăä˝ăăŤăăŚăćĽćŹčŞă§ĺéĄăçăăŚăăăŽăŻčŹă§ăăâŚ]ă ă¨ăăăă¨ă§ MANPAGER=$stealer PAGER=$stealer man bash > $tmpfile2 ăŞăŠă¨ă㌠$tmpfile 㨠$tmpfile2 ăŽĺ
厚ăçľĺăăăă¨ăčăăăŽă§ăăăăăăăă¨é獯ăŤăžăĺéĄăĺçşăăžăăă¨ăăăăă§ăäťăŻăăŽćšćłăŻä˝żăŁăŚăăžăăă
ç§ăŻ Xfce4 Terminal [1] ă使ăŁăŚăăăŽă§ăăďźăăŽäťŽćłçŤŻćŤăŻ xterm-256color ă terminfo ă¨ăăŚç¨ăăŚăăďźxterm-256color ㎠terminfo ă§ăŻăăĄă㨠alternate screen ăŻćĺšăŤăŞăŁăŚăăăžăăă
ć
ĺ ąăăăă¨ăăăăăžă! alternate screen ăćĺšăŤăŞăŁăŚăăăŽăŤăćăă "č¤ć°çťé˘ăŤäşăăăŤăăŽĺ
厚㧠less ăăćăăă¨ă犺čĄăŤăŞăŁăŚăăžă" ăŽăŻĺĺ ăćŞă ĺăăăžăăăä˝ăăŤăăŚăăäťĺăŽäżŽćŁă§ćŻĺĺćçťăăăăăŤăăăŽă§ăăăŽĺéĄăč§ŁćąşăăŚăăă¨čŻăăŽă§ăăăăăă§ăăăăă
K ăŽćźä¸ä˝ç˝ŽăŤăăŁăŚćĺźăă襨示ăăăłăăłăăĺ¤ć´ăăćźä¸ä˝ç˝ŽĺĽăŽ man ăăźă¸ă辡ĺăăăăă¨ă確čŞăăăăžăăă
確čŞăăăă¨ăăăăăžă!
確čŞăăžăăăĺéĄăŞăăŁăă§ăă
ăăĄăăăăăă¨ăăăăăžă!
$XDG_RUNTIME_DIR寞ĺżăăžăă e892d42795785cb01edc75dd34dcfbf2cb687342 49ee5be367ab47dd95cf46fc30d8aeff02afc9c1
${XDG_CACHE_HOME:-$HOME/.cache}/blesh â $_ble_base/cache.d/$UID ăŽĺŞĺ
é ă§ç˘şčŞăťä˝ćăăžă${XDG_RUNTIME_DIR:-/run/user/$UID}/blesh â /tmp/blesh/$UID â $_ble_base/tmp/$UID ăŽĺŞĺ
é ă§ç˘şčŞăťä˝ćăăžămake ĺźć°ăŽ INSDIR) â ${XDG_DATA_DIR:-$HOME/.local/share}/blesh ăŽĺŞĺ
é ä˝ă§ćąşăăžăfailglob ăćĺšăŤăăŚăăă¨ďźl* ăŽăăăŞăłăăłăăâŚäżŽćŁăăžăă f15f8c5cc3c45ce77e7b1a8ac4df2d50d49c2283 98b6546c6d7a1c8752439d7918506f7723ceef95 čż˝č¨: ăăĄăĺŽĺ ¨ăăŠăăčŞäżĄăăŞăăŽă§ç˘şčŞăăŚé ăăžăă¨ĺš¸ăă§ă
@akinomyoga ć§
čżäżĄăé ăăŚăăžăŁăŚçłă訳ăăăžăăă
ăžăďźĺşćŹçăŤďźăŤăźă˝ăŤä˝ç˝ŽăŻ @ ă§ç¤şăăă¨ăŤăăžăă
ăă¨ăăłăăłăăŠă¤ăłăŤćĺăăăŁăŚăçľäşăăŚăăžăăžăă
$ some command
:@
$ # ^D
ăă°ă˘ăŚă
# çľäşăă
ä¸ć˘ăăźăŻĺăäťăăăăăŤăŻăŞăăžăăăďźäžçśă¨ăăŚĺ
ĽĺăŤăŻćŻéăçăăžăă
ăłăăłăăŠă¤ăłă§ $ l* ă¨ĺ
Ľĺăăă¨
ă¨ăŠăźăĄăăťăźă¸ăăă襨示ăĺ
Ľĺä˝ç˝ŽăŽĺłéŁăŤçşçăďźçśăĺ
Ľĺă匨ăăăăžăă
čŞĺĺćă§ăăăżăžăăăďźç§ăŻ failglob ăŽäťăŤăć§ă
ăŞćŠč˝ăćăĺăăăŚăăďź
ăăăăŽçľĺăăćĺă§čŠŚé¨ăăăŽăŻćŁç´ăŤč¨ăŁăŚăăăŠăă§ăă
ĺ¤ĺ glob é˘äżăŽćŠč˝ăŽĺšžă¤ăă羥ăżĺăŁăŚăăăŽă ă¨ćăăŽă§ăăďźăăăăčŞĺă§çľĺăďź
ăŞăăă¤ăĺ
ĽĺăŤćŻéăçăăăăŠăăăăčŚćĽľăăăăšăăłăźăăŻčŞĺăŤăŻć¸ăăŞăă§ăă
^Z ă§ćťăŁăă¨ăăŽăŤăźă˝ăŤĺ˝˘çśç§ăŻ Vim ăŽăăźăăŤă˘ăźăăŤăăăŚçŠĺ˝˘ăŤăźă˝ăŤă襨示ăăăŚăăăŽă§ăăďź
ăăăă ble.sh ㍠^Z ă§ćťă㨠ble.sh vi-mode ăŽćżĺ
Ľă˘ăźăăŤăćăăăçŠĺ˝˘ăŤăźă˝ăŤăŽăžăžăŤăŞăăžăă
Vim ă§ăŞăăŚăďźăŤăźă˝ăŤăŽĺ˝˘çśă ble.sh 䝼ĺ¤ăŤăăŁăŚĺ¤ĺăăćăŤçşçăăăăă§ăă
ä¸ĺşŚă˘ăźăăĺăćżăăă¨ç´ăăžăă
éćżĺ
Ľă˘ăźăă§äťŽćłçŤŻćŤăŤćĺĺă貟ăäťăăă¨ďźăăŽĺ
厚ăăăŽă˘ăźăăŽćăŽăłăăłăă¨ăăŚĺ
Ľĺăăăžăă
äťćšçĄăăă¨ăŞăă°ăăă§ăăă
(éćżĺ
Ľă˘ăźăăăćżĺ
Ľă˘ăźăăŤćťăăŽăŤăŻććŞ 2ăăźăćźăă ăă§ĺĺăŞăŽă§ďźăăăăćéă§ăŻăŞă)
ăŽă§ăăďźă§ăăă°ĺ¤é¨ăăăŽč˛źăäťăăŽéăŤăŻćżĺ
Ľă˘ăźăă§ăŽăăă¨ăăŚä¸ĺžăŤč§ŁéăăăăăăŤăăŚč˛°ăăăă§ăă
ăăăžăăăćŹćĽăŻĺĽ issue/PR ćĄäťśăŞăŽă§ăăăă訹ăăŚä¸ăăă
ć˘ĺŽă§ăŻďźĺĺ¨ăăăăšăŤăŻä¸çˇăĺźăăăžăă
ăăă揥ăŽăăăŞçśćłă§ďź(ĺĺ¨ăăŞă /not/exist/path ăĺĺ¨ăă /now/exist/path ăŤĺ¤ć´)
$ cmd /not/exist/path some string
$ cmd /now/exist/path some string
^^^^^^^^^^^^^^^^^^^^^^^^^^^
^ ăŽăăăŤčĄćŤăžă§ä¸çˇăĺźăăăŚăăăžăăžăă
çşçăăăŽăăăŽĺ ´ĺăŽăżăŞăŽă
ăăŽăă¤ăŠă¤ăă硨éăŤăăăŠăŽăăăŤĺ¤ĺăăă
/another/path/not/exist/path ăŽçˇ¨éă§ĺłĺş§ăŤč§Łćśăăăăă¨ăăŁăăă¨ăŻăĄăăŁă¨čŞżăšĺ°˝ăăŚăăŞăă§ăă
sudo, xargs ĺžăŽăˇăłăżăŻăšăă¤ăŠă¤ăçŻéĄăŽéăă§ăăăăăăăă¨ăăăćăăŽă§ăăďźĺłăăă§ăăăăă
d886a7eea9d12e064756b3bac057f29c375688eb...256d05c7aed6491899b3d4961217d63d004c94ae ć´ć°
ăă°äżŽćŁ
#D0630#D0629#D0627#D0628ĺä˝ĺ¤ć´
#D0606#D0608#D0609#D0610#D0618shopt -s failglob ăŽćă夹ćăăĺčŞăŤă¨ăŠăźçč˛ăăă #D0630ć§ćč§Łć - ć°ćŠč˝
[...] ăŤăăăăżăźăłăŽč§ŁćăŤĺŻžĺż #D0612#D0622#D0626ć§ćč§Łć - ăă°äżŽćŁ
$({ echo; }) ă $(while false; do :; done) ăŤăă㌠}, done çăŽĺžăŤăłăăłăăăŞăă¨ć§ćă¨ăŠăźăŤăŞăŁăŚăăăă°ăŽäżŽćŁ #D0593- ă§ĺ§ăžăĺĺăŽăłăăłăăťé˘ć°ĺăćŁăăçč˛ăăăŞăăă°ăŽäżŽćŁ #D0595if :; then :; fi $(echo) ăŞăŠăŽć§ćă¨ăŠăźçč˛ăĺŽčĄăăăŞăăă°ăŽäżŽćŁ #D0597#D0601function hello (()) ă¨ăăŚăă㌠) ( ăćżĺ
Ľă㌠function hello () (()) ăŤăăă¨ä¸ć´ĺăçăăăă°ăäżŽćŁ #D0602shopt -u extglob ăŤăăŚă _ble_syntax_bashc ăć´ć°ăăăŞăăă°ăŽäżŽćŁ #D0615ć§ćč§Łć - ĺä˝äżŽćŁ
> a.txt; echo ăŻć§ćă¨ăŠăźă§ăŻăŞăăă¨ăŤĺŻžĺż #D0591#D0592time ă time -p ăŻć§ćçăŤćŁăăăă¨ăŤĺŻžĺż #D0593echo $(echo > ) ăŞăŠăŽ > ăŽĺźć°ăăŞăć§ćă¨ăŠăźăŤăă $() ăéăăĺĽăŽć§ćă¨ăŠăźăĺźă辡ăăăŚăăăŽăćĺś #D0601function hello (()) 㯠bash-4.2 ćŞćşă§ăŻć§ćă¨ăŠăźă¨ăăŚćąăăăăŤĺ¤ć´ #D0603time -p -- command ăçŹçŤăăćčă§č§ŁćăăăăăŤĺ¤ć´ #D0604time ăŽĺźć°ăŽăłăăłăčŁĺŽăă§ăăŞăăŁăĺéĄăŻč§Łćśăă #D0605@(<(echo)) ăŤĺŻžĺż #D0611@(@()) ăä¸ć´ťć§ăŤăă #D0613shopt -u extglob ăŽćă§ă * ă ? ăçč˛ăă #D0616for var in args... ㎠args ăŤăăăăŞăă¤ăŹăŻăăŽçŚć˘ #D0623#D0624#D0625@cmplstofB ć§
ăĺ ąĺăăăă¨ăăăăăžă!
ăăăă¨ăăăăăžăă俎ćŁăăžăă d0056ba9812fe859146101966b1380b454b8fb2c
256d05c7aed6491899b3d4961217d63d004c94ae
ăłăăłăăŠă¤ăłă§ $ l* ă¨ĺ Ľĺăă㨠bash: ä¸č´ăăžăă: l* ă¨ăă
ă¨ăŠăźăĄăăťăźă¸ăăă襨示ăĺ Ľĺä˝ç˝ŽăŽĺłéŁăŤçşçăďźçśăĺ Ľĺă匨ăăăăžăă
words=($var) ăĺŽčĄăăŚăăă¨ăăă§ă°ăăăăżăźăłăĺŤăžăăŚăăă¨é§çŽă§ăâŚăăăŻĺ¤§ĺĺşçŻĺ˛ăŤäşăăžăâŚă俎ćŁăăžăăăĺăć˘ăăĺăăçŻĺ˛ă§äżŽćŁăŻăăžăăăăăăăăăă¨äťăŤăăăăăăăăžăăă
ćŹĺ˝ăŽăă¨ăć¸ăă¨ăble.sh ăŽĺŚçä¸ăŻ shopt -u failglob ăŤăăŚăăăŚăăłăăłăăĺŽčĄăăă¨ăă ă shopt -q failglob ăŽçść
ă垊ĺ
ăăăă¨ăăăăăŤăăă°ĺççăŤĺéĄăŻçşçăăŞăăŞăăŻăă§ăăćăăŻăBash ăŽĺşăă¨ăŠăźăĄăăťăźă¸ăĺ
¨ăŚéťćŽşăă (/dev/null ăŤçšă) ă¨ăăăă¨ă§ăčŻăăŻăă§ăăăăă ble.sh ăŽĺŽčŁ
čŞä˝ćŹćĽăŻăăšĺĺąéăŤäžĺăăŚăŻăŞăăŞăăŻăăŞăŽă§ăăă°ăéĄăăăăăăăŤçžçśăŽĺŽčŁ
ăŽăžăžăŤăăăŚä¸ăăă
čŞĺĺćă§ăăăżăžăăăďźç§ăŻ failglob ăŽäťăŤăć§ă ăŞćŠč˝ăćăĺăăăŚăăďź
ăăăăŽçľĺăăćĺă§čŠŚé¨ăăăŽăŻćŁç´ăŤč¨ăŁăŚăăăŠăă§ăă
ăćć°ăăăăăăŚçłă訳ăăăăžăăăççśăăćăăŚé ăăă°ăĺ¤ăăŽĺ ´ĺăŻĺĺ 犜ćăŻăăĄăă§čĄăŁăćšăćŠăć°ăăăăŽă§ (ble.sh ăŽä¸čşŤăçžçśăŽĺéĄçšăććĄăăŚăăăŽă§)ăćĺăŤç°ĄĺăŤĺ ąĺăăŚăăă ăăćšăčŻăăăă§ăăăăĄăă§ćăĺ˝ăăăă¨ăăŞăĺçžăă§ăăŞăĺ ´ĺăŤăŻă垥ĺĺăăéĄăăăăă¨ăŤăăžăă
ĺ¤ĺ glob é˘äżăŽćŠč˝ăŽĺšžă¤ăă羥ăżĺăŁăŚăăăŽă ă¨ćăăŽă§ăăďźăăăăčŞĺă§çľĺăďź
ăŞăăă¤ăĺ ĽĺăŤćŻéăçăăăăŠăăăăčŚćĽľăăăăšăăłăźăăŻčŞĺăŤăŻć¸ăăŞăă§ăă
ăăšăăąăźăš (ĺéĄă辡ăăĺŻč˝ć§ăŽăăăąăźăš) ăăé ăăă°ć§ă
ăŽçľăżĺăăă§čŞĺĺŽčĄăăă¨ăăăŽăŻăăĄăă§ć¸ăăă¨ăă§ăăžăă(ćŹĺ˝ăŻäťĺăĺ ąĺăăă ăă l* ăŽĺ ´ĺăŤă¤ăăŚăăăšăăŤĺ ăăăšăăŞăŽăăăăăŞăă§ăăâŚ)
ăăŽçšăŤé˘ăăŚăŻćăčłăŁăŚăăžăăă§ăăăćŽéă獯ćŤăŽçść
ăĺ¤ć´ăăăçľäşćă C-z (SIGTSTP) ăĺăĺăŁăćăŤçŤŻćŤăŽçść
ă垊ĺ
ăăăŽă礟ĺăŞăŽă§ăăăăŤăźă˝ăŤĺ˝˘çśăŤé˘ăăŚăŻĺ¤ć´ĺăŽçść
ăçĽăăă¨ăă§ăăŞăăŽă§ Vim ăŻĺžŠĺ
ăăŚăăăŞăăŽă§ăăâŚă
ĺĺĽăŤĺŻžĺżăăăă¨ăŻă§ăăžăăăăăăŻĺ¤é¨ăłăăłăăĺźăłĺşăă¨ăĺ
¨čŹăŽĺéĄăŤăŞăăžăăâŚăçžçśă§ăŻ keymap/vi.sh ă§ bleopt term_vi_nmap ăä˝ăčăăăŤĺşĺăăăăăŤăăŚăăžăăăăăŻă ble.sh ăŽć çľăżă¨ăăŚć示çăŤăŤăźă˝ăŤçść
ă玥çăăăăăŤăăăć°ăăăžăăçžçśă§ăŻăĺ
㎠Vim ă¨ĺć§ăŽč¨ĺŽćšćłă¨ăăčŚćăĺć ăăŚĺśĺžĄăˇăźăąăłăšăč¨ĺŽă§ăăăăăŤăăŚăăžăăăăăă 㨠ble.sh çăŤăŻçžĺ¨ăŽăŤăźă˝ăŤçść
ăăŠăăŞăŁăŚăăăŽăĺăăăŞă (ä¸ĺż bleopt term_vi_nmap ăč§Łćăăă¨ăăćăăăăžăăĺăăăŠă) ăŽă§ă"ăŤăźă˝ăŤĺ˝˘çśăćĺŽăăč¨ĺŽé
çŽ" ăä˝ăă¨ăăćĄă§ăăăăăăŻăä˝ăčŻăćĄăčăăŞăŠćăăžăăăăŠăăăçĽăăä¸ăăă
䝼éăŽé çŽăŤă¤ăăŚăŻ vim ă¨é˘äżăŞă桹ĺťă§ăăŞăăŽă§ăĺăć˘ăă merge ăŽćšăĺŞĺ ăăăăă¨ăŤăăžăă
Bracketed paste mode (DECSET(2004)) ă¸ăŽĺŻžĺżă¨ăăăă¨ă§ĺŽăăă§ăăăă (cf memo.txt ToDo 2015-08-14/3)ăăăăăçžĺ¨ăŽ mode ăŽçść
ă玥çăăŚăĺ¤é¨ăłăăłăăĺźăłĺşăă¨ăăŞăŠăŤĺžŠĺ
ăăă¨ăăăăăŤĺŽčŁ
ăăĺż
čŚăăăăŽă§ăä¸č¨ăŽăŤăźă˝ăŤĺ˝˘çśăŽĺŻžĺżă¨ĺćăŤčĄăăă¨ăŤăăžăă
ăĺ ąĺăăăă¨ăăăăăžăă調ăšăŚăăă ăăŚăăżăžăăăĺŽăŻăăăăŻć˘çĽăŽĺéĄă§ĺĺ ăĺăăŁăŚăăžăăĺ¤ć´ăŽçŻĺ˛ăć¤ĺşăăĺšçăŽčŻăĺŚçćšćłăč¤éăŤăŞăăŽă§äżçăŤăŞăŁăŚăăžăă (cf memo.txt ToDo 2015-08-16 / memo.txt #D0231)ăăžăćšăăŚčăăŚăżăŚĺŻč˝ăăă§ăăă°ĺŻžĺżăăžăă
ăăć°ăŤăŞăăăă§ăăăĺšçăŽćŞăĺŽčŁ (1ćĺĺ Ľĺăă庌ăŤĺ ¨ĺčŞăŤă¤ăăŚçč˛ăĺ庌č¨çŽăă) ăŤĺăćżăăćăăăăžăăăéˇăăłăăłăăŠă¤ăłă§é ăăŞăăžăă
ăăă°ăŠă čŁĺŽă¨äźźăć çľăżă§ăăłăăłăćŻăŽĺčŞăŽçč˛ăŤĺŻžĺżăăăă¨čăăŚăăžăăăŽă§ăăăŽćšĺă§čăăŚăżăžăă
ćŞă ăă°ăŻć˛˘ĺąąăăă¨ăŻćăăžăăăĺ ¨ă使ăăŞăă¨ăăăă¨ăăŞăăăăŞăŽă§ăăăăă merge ăăăăă¨čăăŚăăžăăä˝ăăŤăăŚăăă°ăŻĺ¤ăăŽäşşăŤä˝żăŁăŚăăă ăăŞăă¨ăŞăăŞăĺăé¤ăăžăă (ĺŽéăŚăźăśăăăăŽăăŻä¸ćă§ăăâŚ)
ăăă§ merge ăăĺăŤćĺžăŤ vi-mode ăŤăăćä˝ăŽć§ĺă animated GIF ăŤăăăăă¨čăăŚăăžăăăăăăčŞĺă§ä˝ăă¨ăŞă㨠vim ĺĺżč ăŞăŽă§ăŞăăŞăéŁăăăŽă§ăä˝ćăäžé źăăăăŽă§ăăăăăă§ăăăăăä˝ĺ垥ä¸čé ăăă°ă¨čăăŚăăăžăă
@akinomyoga ć§ďźć§ă ăŽčż˝ĺ ăăăă¨ăăăăăžăă
確čŞăăžăăă
ăăźăďźăžă ĺéĄăăăăžăă(dotfile ăŽăłăăăăŤăŻč§Łćąşăăć¨ăć¸ăăŚăăăžăăăăăŻĺéăă§ă)
ăłăăłă㍠glob ăĺŤăžăăŚăăĺ ´ĺăŞăŠăŻăăăŽă§ăăďź
ĺĺ¨ăăŞăăăšăčŁĺŽăăăă¨ăăă¨ä¸ĺ
ˇĺăçşçăăžăă
$ ls /usr/share/foo@
$ # čŁĺŽăăź
$ ls /usr/share/foobash: ä¸č´ăăžăă: /usr/share/foo*
@
ă¨ăăăăďźglob é˘äżăŽăŞăăˇă§ăłăŻäťĽä¸ăŽéăćĺšăŤăăŚăăăžăă
shopt -s globstar
shopt -s nocaseglob
#shopt -s failglob
shopt -s dotglob
shopt -s extglob
ç§ă§ăăăă°ć śăă§ćżăăžăă
ĺçťăŤă¤ăăŚďźăŞăŤăçšĺĽăŞćĺŽçăăăžăă§ăăăăă
Emacs ă˘ăźăă§ăŽĺä˝é˘¨ćŻăčŚăă¨ďźXTerm ć˘ĺŽăŽé
č˛ĺăłăăŠăłăă§ďźä˝ăŽăăźăĺ
ĽĺăăăăŻ
(äžăă° ^A ă¨ăăĺ
Ľĺ) 襨示ăăăŚăăžăăăďźăăăč¸čĽ˛ăă形ă§ăăă§ăăăăă
ĺäşşçăŤďźçšăŤ Vim ă˘ăźăă§ăŽçšĺž´ă示ăçşăŤăŻăŠăăŞăăźăćźä¸ăăăŚăăăă襨示ăăăŚăăćšă
čŻăăăŞă¨ćăăŽă§ăăă
čż˝č¨
辡ĺç´ĺžăŤĺąĽć´ăéĄă (ă¨ăăăă ^P ăćźä¸ăă) ă¨ä¸çŞĺ§ăăŽĺąĽć´ăŤăžă§ćťăŁăŚăăžăăžăă
確čŞăéĄăăăžăă
@cmplstofB ć§
ăăăă¨ăăăăăžăă
犴ă ăăă§ăăżăžăăâŚăç´ăăžăă d0b8576a06a1cffe255945da34717d00f078d56c
ćŹĺ˝ăŻăć示ăŽč¨ĺŽă§ăăĄăăćŤă使ăŁăŚăżăŚčŞĺă§ç´ăăšăă¨ăăăŞăŽăăăăăžăăăăĺźăçśă failglob ĺ¨ăăŽä¸ĺ
ˇĺăăŞăă使ăŁăŚăăă ăăŚç˘şčŞăăŚăăă ăăă¨ăăéĄăăăŚăčŻăă§ăăăăăăăŽéăäťăŽé
çŽăŤă¤ăăŚćťăăăă¨ăŤăăžăă
ĺăć˘ăăčŞçąăŤä˝ăŁăŚăăă ăăŚĺéĄăăăžăăă
Emacs ă˘ăźăă§ăŽĺä˝é˘¨ćŻăčŚăă¨ďźXTerm ć˘ĺŽăŽé č˛ĺăłăăŠăłăă§ďźä˝ăŽăăźăĺ ĽĺăăăăŻ
(äžăă° ^A ă¨ăăĺ Ľĺ) 襨示ăăăŚăăžăăăďźăăăč¸čĽ˛ăă形ă§ăăă§ăăăăă
ăăâŚă㎠GIF ăŻčŞĺă§ăä˝ăčŚć ăăăăŞăăŚäťä¸ă¤ă ăŞă¨ćăŁăŚăăćăŞăŽă§ăăăGUI ăŽă˝ăăăŚă§ă˘ăĺ
ĽăăŚăăŁăăăŁăăăŽăé˘ĺă ăŞă¨ćăŁăăŽă§ăăŞă˘ăźăăăšăăŽä¸ă§çŤŻćŤăă使ăă saitoha/seq2gif ăćšé ăăŚä˝żăŁăŚä˝ăŁăăŽă§ăăăăăăăă¨ăăŠăłăă seq2gif ăŤçľăżčžźăżăŽăăŽăă使ăăăăăźĺ
ĽĺăŽčĄ¨ç¤şćŠč˝ăăŞăăŽă§ăăă
é
č˛ăŤé˘ăăŚăăăăă使ăăŽç°ĺ˘ăéťĺ°ăŤç˝ă§ăăă°ăăŽç°ĺ˘ă§ä˝ăŁăŚé ăăă°ĺš¸ăă§ăăćčżăŻçŤŻćŤă¨ăăă°éťĺ°ăŤç˝ćĺăŤăžăćťăŁăŚăăăăă§ăç˝ĺ°ăŤéťćĺă ă¨çŤŻćŤăŽçťé˘ă ă¨čŞčăăŚăăăăŞăăăăŞăŽă§âŚăăžăăçžĺ¨ăŽ ble.sh ăŽć§ćçč˛ăŻç˝ĺ°ĺćăŤčŞżć´ăăăăăŽăŞăŽă§ ble-color-setface ă§éŠĺŽé
č˛ăĺ¤ăăŚé ăă¨čŻăăŽă§ăŻăŞăăă¨ćăăžăă(ç§ăŻäšąčŚăŽăăă§éťĺ°ă ă¨ćĺăčŚăăŞăăŽă§ăăŠăăŤăéťčćŻăŽčŞżč˛ăă§ăăžăăâŚăăăăčŞăăćĺăŽč˛ă¨ăăăă¨ă§ăĺ
¨é¨ç˝ăçˇăéťč˛ăŽćĺăŤăŞăŁăŚăăžăăžăâŚ)
ĺäşşçăŤďźçšăŤ Vim ă˘ăźăă§ăŽçšĺž´ă示ăçşăŤăŻăŠăăŞăăźăćźä¸ăăăŚăăăă襨示ăăăŚăăćšăčŻăăăŞă¨ćăăŽă§ăăă
ăăé˘ĺă§ăŞăăă°ăćŻéăăŽăă㍠(ăăźăŽĺ ĽĺăĺăăăăăŤ) ăéĄăăăŚăăă§ăăăăăăăăăăăăăăăăăžăă
čż˝č¨: ĺŽăŽă¨ăăăăăă GIF ă§ăŞăăŚăčŻăă§ă
ĺçžăăžăăăâŚăBash ㎠version ăăă¨ćăăžăăăăăă§ăăŞăăăă§ă (bash-3.2, 4.0, 4.3, 4.4 確čŞć¸ăż)ăăăĺ°ăçśćłă確čŞăăăŚăăă ăăŚčŻăă§ăăăăă
ăžăă䝼ä¸ă .bashrc (source "$_ble_base/keymap/vi.sh" ăăĺž) ăŤč¨čż°ăăŚăăă ăăŚĺŽčĄăăă¨ăăĺçžăăă¨ă㍠a.txt ăŤăŠăŽăăăŞĺ
厚ăĺşĺăăăŚăăă確čŞăăŚé ăăă¨ăŻă§ăăžăăăăă¨ăhistory 1 ăŽĺşĺĺ
厚 (ćĺžăŤĺŽčĄăăăłăăłă) ăŻä¸ĺżĺäşşć
ĺ ąăŞăŽă§ăăăä¸ĺłăăăŽăĺŤăžăăŚăăžăăăéŠĺŽäźăĺăŤăăŚä¸ăăăžăă
function ble/widget/debug {
echo 0 >> a.txt
declare -p _ble_edit_history_{loaded,ind,prefix,count} >> a.txt
local index; ble-edit/history/getindex
local count; ble-edit/history/getcount
echo "1:index=$index:count=$count" >> a.txt
history 1 >> a.txt
ble/util/assign lastcmd 'history 1'
echo "2:(lastcmd=$lastcmd)" >> a.txt
ble/widget/@nomarked backward-line-or-history-prev
declare -p _ble_edit_history_{loaded,ind,prefix,count} >> a.txt
echo 3: >> a.txt
}
ble-bind -m vi_imap -f 'C-p' debug
寞ĺżăăăă¨ăăăăăžăă
ĺçžăăžăăăâŚă
ăăźăăBash ăŽĺäşşč¨ĺŽăčŞăżčžźăžă㍠($ bash --norc) 辡ĺăăŚďź
ăăŽçść
ă§ ble.sh ă辡ĺ ($ source path/to/ble.sh) ăăŚăĺçžăăăŽă§ăăăăă§ăăă
ä¸ĺż Bash ăŽăăźă¸ă§ăłăŻ
GNU bash, ăăźă¸ă§ăł 4.4.12(1)-release (x86_64-redhat-linux-gnu)
ă§ăă
䝼ä¸ăăăă°çľć㎠a.txt ăŽĺ
厚ă§ăă
0
declare -- _ble_edit_history_loaded=""
declare -- _ble_edit_history_ind="0"
declare -- _ble_edit_history_prefix=""
declare -- _ble_edit_history_count=""
1:index=0:count=0
3966 rm a.txt
2:(lastcmd= 3966 rm a.txt )
declare -- _ble_edit_history_loaded="1"
declare -- _ble_edit_history_ind="0"
declare -- _ble_edit_history_prefix=""
declare -- _ble_edit_history_count="3966"
3:
ăžăďźĺčăŤăŞăăĺăăăžăăăďź
$ history $(history | wc -l) | head -1
ăŽçľćăŻčľˇĺć㍠^P ăăćăŤčĄ¨ăăăćĺĺă¨ĺä¸ă§ăăă
@cmplstofB ć§
芌ăăŚăăă ăăŚăăăă¨ăăăăăžăă
2:(lastcmd= 3966 rm a.txt )
ăăăĺăăăžăăăhistory 1 ăŽĺ˝˘ĺźăéăăŽă§ăăăĺŽăŻăšăăźăšăĺ
é ăŤĺ
ĽăăŽă§ăăăĺçžăă§ăăžăăăç´ăăžăă 8a1b8b04e3cc022572a3be950261fcd539121cf8 (ć訹ăŽç°ĺ˘ă ă¨ĺąĽć´ăŽć°ă 5 ćĄăŞăŽă§ĺçžăăŞăăŁăăŽă§ăăă幼ć´ăŽć°ăć¸ăăăăĺçžăăžăă)
俎ćŁăăăă¨ăăăăăžăďź çĄäşç´ĺăŽĺąĽć´ă襨示ăăăžăăă
äşč§Łăăžăăă
ččśłăččśłă§ăăâŚâŚ
䝎ćłçŤŻćŤăŽć˘ĺŽăŽčćŻč˛ăŻ 180 庌ă¨ăăă 360 庌蝢ćăăŚăăă¨ăŻçĽăăŞăăŁăă§ăă
ăăăăă°ć㎠GNOME2 ㎠GNOME Terminal ăŽăšăŻăŞăźăłăˇă§ăăăŻďźç˘şăăŤç˝ĺ°ăŤéťă§ăăă
ç§ăŻĺݧăĺ°ĺˇçŠăŽăăăŤç˝ăčćŻăŤéťăćĺă¨ăăăŽăăăăčŚćăŞăŽă§ďź
ć¸çąăŞăŠăč˛ăĺ蝢ăăŚčŞăă§ăăăăăžăă
256d05c7aed6491899b3d4961217d63d004c94ae...3aa7fa6697a46745b0c8fe5e4d0a82a84fc3a652 ć´ć°
ć°ćŠč˝
#D0639ĺä˝äżŽćŁ
#D0638#D0635command-help (nmap K, emacs f1) ăĺăăăăŤă#D0636[...] ĺ
é¨ă§ăăŤăĺąéă辡ăăŁăă¨ă [...] ăŻćĺłă夹ă #D0637<C-w>): imap <C-w> ă¨ĺć§ăŤ Vim ăŽĺăăŤĺ¤ć´ăă°äżŽćŁ
#D0631failglob ĺ¨ăăŽăă°ăŽäżŽćŁ (3) #D0633 #D0634ret ă°ăăźăăŤĺ¤ć°ăćąćăăăŚăăăă°ăŽäżŽćŁ #D0632__defchar__ ăăĺźăłĺşăăă widget ă 125 ăčżăăă¨ă__default__ ăăĺźăłĺşăăă widget ăŤăăźĺă渥ăăăŞăăă°ăŽäżŽćŁset -u ăŤăăă¨ĺ
¨ăĺăăŞăăă°ăŽäżŽćŁ #D0642read -e ăĺăăŞăăă°ăŽäżŽćŁ #D0643ćŞĺŻžĺż
u, C-r, U=cs ds ăŽă¤ăłăăłăxargs, sudo ăŞăŠ)@cmplstofB ć§
寞ĺżăăžăă 21cf9b187083e99dcddb0b7193615ceec20baa72
ăŤăźă˝ăŤĺ˝˘çśăŽč¨ĺŽćšćłă䝼ä¸ăŽăăăŤĺ¤ć´ăŤăŞăăžăăăŽă§äżŽćŁăăéĄăăăžăă
# ĺžćĽăŽč¨ĺŽäž
# bleopt term_vi_nmap="${_ble_term_Ss//@1/2}"
# bleopt term_vi_imap="${_ble_term_Ss//@1/5}"
# bleopt term_vi_omap="${_ble_term_Ss//@1/4}"
# bleopt term_vi_xmap="${_ble_term_Ss//@1/2}"
# bleopt term_vi_cmap="${_ble_term_Ss//@1/0}"
# ć°ăăč¨ĺŽćšćł (äž)
bleopt keymap_vi_nmap_cursor=2
bleopt keymap_vi_imap_cursor=5
bleopt keymap_vi_omap_cursor=4
bleopt keymap_vi_xmap_cursor=2
bleopt keymap_vi_cmap_cursor=0
寞ĺżăăžăă f53be71df81998acac153172b700930a559f71a0
çŠĺ˝˘ăă¸ăĽă˘ăŤă˘ăźăăŤăăă貟ăäťăăŻçŠĺ˝˘ćżĺ Ľă¨ăăŚĺŽčŁ ăăŚăăžăŁăăŽă§ăăăĺžă§ Vim ăŽćŻăčăă確čŞăăăçŠĺ˝˘ćżĺ Ľă§ăŻăăăžăăă§ăăâŚăăăăăçŠĺ˝˘ćżĺ ĽăŽćšăčŞçśăŤćăăăăŽă§ĺăć˘ăăăăŽăžăžăŤăăŚăăăžăăĺéĄăăăăžăăăăçĽăăä¸ăăă
čż˝č¨
寞ĺżăăžăă 47540541484cdb95ba88acecf547345a8d1bd8ba
u ă§ä¸ă¤ĺ
ăŤćťăă<C-r> ă§ä¸ă¤ăăç´ăăžăăU ăŻćťăăă¨ăă§ăăă¨ăĺ
¨ăŚĺ
ăŤćťă (ĺćçść
ăŤćťă)ăăă䝼ĺ¤ăŽă¨ăĺ
¨ăŚăăç´ăăžă (ćć°ăŽçˇ¨éçść
ăŤăžă§é˛ă)ă
@cmplstofB ăăž
ĺçťăŽćšăŻăăăă§ăăăä˝ăă¨ăŚăç´ ć´ăăăăăŽăä˝ăăă¨ć°č˛ ăŁăŚăăžăŁăŚăĺ´ăŁăŚćăć˘ăžăŁăŚăăžăŁăŚćŠăžăăŚăăăŽă§ăŻăŞăăă¨ćăŁăŚĺżé ăăŚăăžă (ăă ăĺżăăŤăŞăŁăŚăăăĺżăăă ăă§ăăăčŻăăŽă§ăă)ăč˛ă ă¨ăăźĺ ĽĺăŽčĄ¨ç¤şă ă¨ăč˛ăŽčŞżć´ă ă¨ă注ćăäťăăŚăăžăăžăăăăăăăăŁăăăŽăĺ ¨ăŚçĄčŚăăŚĺăć˘ăăăŻćť čśčŚčśăŞăăŁă¤ăäťäşă§ă (ă¨ăăăä˝ăŞăéć˘çťă§ă) 大ä¸ĺ¤Ťă§ăăăä˝ă迡ăăă¨ăăăă°ăŠăăä˝ă§ăç¸čŤăăŚä¸ăăăžăăĺ°ăăă¤ä˝ăŁăŚčĄăă°čŻăăŽă§ăăăăăŻăĺżăăăŚăŞăăŞăéŁăăăă¨ă飽ăăŚăăžăŁăă¨ăă§ăăă°ăăăŽć¨ăçĽăăé ăăă°ĺš¸ăă§ăă
@akinomyoga ć§ă
é
ăăŚăăŚćŹĺ˝ăŤçłă訳ăŞăă§ăăăăĺ
¨çśé§çŽăăă§ăăă¨ăăăăäťĺşăăăăŽăä¸ăăžăă

č¨ă訳ă§ă:
ç§ă ble.sh (çšăŤ vim mode) ăŽçšĺž´ă§ăăăĺä˝é˘¨ćŻăŤĺ
Ľăăăă¨čăăŚăăăŽăŻ
ci"ăŞăŠ (äť shell ㎠vi/vim mode ăŤăŞă)^o ăŞăŠćŁç˘şăŞ vi/Vim ăŽć¨ĄĺŁăŞăŠă§ăăăăăăăĺ ¨ăŚăĺ ĽăăăŽăŻăăžăăŤĺéˇă ă¨ćăăăžăăăăăăŽĺä˝ăčŞçśăŤčĄăăłăăłăăŠă¤ăłăŽçśćłč¨ĺŽăćăäťăăŞăăŽă§ăăăăťăŠćéăăăăŁăŚăăžăă
@cmplstofB ăăž
ăăăă¨ăăăăăžă! ăăăăŚăăžăŁăăăă§ăăżăžăăăç´ ć´ăăăăăŽăŤäťä¸ăăŁăŚăăă§ăŻăăăžăăăăčŞĺă§ä˝ăŁăŚăăă¨č˛ă ă¨ĺéĄçšăŽăăăŞăăŽăŻčŚăăŚăăăăŽă§ăăăĺăăčŚăă¨ĺ¤§ăăăă¨ă§ăŻăŞăăă¨ăĺ¤ăăăŽă§ăă
ĺăć˘ăăăăăžč˛źăŁăŚăăă ăă GIF ăŽĺ 厚ă§ĺĺă¤ăłăăŻăăŻăăăžăăä¸çšă ă注ćăă¤ăăŚăăžăŁăŚçłă訳ăŞăăŽă§ăăăćé ăŞĺ¤§ăăăŽçťĺă§ćĺă大ăăăŤăăăăŽă§ă獯ćŤăŽĺć°ă 60 ă 50 ăăăăŤć¸ăăăŚ(čĄć°ăăăăŤĺżăăŚć¸ăăăŚ) ĺä¸ăŽćä˝ă§ GIF ĺçťăä˝ăŁăŚăăă ăăă¨ăŻĺŻč˝ă§ăăăăăăćć°ăăăăăăŚăăżăžăăăćéăŽăăă¨ăăŤä˝ăŁăŚé ăăă°ĺš¸ăă§ăăăžăă塎ăćżăăŻăă¤ă§ăä˝ĺşŚă§ăćżăăžăăŽă§ăăčŞčşŤă§ćşčśłăŞăăăŚăăŞăĺ ´ĺă§ăĺăć˘ăăă¨ăăăă¨ă§ć°čť˝ăŤä˝ăŁăŚé ăăă°ĺš¸ăă§ăă
ăŞăŠă§ăăăăăăăĺ ¨ăŚăĺ ĽăăăŽăŻăăžăăŤĺéˇă ă¨ćăăăžăăăăăăŽĺä˝ăčŞçśăŤčĄăăłăăłăăŠă¤ăłăŽçśćłč¨ĺŽăćăäťăăŞăăŽă§ăăăăťăŠćéăăăăŁăŚăăžăă
č˛ă
ă¨čăăŚăă ăăŁăŚă¨ăŚăăăăăăăă¨ă§ăăăăă§ăăăăGIF ăćä˝ćŻăŤĺăăă¨ăăčăăŻăăăă§ăăăä¸ă¤ăŽ GIF ăŤăžă¨ăăăŽăŻéŁăăăă§ăăăä˝ăăä¸éŁăŽčŞçśăŞćľăăä˝ăŁăŚăćăă (ĺĺšăŞăŠă§č§ŁčŞŹăăŞăăă°) é˛čڧč
ăŤäźăăăŽăŻéŁăăăă§ăăăŞăŽă§ăč˛ă
ăŽćŠč˝ăç´šäťăăŚăăă ăăăŽă§ăăă°ăĺćä˝ăŤă¤ăăŚăŽçăăăŽăĺšžă¤ăä˝ăŁăŚé ăăŚăčŚăăă¨ăăŤĺçťĺăŽăżă¤ăăŤă誏ćă¨ăăŚćŠč˝ĺ (ăăăšăăŞăă¸ă§ăŻă ci" ă surround.vim ăŞăŠ) ăăăăăäťč¨ăăćšă確ĺŽă§ĺŽŁäźăŤăăŞăăăŞă¨ćăăžăă
ăă¨ăăăżăžăăâŚäťăžă§ä˝żç¨çŽçăć¸ăĺżăăŚăăăŽă§ăăăçťĺ㯠README.md ă Wiki ăŤä˝żăăăŚăăă ăăăă¨čăăŚăăăžăăăžăăăăĺŽăăăă° Twitter ăŞăŠă§ ble.sh ăŽç´šäťăŽăăăŤä˝żăăăŚé ăăă°ă¨ăčăăŚăăăžăăăăżăžăăăăăăŽçšăćšăăŚă確čŞăăă ăăžăă (ăă¨ăăă¨ăŻĺĽăŤăçťĺă使ăă¨ăăăŽé˝ĺşŚăçťĺă @cmplstofB ăăăŤä˝ăŁăŚé ăăć¨ăć¸ăăŚăăăăă§ăăăă)ă
äşč§Łăăăăžăăăĺĺ˛ă¨ăăăŽăŻćăäťăăžăăă§ăăăăăăăăă¨ćăăžăă
ć ă č¨ăăŽăç杸ăăžăăă¨ăŻćăăžăăăĺä˝é˘¨ćŻăăčŞä˝ăŻ WTFPL ăŤăăă¤ăă [1] ă§ăăŽă§ă @akinomyoga ć§ăŽăé˝ĺăŽăăăăăŤč¨ăăŁăŚăă ăăăäžăă°ăăĺ ¨ăăŽĺżĺă§ăä˝ă§ăăăă§ăă
[1] ăăżăžăăăç§ăăăĄăă¨çĽăăŞăăŽăćŞăăŽă§ăăăăăăăŁăĺçťăŤĺŠç¨ăă荸ă
ăŽăăźăŤăăăŠăłăăăŚăźăăŁăŞăăŁăŽčä˝ć¨ŠăŻăăŽĺçťčŞä˝ăŤĺ˝ąéżăăăŽă§ăăăăăä¸ĺżăäžăŽĺçťăŤĺŠç¨ăăä¸éŁ: ble.sh (BSD), Bash (GPL), screenkey (GPL), FFmpeg (LGPL; WebM 㨠JPEGPNG ăŤé˘ăăŚăŽăżĺŠç¨ămp4 ççľçąăă), GraphicsMagick (MIT; JPEGPNG 㨠GIF ăŤé˘ăăŚăŽăżĺŠç¨ăăăŽäťĺç¨çťĺ形ĺźăŤäžĺăă), VL ă´ăˇă㯠(ăăŠăłăĺśä˝ăçŽçă¨ăăŞăĺŠç¨ăŤăŻĺśç´ăŞă), Xfce4 Terminal (GPL) ăŽĺ°ăăéăăăăŠă¤ă¨ăżăŞăťăŞăźăăłă˝ăźăšăŞăŽă§çšăŤçćăăšăăă¨ăŻăŞăă¨ăŻćăŁăŚăăžăăăăăăăăăäžăă° GPL ăŽă˝ăăăŚă§ă˘ăĺŠç¨ăăĺçťă GPL ăŤăŞăăŽăŞăăWTFPL ăĺăćśăăŞăăă°ăăăŞăăŽă§ă
ä˝ćč 襨示ăŤă¤ăăŚ
ć ă č¨ăăŽăç杸ăăžăăă¨ăŻćăăžăăă
ăăăć示ăăŚăăă ăăćšăćąăăăăăŽăŻäşĺŽă§ăăŽă§ăć ă äť°ăŁăŚăăă ăăăťăăăăă¨ćăăžăă
[1] ăăżăžăăăćăăŚăăă ăăăăŽă§ăăă
ăăăăă°ăç§ăăăĺăăăžăăâŚăäžăă° GPL ăŽĺ ´ĺăŤăŻăăăŽă˝ăăăŚă§ă˘ă使ç¨ăăŚä˝ćăăăĺśä˝çŠăŽé ĺ¸ăťä˝żç¨ăŤăŻĺśéăăŞăă¨ăăăă¨ăć示ăăăŚăăžăăăäťăŽăŠă¤ăťăłăšăŤé˘ăăŚăŻć ă ăăŽăăăŤčż°ăšăŚăăăăŠăăăĺăăăžăăăăăăăăăă°ăŠă ăŽĺşĺăŤĺŻžăăŚć¨ŠĺŠă丝埾ăă ăă¨ćŽăŠä˝ăŤă使ăăŞăăŞăŁăŚăăžăăŽă§ăć ă 丝埾ăăŚăăŞăăă°ăžăĺŠç¨ăăŚčŻăă¨çč§ŁéăăŚăăăŽă§ăŻăŞăă§ăăăăăăăŠăłăă ăăŻăăăŽăăśă¤ăłčŞä˝ăŤćĺłăăăăŽă§ă˝ăăăŚă§ă˘ăŽăŠă¤ăťăłăšă¨ăŻăžăć§ć źăç°ăŞăă¨ăŻćăăžăă
čż˝č¨
ăăăăăăăäžăă° GPL ăŽă˝ăăăŚă§ă˘ăĺŠç¨ăăĺçťă GPL ăŤăŞăăŽăŞăă
ăăăŻăŞăăŽă§ĺŽĺżăăŚčŻăă§ăăăăŽčžşăă§ăă:
ĺ ă GPL 㯠ĺŽčĄĺŻč˝ăŞăłăźăăŽĺä˝ă俎ćŁăăăžă¨ăăŞć掾ă確äżăă ăăăŽăăŽăŞăŽă§ăăă°ăŠă 䝼ĺ¤ăŽăăŽăŤăŻéŠç¨ăăăŞă (ăăŤăă) ă¨čăăŚčŻăă§ăă
@cmplstofB ć§
ăăăă§ăăăăăăéŁăăčăăŚăăă ăăŞăăŚă大ä¸ĺ¤Ťă§ăăăé˛ćăăŞăăŚă大ä¸ĺ¤ŤăŞăŽă§ăć°čť˝ăŤčżćłăčăăăŚé ăăă°ĺš¸ăă§ă (éŁăăăă§ăăă°ăăŻăéăăŚé ăă¨ăăăă¨ă§ă大ä¸ĺ¤ŤăŞăŽă§ăăăăăŽéăŻăä¸ĺ ąé ăăă°ĺš¸ăă§ă)ă
3aa7fa6697a46745b0c8fe5e4d0a82a84fc3a652...7d365d50eeee80985fab02e909552562715519fb ć´ć°
ć°ćŠč˝
u <C-r> U (#D0644 #D0648); emacs #D0649; #D0662f1 ă§ command-help ĺźăłĺşăC-a C-x ĺŻžĺż (nmap #D0650, xmap #D0661)#D0655 (gq, gw #D0652; ! #D0653; g@ #D0654)#D0656"[0-9%:-] #D0666 #D0668, :reg #D0665#D0672#D0646#D0683safe keymapbleopt emoji_width=2 #D0645PATH ăŤĺŻžăă寞ç #D0651ĺä˝äżŽćŁ
<paste>): ĺźć°ăçĄčŚăăăăăŤĺ¤ć´/ ? n N): ć¤ç´˘ăŽä¸č´ăŽäťćšă vim ă¨ĺć§ăŽăăŽăŤĺ¤ć´ #D0658g~? ă§ć¤ç´˘ăăŚä¸č´ăăçŻĺ˛ăžă§ĺ¤§ćĺăťĺ°ćĺăĺăćżăăăăăŤĺ¤ć´ #D0659+ _ g_ ăŞăŠăĺźăłĺşăăă¨ăăŽćŻăčăă vim ă¨ĺć§ăŽăăŽăŤĺ¤ć´ #D0663[ia]['"] ㎠xmap ă§ăŽćŁăăćŻăčă #D0670Y ă§čĄé ăŤĺăăŞăăăăŤĺ¤ć´ #D0673#D0677ble.sh ăăźăćéăŽćšĺ #D0675, #D0682, (é
ĺťśčŞčžź #D0678 #D0679 #D0680, čŁă§ĺąĽć´čŞčžź #D0681)ăă°äżŽćŁ
cw ă y? ăĺăăŞăăŞăŁăŚăăăă°ăŽäżŽćŁ#D0667 (ăăšăčż˝ĺ #D0669)#D0674#D0664#D0660#D0676#D0657ćŞĺŻžĺż
=cs ds ăŽă¤ăłăăłăxargs, sudo ăŞăŠ)@cmplstofB ć§ăĺšžă¤ă寞ĺżăĺťśćăăŚăăăăŽăŤĺŻžĺżăăžăăă
ăććłçăŤä¸ĺŽĺ
¨ăŞĺ ´ĺ RET ăžă㯠C-m ă§ćščĄăćżĺ
Ľăăăĺä˝ăĺŽčŁ
ăăžăă #D0684 029704c6a42ddf6dbcb06f6714d60a293257278a
俎ćŁăăžăă #D0687 e39977152bc2c4d63e5ff79e6f7e4a99b76c8721
ăăăŻĺčŞçč˛ăŽć çľăżăŽć šćŹçăŞĺéĄăŤăă寞ĺżăéŁăăă¨ăăăăăŞăă¨ăă誏ćăăžăăăăäťĺ調ăšăŚăżăćăĺç´ăŞăă°ă ăŁăăŽă§äżŽćŁăăžăă (ć çľăżăŽĺéĄăŻäžçśă¨ăăŚĺĺ¨ăăŚăăžăăăăăŽćŻăčăă¨ăŻé˘äżăŽăŞăăăŽă§ăă)ă
@cmplstofB ć§
ćŞă ćŽăŁăŚăăăăŽăĺšžă¤ăăăăžăăăĺăć˘ăăăăă§ support-vi-mode ăăŠăłăăăăźă¸ăăžăăć§ă
ăŞăăšăăŤéˇăăăäťăĺăé ăăžăăŚăăžăć§ă
ăŞććĄăăăŚé ăăžăăŚăćŹĺ˝ăŤăăăăăćăŁăŚăăăžăăäťĺžăăä˝ăăăă°ć°ćĽ˝ăŤ Issue/PR ăçŤăŚăŚăăă ăă Twitter ă§čŠąăăăăŚé ăăă°ĺš¸ăăŤćăăžăăćŽăŁăŚăăé
çŽăŤă¤ăăŚăŻăäťĺžć°ăĺăăćăŤĺŽčŁ
ăăăŚé ăäşĺŽă§ăă
Commit ID: 9e68058
Version of GNU bash: 4.4.12
OS: Debian GNU/Linux 9.5 x86_64
ăăă@akinomyogać§ĺ´ă§ĺçžăăŞăĺ ´ĺďźç§ăŽç°ĺ˘ăŤĺéĄăăăă¨ăăăă¨ă§ăăăăăăăťăŠč¤éăŞč¨ĺŽăŻăăŚăăŞăăŽă§ďźăăĄăă§ĺçžăăŞăďźă¨ăăăă¨ăŻăăžăăŞăă¨ćăăžăăăăăďźăăăĺçžăăŞăĺ ´ĺăŻďźé˘ĺăćăăžăăďźăĄăăŁă¨č¨ĺŽăŞăŠă確čŞăăŚăăă ăăă¨ăăăăăă§ăăç§ăŽč¨ĺŽăăĄă¤ăŤăŻăăăŤăăăžăă
e.g. cat ~/@
âăăă§Tabâžăćźä¸ăăă¨ďźçŤŻćŤăă¨çľäşăăŚăăžăăďźč¨ť: @ăŻăŤăźă˝ăŤăŽä˝ç˝Žďź
ble.shăŽč¨ĺŽăăĄă¤ăŤĺ
ă§ďźble-color-setfaceăç¨ăăŚć§ć埡調ăŽčŁ
飞ăč¨ĺŽăăŚăăďźăăăŻăă¨ăă¨ăŽbleshrcăŽč¨ĺŽăăťăźä¸¸ĺăăăŚăăçşć§ćčŞä˝ăŤăŻééăăŻăŞăă¨ćăăžăďźăŽă§ăăďźĺć ăăăŞăăă ăăĺăăăĄă¤ăŤăŤăăăăăŽäťăŽč¨ĺŽăŻćĺšăŤăŞăŁăŚăăăŽă§ďźăăĄă¤ăŤčŞčşŤăŻčŞăżčžźăžăble.shăč§ŁéăăŚăăçă
ăžăďźć°čŚĺŻžčŠąăˇă§ăŤăçŤăĄä¸ăăéďźćĺăŽĺ
ĽĺćăŤďź
ble.sh: the specified face `XXX' is not defined.
ă¨ăăčŚĺďźăăăăŻă¨ăŠăźďźčĄ¨ç¤şăĺşĺăăăă
ăăżăžăăăäťăŻĺ°ăĺżăăăŽă§ĺŻžĺżă§ăăŞăă§ăă (ăăżăžăăă寞ĺżăŻäťćĽăŽĺ¤ä¸ăććĽăŽĺĺžăŤăŞăăă¨ćăăžă)ăĺč ăŤă¤ăăŚăŻĺçžă§ăăŚăăžăăăFedora ă§ăă 4.4.12, 4.4.19, 4.4.23 ăŽä˝ăă§ăĺçžă§ăăžăăă§ăăă
bashrc čŞăżčžźăżç´ĺ) ăŽăăąăźăŤ (LANG ç°ĺ˘ĺ¤ć°) ă¨ăinputrc ăŤăăă convert-meta ăŽč¨ĺŽă確čŞăăŚăăă ăăžăăăăˇă§ăŤčľˇĺćăŽăăąăźăŤă ja_JP.UTF-8 ă¨ăăŚăăžă convert-meta off ăŤăăćăŤăĺçžăăăăŠăăăăăĺŻč˝ă§ăăă°ç˘şăăăŚăăă ăăăćăăžăăĺžč ăŤă¤ăăŚăŻĺéĄăăăăăă§ăăă¨ăăăă¨ăĺăăăžăăăŽă§ăĺžă§äżŽćŁăăăăžăă
@akinomyoga ć§
ăĺżăăä¸ăăăăăăŞăă§ăă
ăĄăăŁă¨ăăĺăăăŞăçść
ă§ăăbashăĺ
Ľăĺă§čľˇĺăăă¨ďź$ bash --rcfile ~/.profileďźďźçŹŹäşĺźć°ăé常éăčŁĺŽă§ăăžăăăă¤ăžăďźĺéĄăŞăă¨ăăăă¨ă§ăă
ăăźă ăăŁăŹăŻăăŞăŤăŻBashăčŞăżčžźăżăăăăĄă¤ăŤă¨ăăŚăŻ~/.profileăăăŞăăŽă§ďźbashăŻä¸č¨ăŽăăăŤčľˇĺăăŚăăăŻăă§ăăăăźăăăăăŻćăăŤăăăžç°ăă§ăăăâŚâŚăăžăďźďźĺ°ăŞăă¨ăďźcd(1)ăłăăłăăŤé˘ăăŚăŻĺźć°ăŽčŁĺŽăĺŻč˝ă§ăăä¸ćč°ăăăžăăăĄăăŁă¨äťŽćłç°ĺ˘ăăŞăŤăă§ç˛žćťăăŚăżăžăăĺ˝é˘ăŻďźčľˇĺĺžăăä¸ĺşŚbashăĺźăłĺşăăă¨ă§ĺŻžĺŚăăžăă
$LANGç°ĺ˘ĺ¤ć°ăăăłinputrcăŤăăăconvert-metaăŽč¨ĺŽăŻďźĺ
ă
ja_JP.UTF-8ďźoffă§ăăă
確čŞăăăă¨ăăăăăžă! ăăźăăä¸ćč°ă§ăăâŚăäťăŽç˘şčŞäşé ă§ă:
.bash_profile 㨠.bashrc ăŽăĺ
é ăă§ç°ĺ˘ĺ¤ć°ăĺşĺă㌠(env > file.tmp ăăă㯠export > file.tmp)ăćĺ㎠Bash ă¨ĺ
Ľăĺ㎠Bash ă§ diff ăĺăŁăŚčŚăŚăăă ăăŞăă§ăăăăăä˝ăćŞăăăăŞăăŽăăăŁăăă(ăťăăĽăŞăăŁăźăťăăŠă¤ăăˇăźçăŤ) 塎ăćŻăăŞăçŻĺ˛ă§ć
ĺ ąćäžé ăăă¨ĺš¸ăă§ăă(ĺ
ç¨ăŻ ă.bashrc čŞăżčžźăżç´ĺăă¨ć¸ăăžăăăăăżăźăăăŤăćĺăŤčľˇĺăăć㯠.bash_profile ă使ăăăăŽă§ăăĄăă§ăăă§ăăŻăăŞăăă°ăŞăăžăăă§ăăâŚă)enhance-complete ăăŠăłăăŽĺ
獯ă§ăĺć§ăŤĺçžăăă§ăăăăăäťăă ble-color-setface ăŽćšăŻç´ăăŚăăăă¨ćăăžăă
ăă¨ăä¸č¨ç˘şčŞäşé
ăŤć¸ăăžăă enhance-complete ăŽćšăŻ Makefile ăŤĺéĄăăăăžăăăŽă§ăäťć°ăă commit ăčż˝ĺ ăăžăăăăăĄăăŽćšă使ăŁăŚăăă ăăă¨ĺš¸ăă§ăă確čŞäşé
ăŤé˘ăăŚăŻĺ°ĺşăăŤăăŚé ăăŚć§ăăžăăăäşĺćłăŻćçľć掾ăŞăŽă§ćŞă 芌ăăŚăăă ăăŞăăŚĺéĄăăăžăă
ăă¨ăă㎠issue ăŻĺăć˘ăă vim mode ă¨ăăŚĺ ŹéăŤčłăŁăăă¨ăăžăăčŞăżčžźăżăéăăŞăŁăŚăăžăŁăăă¨ăăăć°ăăĺĺĽăŽ Issue ă¨ăăŚĺéĄçšăĺ ąĺăăŚăăă ăăă¨čŻăăăăăžăăăŠăăŠă Issue ăä˝ăŁăŚăăă ăăŚĺéĄăăăžăăăćăăŻăäťăžă§ăŽĺ˝˘ĺźăčŻăă¨ăăăă¨ă§ăăăăč˛ă ĺ ąĺăăć°ăă Issue ăä¸ă¤ä˝ăŁăŚăăă ăăŚăć§ăăžăăăă弽ăżă§ăé¸ăłăă ăăă°ăăă§ăăăă㎠Issue ăŻäťăŽć reopen ăăäşĺŽăŻăŞăăŽă§ăăăŽçšăŻăçćăă ăăăžăă
Re: ć§ć埡調ăŽč¨ĺŽăĺšăăŞăă
@akinomyoga ć§
856c85făŤăăăŚäżŽćŁăăăŚăăăŽă確čŞăăžăăăăăăă¨ăăăăăžăă
çžĺ¨ďźçŤŻćŤă¨ăăĽăŹăźăżă¨ăăŚXfce4 Terminal (v0.8.3)ă使ăŁăŚăăžăă
ăžăďźrxvt-unicode 256color (v9.22)ă§ăŻĺçžăăžăăăăă䝼ĺ¤ăŽçŤŻćŤă¨ăăĽăŹăźăżďźäžăă°GNOME TerminalăXtermďźăŤă¤ăăŚăŻďźXfce4 TerminalălibvteăŤäžĺăă獯ćŤă¨ăăĽăŹăźăżăŽä¸ç¨Žă§ăăăă¨ďźrxvt-unicodeăXtermçłťĺă§ăăăă¨ăăďźĺż
čŚć§ăŻä˝ăă¨ĺćăŤĺ¤ćăăžăăă辡ĺăăŚĺ˝čОăăćä˝ăčĄăă ăăŽç˘şčŞăŞăŽă§ďźăăăăăă§čśłăăŞăăă°ăžăčż˝ĺ ăăŚĺŽé¨ăăăă¨ăŻă§ăăžăă
ă¨ăăăăďźdiffăăçľćăăťăźăăŽăžăžčźăăžăăčŚčžăă¨ćăăžăďźăăăžăăă
diffçľćďź
$diff /tmp/{1,2}.envďź
1a2,3
> LD_LIBRARY_PATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi/intel64/lib:/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi/mic/lib:/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64/gcc4.7:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64/gcc4.7:/opt/intel/debugger_2018/iga/lib:/opt/intel/debugger_2018/libipt/intel64/lib:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/../tbb/lib/intel64_lin/gcc4.4
> XDG_CONFIG_HOME=/home/ry/etc
3c5,6
< LANG=ja_JP.utf8
---
> LANG=ja_JP.UTF-8
> LESS=--no-init --force --quit-if-one-screen --hilite-search --ignore-case --LONG-PROMPT --line-numbers --QUIET --raw-control-chars --tilde
4a8,10
> IPPROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp
> EDITOR=vim
> GDB_CROSS=/opt/intel/debugger_2018/gdb/intel64/bin/gdb-ia
5a12,13
> GDBSERVER_MIC=/opt/intel/debugger_2018/gdb/targets/intel64/x200/bin/gdbserver
> MPM_LAUNCHER=/opt/intel/debugger_2018/mpm/mic/bin/start_mpm.sh
7a16,18
> CR=
> INTEL_PYTHONHOME=/opt/intel/debugger_2018/python/intel64/
> CLASSPATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi/intel64/lib/mpi.jar:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/lib/daal.jar
12a24
> PAGER=less
18a31
> CPATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp/include:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/include:/opt/intel/compilers_and_libraries_2018.3.222/linux/pstl/include:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/include:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/include:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/include
20a34,35
> VIMINIT=let $MYVIMRC = expand($XDG_CONFIG_HOME) . "/vim/init.vim" | source $MYVIMRC
> NLSPATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64/locale/%l_%t/%N:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin/locale/%l_%t/%N:/opt/intel/debugger_2018/gdb/intel64/share/locale/%l_%t/%N
21a37,39
> LIBRARY_PATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64/gcc4.7:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64/gcc4.7:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/lib/intel64_lin:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/../tbb/lib/intel64_lin/gcc4.4
> DAALROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/daal
> INTEL_LICENSE_FILE=/opt/intel/compilers_and_libraries_2018.3.222/linux/licenses:/opt/intel/licenses:/home/ry/intel/licenses
23a42
> VISUAL=vim
29a49
> LS_OPTIONS=--color=always --group-directories-first --indicator-style=classify --show-control-chars
33a54
> MANPATH=/opt/intel/man/common:/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi/man:/opt/intel/documentation_2018/ja/debugger//gdb-ia/man/:/opt/intel/documentation_2018/ja/debugger//gdb-igfx/man/:/usr/local/man:/usr/local/share/man:/usr/share/man:
34a56
> MANOPT=--default --all --wildcard
35a58
> XDG_CACHE_HOME=/home/ry/var/cache
39a63,65
> MKLROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl
> XDG_DATA_HOME=/home/ry/share
> PSTLROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/pstl
42c68,72
< PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
---
> PATH=/home/ry/.cargo/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/bin/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi/intel64/bin:/home/ry/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
> TBBROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb
> PKG_CONFIG_PATH=/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/bin/pkgconfig
> INFOPATH=/opt/intel/documentation_2018/ja/debugger//gdb-ia/info/:/opt/intel/documentation_2018/ja/debugger//gdb-igfx/info/
> I_MPI_ROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/mpi
43a74
> LF=
éĺťăŽçďźĺ°ăŞăă¨ă18cd661ďźă§ăŻĺéĄăŻăŞăăŁăă¨ăăăă¨ăäźăăŚăăăžăă
ăăăăŞăăďźĺŽăč¨ăă¨ďźčŁĺŽăăă¨çŤŻćŤăč˝ăĄăă¨ăăĺéĄăŻďźéĺťăŽçă§ăďźăăĺ°ăçšćŽăŞćĄäťśă§çşçăăŚăăžăăďźăăăžăăďźăăăŻćĄäťśăçšćŽăŞăăďźä¸ä˝ĺ
¨ä˝ăŠăŽçă§çşçăăĺéĄăŞăŽăăťăăăăŻĺ§ăăăĺĺ¨ăăŚăăä¸ĺ
ˇĺăŞăŽăä¸ćă§ăďźăăăăŻďźäťĽä¸ăŽăăăŞăłăăłăăŠă¤ăłă§
$ find . | xargs echo @
@ăŽä˝ç˝Žă§*čŁĺŽăăźăćźä¸ăăă¨č˝ăĄăă¨ăăăăŽă§ăăĺ°ăŞăă¨ă18cd661ďźăăăćăăăă䝼ĺăăçşçăăŚăăžăăă
enhance-completeăăŠăłăç¸ĺ¤ăăă§ăăâŚâŚăăăŻăä¸ćăŞč˝ăĄćšă§ĺźˇĺśçľäşăăŚăăžăăžăă
ďźĺăčĄăŁăăăŠăłăĺăćżăăŽćšćłă誤ăŁăŚăăăăăăăžăăăŽă§ďźĺżľăŽăă: ăŻăźăŻăăŞăźăŽćä¸éăŤăŚ$ git checkout enhance-complete && make installăĺŽčĄăăžăăďź
* 䝼ĺž@ăŻçšĺĽăŤćăăŞăéăăŤăźă˝ăŤăŽä˝ç˝Žă示ăăăŽă¨ăăžăăăăčŚćăăťĺ¤ĺĽăăăă襨č¨ćłăŞăŠăăăžăăăćăăŚăăă ăăă¨ĺŠăăăžă
çłă訳ăŞăă§ăă
ć°ăăĺĺĽăŽ Issue ă¨ăăŚĺéĄçšăĺ ąĺăăŚăăă ăăă¨čŻăăăăăžă
ăčŞăżéŁă°ăăŚăăăžăăăĺĽissueăŤç§ťčĄăăžăăă¤ăăžăăŚăŻďźăŠăăăŁăĺ 厚ăŽissueăçŤăŚăă°ăăăăă§ăăăăďźčłŞĺă°ăăă§ăăâŚâŚďźăăĺĺ辡ĺăťăăˇă§ăłăŤăăăŚĺźć°ăŽčŁĺŽă夹ćăăăăŞăŠă¨ăăŁăéĄĺăăăă§ăăăăă
ăăăă¨ăăăăăžăăć§ĺăčŚăă¨çŤŻćŤăč˝ăĄăŚăăă¨ăă訳ă§ăŻăŞăăăă§ăă⌠(確訟ăŻăŞăă§ăă)ă
ĺĽissueăŤç§ťčĄăăžăăă¤ăăžăăŚăŻďźăŠăăăŁăĺ 厚ăŽissueăçŤăŚăă°ăăăăă§ăăăăďźčłŞĺă°ăăă§ăăâŚâŚďźăăĺĺ辡ĺăťăăˇă§ăłăŤăăăŚĺźć°ăŽčŁĺŽă夹ćăăăăŞăŠă¨ăăŁăéĄĺăăăă§ăăăăă
ăăăă¨ăăăăăžăăăăăŞăă°ä˝ăŁăŚăăă ăăă¨ăŤăăžăăăăä¸ă§ăłăĄăłăăăă ăăĺ 厚ăŤĺŻžăăčżçăŻć°ăă Issue ăŤć¸ăăăŚăăă ăăžăăăĺ 厚ăťéĄĺăŤă¤ăăŚăŻć°ăŤăŞăăăŞăăŚă大ä¸ĺ¤Ťă§ăă