ããã¯ãã¹ãŠã ã¿ã°ããŒãç§ã®ããã«æ©èœããªããªã£ããšãã«å§ãŸããŸãã ã ãã©ã°ã€ã³ããšã©ãŒã§ã¯ã©ãã·ã¥ããŸããããããããçŸåšã®Exuberant Ctagsã®ããŒãžã§ã³ã¯Exuberantã§ã¯ãããŸããã ãœãŒã¹ãå°ã調ã¹ãŠã¿ããšãæåŸã®å€éšã³ãã³ãããšã©ãŒã§çµäºããŠããããšãããããŸãããvïŒshell_error㯠-1ãè¿ããŸãã ã ããã«æãäžããã«fzfãã€ã³ã¹ããŒã«ããŸãã ã Fzfã¯ctrlpãšåæ§ã«ããã¡ã€ã«ãã¿ã°ããããã¡ãŒãªã©ã§ãã¡ãžãŒæ€çŽ¢ãå®è¡ã§ããŸãããåŸè
ãšã¯ç°ãªãããã€ãã¹ãªãã§ã¯ãªãã¯ããã«é«éã«åäœããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ç«¯æ«ã§çŽæ¥åäœããæ¯åå
¥åã³ãã³ãã®å±¥æŽãäžæžãããŸãã ããã¯ãããšãã°ãç®çã®ã¿ã°ãæ€çŽ¢ãããšãã«ãã¡ã€ã³ãããã¡ãŒã®å³åŽã«ãããããã¡ãŒïŒäžéšã®ã¹ã¯ãªãŒã³ãã£ã¹ãã§å€æããŠã neovim ïŒã«æ€çŽ¢çµæã衚瀺ã§ããªãããšãæå³ããŸãã åŽé«ãªãã®ãšã¯ç°ãªãã fzfã¯ãã¡ã€ã«åã«ãã以äžã®éã¿ãä»ããŸããããã®ãããç§ã¯æåŸ
ããŠããçµæããããã«è¡šç€ºãããªãããšããããããŸããã ãã®äžãé
è²ã調æŽããå®å
šãªèªç±ã®æ¬ åŠã¯ãäžè¬ã«å¹³åçãªãŠãŒã¶ãŒã«ãšã£ãŠã¯ããŸãéèŠã§ã¯ãããŸããããç§ã«ãšã£ãŠã¯çްéšãžã®æ³šæãå¢ããŠããŸãã èªç±ãšã¯ãå°ãªããšããéåžžã®ïŒéåžžã®ïŒããã¹ããšã¯ãšãªæååã®è²ã®åºå¥ãæå³ããŸãã
ããããã¹ãŠã®ããšãããæšæºã®ãã£ã¬ã¯ããªãã¥ãŒã¢ãŒnetrwã«äŒŒãç¬èªã®ãã©ã°ã€ã³ãäœæããå¿
èŠããããŸãã ã ãã®çµéšã誰ãã«åœ¹ç«ã€ãããããªããšä¿¡ããŠãç§ãééããåé¡ãšãããã解決ããæ¹æ³ã説æããŸãã
Vimã¹ã¯ãªããèšèª
ãŸããvimã¹ã¯ãªããã§æåã®äžæ©ãèžã¿åºããŠãã人ã®ããã«çããã¢ãŒãæäŸããããšæããŸãã 倿°ã«ã¯æ¥é èŸããããŸã;ããªãã¯ãã§ã«ãããã®ããã€ããèŠãæžããŠããŸãã éåžžããã©ã°ã€ã³ã¯ã gïŒãã¬ãã£ãã¯ã¹ãæã€ã°ããŒãã«å€æ°ã䜿çšããŠæ§æãããŸãã ãã©ã°ã€ã³ãäœæãããšãã¯ã sïŒãã¬ãã£ãã¯ã¹ã䜿çšããããšãé©åã§ããããã«ããã倿°ãã¹ã¯ãªããå
ã§ã®ã¿äœ¿çšå¯èœã«ãªããŸãã 颿°ã®åŒæ°ã«ã¢ã¯ã»ã¹ããã«ã¯ã aïŒãã¬ãã£ãã¯ã¹ã䜿çšããŸãã æ¥é èŸã®ãªã倿°ã¯ã宣èšããã颿°ã«å¯ŸããŠããŒã«ã«ã§ãã ãã¬ãã£ãã¯ã¹ã®å®å
šãªãªã¹ãã¯ã次ã®ã³ãã³ãã§è¡šç€ºã§ããŸãïŒhelp internal-variables ã
ãããã¡ã管çããããã®2ã€ã®éåžžã«åçŽãªé¢æ°ã getlineãšsetlineããããŸãã 圌ãã®å©ããåããŠãæ€çŽ¢çµæããããã¡ã«è²Œãä»ããããã¯ãšãªå€ãååŸã§ããŸãã ååããå€ãã®å Žåãããäœãããã®ãã¯ã£ããããŠããã®ã§ãç§ã¯å颿°ã®èª¬æã«ã¯ãã ãããªãã§ãããã ãã®èšäºã®ã»ãŒãã¹ãŠã®ããŒã¯ãŒãã¯ããã¥ã¡ã³ãã«èšèŒãããŠããŸãããããã£ãŠã ïŒhelp getlineãŸãã¯ïŒhelp setlineã§ãããå
šäœåã«ã€ããŠã¯ã ã»ã¯ã·ã§ã³ããšã«ã°ã«ãŒãåããããã¹ãŠã®é¢æ°ã®ãªã¹ããå«ãhelp function-listãåç
§ããããšããå§ãããŸãã
ã€ãã³ã
Vimã¯ããã«äœ¿çšã§ããå€ãã®ã€ãã³ããæäŸããŸãããç¬èªã®ãã©ã°ã€ã³ãäœæããå Žåã¯ãç¬èªã®ã€ãã³ããäœæããå¿
èŠããããŸãã 幞ããªããšã«ãããã¯éåžžã«ç°¡åã«è¡ãããŸãã
ãªãŒãããŒã
ãã©ã°ã€ã³ã®ãã¹ãŠã®é¢æ°ã«ã finderïŒãã¬ãã£ãã¯ã¹ãèšå®ããŸãã ããã¯çµã¿èŸŒã¿ã®vim autoloadã¡ã«ããºã ã§ãåãååã®ç®çã®ãã¡ã€ã«ã®runtimepathãæ€çŽ¢ããŸãã finder颿°ã®åŒã³åºãã¯runtimepath / finder.vimãã¡ã€ã«ã«ããã finderãã¡ã€ã«ã®index颿°ã¯runtimepath / finder / files.vimãã¡ã€ã«ã«ãããŸãã æ¬¡ã«ããã©ã°ã€ã³ãruntimepathã«è¿œå ããå¿
èŠããããŸãã
set runtimepath+=path/to/plugin
ãã ãã vim-plugãªã©ããããã®ç®çã«ã¯ãã©ã°ã€ã³ãããŒãžã£ãŒã䜿çšããããšããå§ãããŸãã
è€åããŒã
å€ãã®å ŽåãããŒã ãç°ãªãéšåããçµåããããã倿°ã®å€ãæ¿å
¥ããå¿
èŠãããå Žåã«çºçããŸãã ãããã®ç®çã®ããã«ãvimã«ã¯å®è¡ã³ãã³ãããããããã¯å€ãã®å Žåã printf颿°ãšãšãã«äœ¿çšãããšäŸ¿å©ã§ãã
execute printf('syntax match finderPrompt /^\%%%il.\{%i\}/', b:queryLine, len(b:prompt))
å§ããŸããã
ãããã£ãŠãå¿
èŠãªã®ã¯ã¯ãšãªæååãšæ€çŽ¢çµæã ãã§ãã å
¥å颿°ã¯vimã®ãŠãŒã¶ãŒå
¥åãæ
åœããŸãããç§ãç¥ãéããå
¥åè¡ãäžçªäžã«é
眮ããããšã¯ã§ããŸãããã¿ã°ã§æ€çŽ¢ããããšã¯ããã¡ã€ã«ã«è¡šç€ºãããŠããé åºã§ã¿ã°ã衚瀺ããæ¹ã䟿å©ãªã®ã§ãããã¯éåžžã«éèŠã§ãã ããã«ãæéãçµã€ã«ã€ããŠãnetrwã瀺ãåæ§ã®åžœåãäœãããšã«ããŸãã ã å
¥åè¡ã¯ãããã¡ã«å®è£
ããå¿
èŠããããããã§æåã®åé¡ãçºçããŸããã
ãªã¯ãšã¹ã
ãªã¯ãšã¹ãã®å€ãååŸããã«ã¯ãå
¥åãã£ãŒã«ããšããŒã«ãããã«çžå¯Ÿçãªãªãã»ãããé
眮ãããŠããè¡ãç¥ãã TextChangedIã€ãã³ãã®ãã³ãã©ãŒãèšå®ããå¿
èŠããããŸãã 以åã«ããã°ã©ãã³ã°ããããšããã人ã¯ããã®æ®µéã§è€éãªãã®ã¯äœããªãã¯ããªã®ã§ãã³ãŒãã¯çç¥ããŸãã ãã³ãã©ãŒã<buffer>屿§ã§ãã³ã°ã¢ããããå¿
èŠãããããšã远å ããŸãã
autocmd TextChangedI <buffer> call ...
ããã³ãã
ããŒã«ãããã¯ãŠãŒã¶ãŒå
¥åãšåãè¡ã«ãããããäœããã®æ¹æ³ã§ä¿®æ£ããå¿
èŠããããŸãã ãããã®ç®çã®ããã«ã<BS>ã<Del>ãªã©ã®ããŒã®åäœãæ
åœããããã¯ã¹ããŒã¹ãªãã·ã§ã³ã®å€ãã¯ãªã¢ããããšãã§ããŸãã ç¹ã«ãç§ã¯eolãšstartã«ã®ã¿èå³ããããŸããã Eolã¯è¡æ«èšå·ã®åé€ãèš±å¯ããããã«å¿ããŠæååã®ããŒãžãèš±å¯ããŸãããstartã¯æ¿å
¥ã¢ãŒãã®éå§åŸã«å
¥åãããããã¹ãã®ã¿ã®åé€ãèš±å¯ããŸãã ããã¯éåžžã«äŸ¿å©ã§ç°¡åã«å€æããŸãããããšãã°ããFiles>ããšããããã³ãããæ¿å
¥ããããã¹ããå
¥åãå§ãããšãããã¹ããåé€ããŠãããã³ããã¯ãã®ãŸãŸæ®ããŸããã 確ãã«ãç§ã¯1ã€ã®ç¹ãèæ
®ããŸããã§ãã-ãã®ãããªãã©ã°ã€ã³ã®æäœã®ããã«ãå€ãã®ããžãã¯ãå¿
èŠã§ãããéåžžã¢ãŒãã«è¡ãããšã¯äžè¬çãªç¿æ
£ã§ããã ã©ã®ãããã³ã°ã§ãæ°ãããã»ãã·ã§ã³ããç°¡åã«éå§ã§ãã以åã«å
¥åãããããã¹ãã¯åé€ãããªããªããŸããã ããšãã°ã<Esc>ãæŒãã ãã§ããã
inoremap <Cj> <Esc>:call ...
<BS>ã®ãããã³ã°ãäœæããããã¹ããæåã§åé€ããå¿
èŠããããŸããã
inoremap <buffer><BS> <Esc>:call finder#backspace()<CR>
ã«ãŒãœã«ã®å¥åŠãªã¡ãã€ããããã€ããããæéãçµã€ã«ã€ããŠã²ã©ãè¿·æã«ãªããŸããã é害ãã³ãã³ãã©ã€ã³ã¢ãŒããžã®ç§»è¡ã§ããããšã«æ°ã¥ããŸã§ã«é·ãæéãããããŸãããéåžžã¯ã ïŒãæŒããŠéå§ããŸãã ãã®ç¬éãããã¹ãã®äžã®ã«ãŒãœã«ãæ¶ããŸãã ã¡ãã€ã广ã¯åŒ·ããåŒã³åºããã颿°ã¯ãããéããã TextChangedIã€ãã³ãã§ãã³ãã©ãŒããã³ã°ããã詊ã¿ããããçŸåšã®ã«ãŒãœã«äœçœ®ã確èªããŸãããã«ãŒãœã«ãããŒã«ãããã«å±éºãªã»ã©è¿ã¥ããå Žåãå¿
èŠãªã®ã¯<BS>ãäœãããªãããã«ããããšã ãã§ããã æ®å¿µãªãããæã
1æåãåé€ãããŸãã ãã°ããããŠã解決çãèŠã€ãããŸãã-屿§<expr> ã
map {lhs} {rhs}
{rhs}ã¯æå¹ãªåŒïŒïŒhelp expression-syntaxïŒã§ããããã®çµæã¯ãããã¡ãŒã«æ¿å
¥ãããŸãã <BS>ã<Ch>ãªã©ã®ç¹æ®ããŒã¯äºéåŒçšç¬Šã§å²ã¿ã \ ïŒïŒhelp expr-quoteïŒæåã§ãšã¹ã±ãŒãããå¿
èŠããããŸãã
inoremap <expr><buffer><BS> finder#canGoLeft() ? "\<BS>" : "" inoremap <expr><buffer><Ch> finder#canGoLeft() ? "\<BS>" : "" inoremap <expr><buffer><Del> col(".") == col("$") ? "" : "\<Del>" inoremap <expr><buffer><Left> finder#canGoLeft() ? "\<Left>" : ""
åºå£
ãããã¡ãŒãçµäºããã«ã¯ã<Esc>ããã€ã³ãã§ããŸãã äžå¿«ãªç¬éã¯ãããã€ãã®ããŒã®çµã¿åããã<Esc>ãšåãæåã®ã·ãŒã±ã³ã¹ã§å§ãŸãããšã§ãã å
¥åã¢ãŒãã«å
¥ãã<Cv>ãæŒããŠããç¢å°ã®ãããããæŒããšã ^ [ããã¬ãã£ãã¯ã¹ãšããŠè¡šç€ºãããŸãã ããšãã°ãå·Šç¢å°ã®å Žåã端æ«ã¯^ [ODã vimã«éä¿¡ããŸãã ãããã£ãŠãç¢å°ãŸãã¯<S-Tab>ãæŒããšãvimã¯<Esc>ã«ãã£ãŠå²ãåœãŠãããã¢ã¯ã·ã§ã³ãå®è¡ããæ®ãã®æåãè§£éããããšããŸããå·Šç¢å°ã®å Žåãããã¯äžéšïŒOïŒã«ç©ºè¡ãæ¿å
¥ããåãæåã«å€§æåã®ãDããæ¿å
¥ããŸãè¡ã esckeysãªãã·ã§ã³ã¯ãã·ãŒã±ã³ã¹ãå
¥åã¢ãŒãã§<Esc>ã§å§ãŸãå Žåãã€ãŸã^ [ã§å§ãŸãå Žåãæ°ããæåãå°çããããšãæåŸ
ãããã©ããã瀺ããŸãã äœãå¿
èŠãªããã«èŠããŸããã<Esc>ã®åäœã倿Žããªãå Žåã«ã®ã¿æ©èœããŸãã
-ããã¯ããªãã®ãžã§ãŒã¯ã芪æãªãIDEãŠãŒã¶ãŒãããããŸããã
ããããäœããèŠéãããããããŸããããããŸããŸãªãªãœãŒã¹ã§ãã®ããŒã®åäœã倿Žããªãããšããå§ãããããšã¯ç¡é§ã§ã¯ãããŸããã <S-Tab>ãããã»ã©éèŠã§ãªãå Žåã¯ãç¢å°ããã€ã³ãããŠæ¬¡/åã®åºçŸãéžæãããšããã§ãããã ãããã£ãŠã<Esc>ã®ä»£ããã«ã InsertLeaveã€ãã³ãã䜿çšããŸãã ããã«ã¯æ°ããªèª²é¡ã䌎ããŸãã å
¥åã¢ãŒããçµäºããã«é¢æ°ãåŒã³åºãæ¹æ³ã¯ïŒ ããã¥ã¡ã³ããèªãã§ãããšãè峿·±ãç¹ã1ã€èŠã€ãããŸãããInsertLeaveã€ãã³ããçºçãããã«æ¿å
¥ã¢ãŒããçµäºãã<Ctrl-c>ã®çµã¿åããã§ããããããã³ã°ã«<Cc>ãååšããå Žåãããã¯æ©èœããã InsertLeaveããããã¢ããããŸãã ã€ã³ã¿ãŒãããããµãŒãã£ã³ããŠãããšãã«ãäžè¬çãªèŠè§£ã瀺ã解決çãèŠã€ãããŸããã
inoremap <BS> <Cr>=expr<CR>
ããã¥ã¡ã³ããããããã¯åŒã¬ãžã¹ã¿ã§ããããšãããããŸã ã åŒã®çµæããããã¡ã«æ¿å
¥ãããããšãé€ããŠãããã¯ãŸãã«ç§ãå¿
èŠãšãããã®ã§ãã å®éããã¹ãŠã®èº«äœã®åãã¯æ¿å
¥ã¢ãŒãã§çºçãããããããã¯ãã©ã°ã€ã³å
šäœãæ§ç¯ãããå Žæã§ãã å颿°ã§ç©ºã®æååãè¿ããªãããã«ïŒãããè¡ãããªãå Žåã颿°ã¯0ãè¿ããŸãïŒãç®çã®é¢æ°ãåŒã³åºãäžéäœã䜿çšããããšã«ããŸããã
function! finder#call(fn, ...) call call(a:fn, a:000) return "" endfunction
aïŒåå空éã¯é¢æ°ã®åŒæ°ãžã®ã¢ã¯ã»ã¹ãæ
åœãã aïŒ000倿°ã«ã¯ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã®ãªã¹ããå«ãŸããŸãã å
¥åã¢ãŒããçµäºããã«ã¢ããªã±ãŒã·ã§ã³ããžãã¯ãèšè¿°ã§ããããã«ãªã£ãããã backspaceãªãã·ã§ã³ã䜿çšã§ããŸãã ãã ããåŸã§åŠãã ããã«ããã®ãªãã·ã§ã³ã®å€ããªã»ãããããšdelimitMateãæã ããã®ããæ£åžžã«æ©èœããªããªãããããã®è©Šã¿ãäžæ¢ããããšã«ããŸããã
ããã¯ãšã³ã
ãã äœããããŸãããç§ãã¡ã¯ãã§ã«ããããã®ç¡é§ãªãã¯ã»ã«ãæã£ãŠããŸãã ãããã¡ã«å¯¿åœã远å ããŸãã vimã¹ã¯ãªãããé«éèšèªãè€éãªãã®ãæžãã®ãè¯ãèšèªãšåŒã¶ã®ã¯é£ããã®ã§ãDã§ããã¯ãšã³ããæžãããšã«ããŸããããã¡ãžãŒæ€çŽ¢ãå¿
èŠãªã®ã§ å®è£
ããã®ãé¢å å¿
èŠãããŸãããæ£ç¢ºãªçºçãèæ
®ããæ€çŽ¢ã§ãããœãŒã¹æååãšãŠãŒã¶ãŒã®ãªã¯ãšã¹ããæåããšã«æ¯èŒããããšã決å®ããŸãããããã¯æ£èŠè¡šçŸã䜿çšãããããã¯ããã«é«éã ãšä¿¡ããŠããŸããã å®éã«4ã€ã®ã¢ãŒãããã£ãããšãèãããšã^ã¯ãšãªãã¯ãšãªãã¯ãšãª$ã^ã¯ãšãª$ãã³ãŒãã¯å°ãé
åçã§ã¯ãããŸããã§ããã ç§ãæžãããã®ãèŠãŠããã¹ãŠãåé€ããŠå®æçã«æ€çŽ¢ããããšããèŠæããããŸããã ãã°ããããŠãç§ã¯èªåãæžãããã®ãæšæºã®UnixããŒã«ã䜿çšããŠå®è¡ã§ããããšã«æ°ã¥ããæåããèããŠããgrepã®äœ¿çšã«æ»ãããšã«ããŸãããããè€éãªãããžãã¯ã®ååšã«ããç Žæ£ããŸããã åé¡ã¯ããã¡ã€ã«åã§æ€çŽ¢ãããã¡ã€ã«ãã¹ã®é·ãã§äžŠã¹æ¿ããå
ã®æååã§ã¯ãªãããã®ã€ã³ããã¯ã¹ã衚瀺ããå¿
èŠãããããšã§ããã Unixã®grepãDã«ããstd.regexããã4åé«éã§ããããšã倿ããããšã¯æ³šç®ã«å€ããŸãã
ãã¡ã€ã«åãååŸããã«ã¯ãããã°ã©ã basenameã䜿çšã§ããŸãããæ®å¿µãªããšã«ãæšæºå
¥åã¹ããªãŒã ãèªã¿åããããã©ã¡ãŒã¿ãçŽæ¥æäœããã ãã§ãã sed 's !. * / !!'ã䜿çšã§ããŸãã ãã¹ãŠãæåŸãŸã§ã«ããããŸãã vimçµã¿èŸŒã¿é¢æ°fnamemodifyãé©ããŠããŸãã
ç¬èªã®æ¡åŒµæ©èœãå®è£
ããŠäœæããæ¹ãç°¡åãªã®ã§ãvimããŒã«ã䜿çšããŠäžŠã¹æ¿ããè¡ãããšã«ããŸããã sort颿°ã¯ã ã³ã³ãã¬ãŒã¿ãèšè¿°ããå¿
èŠããããœãŒããæ
åœããŸãã
- ã€ã³ããã¯ã¹ã衚瀺ããã«ã¯ã grepã§-nãã©ã°ã䜿çšããŸããããã¯ãè¡çªå·ã衚瀺ããŸãã圢åŒã¯nïŒlineã§ãããè§£æã容æã§ãã
ã«ãŒãœã«ã®ã¡ãã€ã
äžè¬çã«ãããã¯ç§ãããªãå«ããªããšã§ãã ã«ãŒãœã«ã®ã¡ãã€ãã¯ã incsearchãªãã·ã§ã³ãèšå®ããããšã§ç¢ºèªã§ããŸãã ãããã¡å
ã§äœããæ¢ããŠãå
¥åäžã«ã«ãŒãœã«ããã©ã£ãŠãã ããã <BS>ã®åäœã倿ŽãããŠãã¹ãŠãæç¢ºã«ãªã£ãå Žåãã©ãã«ã§ã<expr>ãæžã蟌ãããšã¯ã§ããŸããã ãã®ãã©ã°ã¯ãã«ãŒãœã«ã眮ãããŠããè¡ä»¥å€ã®è¡ã®å€æŽãçŠæ¢ããŸãã ãããã£ãŠãããžãã¯ã®æ®ãã®éšåã§ã¯ãäžèšã®åŒã¬ãžã¹ã¿ã䜿çšãããŸã ãããã¯ã ïŒã®ããã«ãåŒã®æéäžã«ãŒãœã«ãçŸåšã®äœçœ®ããåé€ããŸãã æ°åã®ãã¡ã€ã«ã®æ€çŽ¢ã«ã¯æéãããããããåæåãå°å·ãããšãã«ã«ãŒãœã«ãç¹æ»
ãã广ãçŸããŸãã éããããã³ã°vimãç¹ã«timer_start颿°ãæéå
ã«å°çããããšãèšããªããã°ãªããŸããã ãããã¡ãéåæçã«æç»ããå§ãããšããåé¡ã¯ãªããªããŸããã æè¯ã®è§£æ±ºçã§ã¯ãªãããšèšããããåŸãªãããããé©åãªãã®ã¯èŠã€ããããªãã£ãã ãããããã©ã°ã€ã³ãvim 8ããŒãžã§ã³ãå¿
èŠãšããå¯äžã®çç±ã§ãã
ãã¬ãã¥ãŒãããªããã°ãªããªãã£ããšãã«ãåé¡ã3åç®ã«è¿œãã€ããã ããããã®ãããã¡ã®ã«ãŒãœã«äœçœ®ã倿Žãããç»é¢ãæç»ãããç¬éã«ã«ãŒãœã«ãç¹æ»
ããŸããã ãã«ãŒãœã«ã®äžã®ãã£ã©ã¯ã¿ãŒã匷調ããæ§æããäžå¯æ¬ ã§ããããã®ãããªè©æ¬ºãããè¯ãæãŸã§æ®ãããšã«æ±ºããŸããã
çè·¡ã«æ°ã¥ã
ãããã¡ãŒã®å
容ã¯çµ¶ãã倿ŽãããŠããããã ã¿ãã©ã€ã³ã¯ãããã¡ãŒã倿Žãããããšãããã³å
¥åã¢ãŒãã§ã®æäœã«å¯Ÿå¿ããå·Šäžã®è¡šèšã衚瀺ãããããšã瀺ããŸãã ããªãã®ããšã¯ç¥ããŸããããç§ã¯ãããã«ãªãã¶ã€ã³ã奜ãã§ãããã®ãããªãã®ãåé€ããããšæããŸãã ãŸãã ã«ãŒã©ãŒãšstatuslineãé衚瀺ã«ãããšäŸ¿å©ã§ãã vimããããã¡å
ã®å€æŽãç£èŠããªãããã«ããã«ã¯ã buftypeãªãã·ã§ã³ã䜿çšã§ããŸãã
setlocal buftype=nofile
ã¹ããŒã¿ã¹ã©ã€ã³ãã«ãŒã©ãŒãç¢æ-- INSERT --
ã§ã¯ã衚瀺ãæ
åœãããªãã·ã§ã³ãã°ããŒãã«ã§ãããããå°ãè€éã§ããã€ãŸãããããã¡ãŒãçµäºãããšãã«ä»¥åã®å€ã埩å
ããå¿
èŠãããããã§ãã OptionSetã€ãã³ãããªãã¹ã³ãããšäŸ¿å©ã§ãã
set noshowmode set laststatus=0 set rulerformat=%0(%) redraw
rulerformatã®ä»£ããã«norulerã䜿çšããããšãã§ããŸãããåŸè
ã¯äºåã®ã¯ãªãŒãã³ã°ïŒåæç»ïŒïŒã§ç»é¢ãåæç»ããå¿
èŠããããããã¯ç®ã«äžå¿«ãªåœ±é¿ãäžããŸãã
æ§æ
ããã§ããã©ã°ã€ã³ã®æäœã§éèŠãªåœ¹å²ãæãããæ§æã«é¢ããæãéèŠãªãã€ã³ããèŠçŽããããšæããŸãã
ã¢ã€ãã | äŸ | 説æ |
---|
\ c | \ cã* | æ€çŽ¢æã«å€§æåãšå°æåãåºå¥ããŸããã |
ã{-} | ã{-} p | 欲匵ããªçžæã§ã¯ãããŸããã |
\ zs ã \ ze | ã{-} \ zsfoo \ zeã* | ãšã³ããªã®æåãšæåŸã |
\ @ = ã \ @ <= | \ïŒé衚瀺ã®\ïŒ\ @ <=ããã¹ã | ãããããŒãå¹
ã¢ãã -ãšã³ããªããåã®ã¢ãã ãåãåããŸãã |
\ïŒ
l | \ïŒ
1l | ç¹å®ã®è¡ãæ€çŽ¢ããŸãã |
\ïŒ | p1 \ïŒp2 \ïŒ.. | æ¥ç¶è©æŒç®åã |
ããŒã¹ããŒã
ãã¡ã€ã«åã䜿çšããŠããããããšã³ããªã®åŒ·èª¿è¡šç€ºãå¶éããé åãèšå®ããå¿
èŠããããŸãã
\(^\|\%(\/\)\@<=\)[^\/]\+$
config / foobââar.php
foobââar.php
次ã«ãç®çã®æåã匷調衚瀺ããå¿
èŠããããŸãã ãããã®ç®çã®ããã«ãçµåæŒç®å\ïŒ ïŒïŒhelp branchïŒã䜿çšã§ããŸãã
\(^\|\%(\/\)\@<=\)[^\/]\+$\&.\{-}f
config / f oobar.php
f oobar.php
ãã³ã ïŒããã¯éåžžã®ãã¿ãŒã³ ïŒïŒhelp patternïŒã§ããããã /ãæŒãããšã«ãããåå¥ã®ãããã¡ãŒã§ãã¹ãŠããã¹ãã§ããŸãã
ã³ã¡ã³ã
fzfã«ã¯äŸ¿å©ãªèŠèŠçæ©èœããããŸã -æ€çŽ¢çµæãã€ãŸãã³ã¡ã³ãã«åœ±é¿ãäžããªãããã¹ãã®ååšã æåã¯ãã³ã¡ã³ãã®å§ãŸãã瀺ãããã«ãããçš®ã®äžå¯èŠã®Unicodeæåã䜿çšãããã£ãïŒæãããªçç±ã«ãããã¹ããŒã¹ãåãŸããªãïŒããåŸã«æ§æã°ã«ãŒã-concealã®æçšãªããããã£ã«åºäŒããŸããã èŠããã«ã é èœã¯ããã¹ããé ãããããã¡ã«æ®ããŸãã é èœåäœã«ã¯ã conceallevelãšconcealcursorã® 2ã€ã®ãªãã·ã§ã³ããããŸãã ç¹å®ã®èšå®ã§ã¯ãããã¹ããé衚瀺ã«ãªããªãå ŽåããããŸãã®ã§ãèªãããšããå§ãããŸãã ç§ã®ãã©ã°ã€ã³ã§ã¯ãè¡ã¯æ¬¡ã®ãšããã§ãã
text#finderendline...
ããã§ã ...ã¯ãªãã·ã§ã³ã®ã³ã¡ã³ãã§ã ïŒfinderendlineã¯é衚瀺ã§ãã é ãããã¹ãã®äŸïŒ
syntax match hidden /pattern/ conceal
ã¹ã¯ããŒã«
å
¥åã¢ãŒãã§ãã©ã°ã€ã³ãå®è¡ãããšãå€ãã®åé¡ãçºçããŸãããã®1ã€ã¯ã¹ã¯ããŒã«ã§ãã ãªã¯ãšã¹ãã®å
¥åäœçœ®ã«ã«ãŒãœã«ãå¿
èŠãªã®ã§ãã«ãŒãœã«ãç§»åããŠç®çã®è¡ã匷調衚瀺ããããšã¯ã§ããŸããã æ€çŽ¢çµæãããã²ãŒãããã«ã¯ãé©åãªã°ã«ãŒããäœæããŠæ§æã䜿çšã§ããŸãã éåžžã®åå\ïŒ
lã¯å®å
šã«é©åããŸãã ããšãã°ã \ ^ïŒ
2lã* $ 2è¡ç®ã匷調衚瀺ãããŸãã
ç§ã®ç»é¢ã«ã¯63è¡ã®ããã¹ããå«ãŸããŠãããããã«å€ãã®ãšã³ããªãååšããå¯èœæ§ãããããã64è¡ç®ä»¥éã«å°éããæ¹æ³ã«ã€ããŠã®çåãçããŸãã ããããŒãšã¯ãšãªè¡ã¯åžžã«ç»é¢ã®è¡šç€ºéšåã«ããã¯ããªã®ã§ãç»é¢ã®æåŸã«è¿ã¥ããšãæåŸã«éãããŸã§æåïŒ2çªç®ã3çªç®ã...ïŒã®çºçãåãåããŸãïŒäžæé
åã«å
¥ããŸãïŒã äžã«ç§»åãããšã-ãã¹ãŠããŸã£ããéã§ãã
ãŸãšã
ãã®èšäºã®ååšäžã§ã¯ãvimã¯ã»ã®ããããŠããŸã- å
¥åã䜿çšããå¿
èŠããããŸãããããã¹ãŠããã§ã«é
ããŠããå Žåãç§ã¯éæšæºçãªæ¹æ³ã§è¡ã£ãŠããã®ãããªè²ŽéãªçµéšãåŸãããšãããããã§ãã ããã ãã§ã ãç¬èªã®æ¡åŒµæ©èœã®ã€ã³ã¹ããŒã«ã䜿çšãäœæã«é¢ããæ
å ±ã¯ãªããžããªã§èŠã€ããããšãã§ããŸã ã
æçšãªããããªããš
ãã©ã°ã€ã³ãæžããåŸã«ç¹å®ã®ããŒã¹ãåãåã£ãã®ã§ãç§ã¯ç§ã®äººçãå°ãç°¡çŽ åãããã£ãã§ãã
æ¿å
¥ã¢ãŒããçµäº
ç§ã®åã®èšäºãèªãã 人ã¯ãç§ã以åã«åŽé«ãªãã®ã䜿ã£ãŠããã¹ããšã³ãŒããç·šéããããšãç¥ã£ãŠããŸãã sublimeãšvimã«ã¯ãããŒããŒãã·ã§ãŒãã«ããã®åŠçæ¹æ³ã«å€§ããªéãããããŸãã åŽé«ãªå Žåãçµã¿åãããå
¥åãããšãã«é
å»¶ãªãã§ããã¹ããæ¿å
¥ããvimã¯æåã«ç¹å®ã®æéãæåŸ
ããçµã¿åããããå£ãããå Žåã«ã®ã¿ç®çã®æåãæ¿å
¥ããŸãã äžè¬çã«vimã¢ãŒããç¹ã«vimã¢ãŒãã䜿çšããæåããã dfã䜿çšããŠæ¿å
¥ã¢ãŒããçµäºããŸããã ããšãã°jjã§ã®åãã¬ãŒãã³ã°ã®è©Šã¿ã¯å€±æããã»ã©ç¿æ
£çã«ãªããŸããã dãšf以å€ã®æåãå
¥åãããã³ã«ãäžå¿«ãªåãã芳å¯ãããŸããã ç§ã¯åŽé«ãªæ¯ãèããç¹°ãè¿ãããšã«ããŸããã
let g:lastInsertedChar = '' function! LeaveInsertMode() let reltime = reltime() let timePressed = reltime[0] * 1000 + reltime[1] / 1000 if(g:lastInsertedChar == 'd' && v:char == 'f' && timePressed - g:lastTimePressed < 500) let v:char = '' call feedkeys("\<Esc>x") endif let g:lastInsertedChar = v:char let g:lastTimePressed = timePressed endfunction autocmd InsertCharPre * call LeaveInsertMode()
ããã¯æè¯ã®ã³ãŒãã§ã¯ãªããããããŸããããã¿ã¹ã¯ãå®è¡ããŸãã äžçªäžã®è¡ã¯ã dãæŒããåŸã fãæŒãã®ã«0.5ç§ããããŸãã åŸè
ãçã®å Žåã fã¯åºåãããã dã¯ãããã¡ããåé€ãããŸãã ãã®åŸããšãã£ã¿ãŒã¯éåžžã¢ãŒãã«ãªããŸãã
èªã¿åãå°çšãã¡ã€ã«
æ®ãã®ãã€ããŒãªè¿œå ã¯ãç¹å®ã®ãã¡ã€ã«ã®ç·šéã®çŠæ¢ã«ãªããŸãã
function! PHPVendorFiles() let path = expand("%:p") if(stridx(path, "/vendor/") != -1) setlocal nomodifiable endif endfunction autocmd Filetype php call PHPVendorFiles()
ãã®ã³ãŒãã¯ã ãã³ããŒãã£ã¬ã¯ããªã«ããå Žåã .phpãã¡ã€ã«ã®ç·šéãçŠæ¢ããŸãã
远èš
æåã®èšäºã®çºè¡ä»¥éã®ç§ã®ç°å¢ã®å€æŽã®ãªã¹ãã
- XTermã«åãæ¿ããŸããããããã¯gnome-terminalããã2åéããšæããŠããŸãã
- èªç©ºäŒç€Ÿã¯äžèŠãšããŠåé€ãããŸããã
- NERDããªãŒã¯æšæºã®netrwãæ¯æããŠåé€ãããŸããã
- ãã«ãã¹ã¬ããvim-plugãæ¯æããŠã Vundleã¯åé€ãããŸããã
- Finderãæ¯æããŠCtrlPãåé€ã
- ã¿ã°ããŒ
æ
éãã Finderãæ¯æããŠåé€ãããŸããã