ãã®è¨äºã¯ Vim Advent calendar 2015 ã®16æ¥ç®ã®è¨äºã§ãï¼
åã¯æ®æ®µãã ã»ã§ããã調ã§ããã°ãæ¸ãã¦ãã¾ããï¼ä»åã®è¨äºã¯å¤æ°ã®äººã«è¦ã¦ããã ããã¨ãèæ ®ãã¦ï¼å¤ãã®äººãããã°ã§æ¡ç¨ãã¦ãããã§ãã»ã¾ãã調ï¼èªãå£èª¿ã§æ¸ãã¦ãããã¨ã«ãã¾ãããï¼
ãã¦æ¬é¡ã§ãï¼ åè£ãçµãè¾¼ãã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨ããã®ã¯äººæ°ã§ï¼Vimã§ã¯unite.vimï¼ctrlp.vimãªã©ãæåã§ããï¼ ããã¦ï¼ã³ãã³ãã©ã¤ã³ãã¼ã«fzfã¯Vimãããå©ç¨ã§ããããã«ï¼æ¬ä½ã«Vimãã©ã°ã¤ã³ãä»å±ãã¦ãã¾ãï¼ ã¾ãï¼ctrlp.vimã«ã¤ã³ã¹ãã¤ã¢ããã¦éçºããããã©ã°ã¤ã³ã¨ãã¦ï¼LeafCageããã«ããalti.vimãkamichiduããã«ããvim-milqiãããã¾ãï¼ ãã®è¨äºã§ã¯ï¼åè¿°ã®5ã¤ã®åè£çµãè¾¼ã¿åã¤ã³ã¿ãã§ã¼ã¹ãæä¾ããVimãã©ã°ã¤ã³
ã«ã¤ãã¦ï¼ç°¡åãªè§£èª¬ã¨æ¯è¼ããããã¨æãã¾ãï¼ FuzzyFinderãvim-kuã«ã¤ãã¦ã¯åãä¸ãã¾ããï¼
åºæ¬æä½ã®æ¯è¼
unite.vim
unite.vimã§ã¯ï¼æ¬ä½ã«ããããã®æ¡å¼µãä»å±ãã¦ããï¼ç¬¬ä¸è
ï¼ç¹ã«æ¥æ¬äººã«å¤ãï¼ã«ãã£ã¦éçºãããæ¡å¼µãå¤æ°å
¬éããã¦ããã®ã§ï¼èªåã§æ¡å¼µãæ¸ãå¿
è¦ã¯ç¡ãã§ããï¼
åºæ¬çã«ï¼ :Unite [unite sourceå]
ã¨ãããã¨ã§ï¼unite.vimãèµ·åã§ãã¾ãï¼
unite.vimä¸ã§ã®ãã¼ãããã³ã°ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãï¼ unite.vimã¯ä»ã®åè£çµãè¾¼ã¿åãã©ã°ã¤ã³ã¨ç°ãªãï¼ãã¼ãã«ã¢ã¼ãã¨ã¤ã³ãµã¼ãã¢ã¼ããããï¼ããããã®ã¢ã¼ãã§æä½ãç°ãªãã¾ãï¼
ãã¼ãããã³ã°
ãã¼ãã«ã¢ã¼ã
ãã¼ | åä½ |
---|---|
i / I |
ã¤ã³ãµã¼ãã¢ã¼ãã« |
a |
åè£é¸ææã¯ã¢ã¯ã·ã§ã³ãé¸æï¼ããã§ãªããã° A ã¨åã |
A |
å ¥åæ¬ã®æ«å°¾ã«ã«ã¼ã½ã«ç§»åããã¦ã¤ã³ãµã¼ãã¢ã¼ã |
q or <C-g> |
unite.vim ãçµäºãï¼1ã¤åã®untieãããã¡ã¡ãã¥ã¼ã復å ãã |
Q or g<C-g> |
unite.vim ãçµäºãã |
<C-r> |
uniteãåèµ·åãã |
<Space> / <S-Space> |
åè£ã®é¸æç¶æ ããã°ã«ï¼è¤æ°é¸æã§ããsourceã®ã¿ï¼ |
* |
å ¨ã¦ã®åè£é¸æããã°ã«ããï¼é¸æç¶æ ãå転ããï¼ |
M |
表示åè£æ°ãå¶éãã |
<Tab> |
ã¢ã¯ã·ã§ã³ãé¸æãã |
<C-p> / <C-n> |
sourceãåãæ¿ãã |
<C-a> / <C-k> |
ãã° / åè£ã echo ãã |
<C-l> |
åæç»ãã |
<C-h> |
1ã¤åã®ãã¹ãåé¤ãã |
gg or <C-Home> |
ã«ã¼ã½ã«ã1çªä¸ã« |
G or <C-End> |
ã«ã¼ã½ã«ã1çªä¸ã« |
j or <Down> |
ã«ã¼ã½ã«ã1ã¤ä¸ã« |
k or <Up> |
ã«ã¼ã½ã«ã1ã¤ä¸ã« |
J / K |
ãããããªãåè£ãã¹ããããã¦ã«ã¼ã½ã«ãä¸ / ä¸ã«ç§»å |
g? |
ç°¡åãªuniteã®ãã¼ãããã³ã°ã®ãã«ãã表示 |
N |
åè£ã追å ããï¼action_table ã« unite__new_candidate ãå®ç¾©ããã¦ããå ´åã®ã¿ï¼ |
. |
ããããçµãè¾¼ã¿æ¬ã«å ¥åãï¼ã¤ã³ãµã¼ãã¢ã¼ãã« |
<CR> |
ããã©ã«ãã¢ã¯ã·ã§ã³ãè¡ã |
b |
ããã¯ãã¼ã¯ã®ã¢ã¯ã·ã§ã³ãè¡ã |
d |
åé¤ã¢ã¯ã·ã§ã³ãè¡ã |
e |
narrowã¢ã¯ã·ã§ã³ãè¡ã |
t |
å¥ã®ã¿ãã§éã |
yy |
ã¤ã³ã¯ã¢ã¯ã·ã§ã³ãè¡ã |
o |
ãªã¼ãã³ã¢ã¯ã·ã§ã³ãè¡ã |
x |
ã¯ã¤ãã¯ããããç¨ãã¦ï¼ããã©ã«ãã®ã¢ã¯ã·ã§ã³ãè¡ãï¼ãã¼ã¯ãããåè£ãããã¨ãã¡ï¼ |
ã¤ã³ãµã¼ãã¢ã¼ã
ãã¼ | åä½ |
---|---|
<Esc> |
ãã¼ãã«ã¢ã¼ãã« |
<Tab> |
ã¢ã¯ã·ã§ã³ãé¸æãã |
<C-n> or <Down> |
次ã®è¡ãé¸æ |
<C-p> or <Up> |
åã®è¡ãé¸æ |
<C-f> / <C-b> |
å / 次ã®è¡ãé¸æ |
<C-h> or <BS> |
ã«ã¼ã½ã«ã®1ã¤åã®æåãåé¤ |
<C-u> |
ã«ã¼ã½ã«ã®åã®å ¥åãå ¨ã¦åé¤ |
<C-w> |
ã«ã¼ã½ã«ã®åã®åèªãåé¤ |
<C-a> or <Home> |
ã«ã¼ã½ã«ãå é ã« |
<Left> / <Right> |
ã«ã¼ã½ã«ãå³ / å·¦ã«ç§»å |
<C-l> |
åæç»ãã |
<C-g> |
uniteãçµäºãã |
ãã¸ã¥ã¢ã«ã¢ã¼ã
ãã¼ | åä½ |
---|---|
<Space> |
é¸æãããç¯å²ã®åè£å ¨ã¦ã®é¸æç¶æ ããã°ã« |
æ¬ä½ä»å±ã®unite source
以ä¸ã®è¡¨ã¯ï¼unite.vimæ¬ä½ããæä¾ããã¦ããunite sourceã®ä¸é¨ã§ãï¼ ããã©ã«ãã®ã¢ã¯ã·ã§ã³ã«ã¤ãã¦ãä½µè¨ãã¦ãã¾ãï¼
ä»ã«ãããããã®unite sourceãä»å±ãã¦ããã®ã§ï¼èª¿ã¹ã¦ã¿ãã¨é¢ç½ãã¨æãã¾ãï¼
unite sourceå | æ©è½ |
---|---|
bookmark |
UniteBookmarkAdd ã§ããã¯ãã¼ã¯ããããã¡ã¤ã«ã表示ãï¼é¸æããããã¡ã¤ã«ãéã |
buffer |
ãªã¹ãããã¦ãããããã¡ä¸è¦§ã表示ãï¼é¸æããããããã¡ãéã |
change |
ãã¡ã¤ã«ã®å¤æ´å±¥æ´ï¼:change ã®çµæï¼ã表示ãï¼é¸æãããä½ç½®ã«ç§»å |
command |
å©ç¨ã§ããã³ãã³ãã表示ãï¼é¸æãããã³ãã³ããã³ãã³ãã¦ã£ã³ãã¦ã«å ¥åï¼å¼æ°ã®ãã³ããè¡¨ç¤ºï¼ |
directory |
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥ä¸ã®ãã£ã¬ã¯ããªã表示ãï¼ãã¡ã¤ã©ã®ããã«å©ç¨ã§ãã |
file |
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ã¨ãã£ã¬ã¯ããªã表示ãï¼ãã¡ã¤ã©ã®ããã«å©ç¨ã§ãã |
file_rec |
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ãå帰çã«æ¤ç´¢ãã¦è¡¨ç¤ºãï¼ãã¡ã¤ã©ã®ããã«å©ç¨ã§ãã |
find |
対象ãã£ã¬ã¯ããªã¨ååãå ¥åããã¦ï¼findã³ãã³ããå®è¡ããçµæã表示 |
function |
å©ç¨ã§ããé¢æ°ã表示ãï¼é¸æãããé¢æ°ãã³ãã³ãã¦ã£ã³ãã¦ã«å ¥åï¼å¼æ°ã®ãã³ããæç¤ºï¼ |
grep |
å¤é¨ã³ãã³ã grep ãè¡ãããã«ä¿ãï¼grepãè¡ã£ãçµæãä¸è¦§ã¨ãã¦è¡¨ç¤ºï¼é¸æãããä½ç½®ã«ç§»åãã |
history/unite |
éå»ã«å©ç¨ããunite sourceã®å±¥æ´ã表示 |
jump |
ã¸ã£ã³ããªã¹ãï¼:jumps ã®çµæï¼ã表示ãï¼é¸æãããä½ç½®ã«ç§»å |
launcher |
ãã¹ãéã£ã¦ããã¨ããããï¼å®è¡å¯è½ãã¡ã¤ã«ãåè£ã¨ãã¦è¡¨ç¤ºãã |
line |
ç¾å¨ã®ãããã¡ã®å ¨ã¦ã®è¡ãåè£ã¨ãã¦è¡¨ç¤ºãï¼é¸æãããè¡ã«ç§»å |
mapping |
å ¨ã¦ã®ãã¼ãããã³ã°ã表示ãï¼é¸æããããã®ãå®è¡ãã |
output |
Vimã³ãã³ããå ¥åãä¿ãï¼å ¥åãããã³ãã³ãã®åºåãåè£ã¨ãã |
process |
èµ·åä¸ã®ããã»ã¹ä¸è¦§ã表示ãï¼é¸æããåè£ã«TERMã·ã°ãã«ãéãï¼ç¢ºèªããï¼ |
register |
Vimã®ã¬ã¸ã¹ã¿ã表示ãï¼é¸æãããã¬ã¸ã¹ã¿ã®å 容ãç¾å¨ä½ç½®ã«æ¿å ¥ |
runtimepath |
runtimepath ã«è¿½å ããã¦ãããã£ã¬ã¯ããªä¸è¦§ã表示ãï¼é¸æããããã£ã¬ã¯ããªã«ç§»å |
source |
unite sourceã®ä¸è¦§ã表示ãï¼é¸æãããsourceããã¨ã«Uniteãèµ·å |
tab |
ç¾å¨å©ç¨ä¸ã®Vimã®ã¿ãä¸è¦§ï¼ã¨ã¿ãå ã®ãããã¡ããã³ãã¨ãã¦ï¼ã表示ãï¼é¸æãããã¿ãã«ç§»å |
vimgrep |
:vimgrep ãè¡ãããã«ä¿ãï¼vimgrepãè¡ã£ãçµæãä¸è¦§ã¨ãã¦è¡¨ç¤ºï¼é¸æãããä½ç½®ã«ç§»åãã |
window |
ç¾å¨ã®ã¿ãã®ã¦ã£ã³ãã¦ä¸è¦§ã表示ãï¼é¸æãããã¦ã£ã³ãã¦ã«ç§»å |
ctrlp.vim
ãã©ã°ã¤ã³åã«ãªã£ã¦ããããã«ï¼ããã©ã«ãã§ã¯ <C-p>
ã§CtrlPãèµ·åãã¾ãï¼
ãããã¯ï¼ :CtrlP
ã¨ããã³ãã³ãã§èµ·åãã¦ãããã§ãããï¼
unite.vimã¨åæ§ï¼ctrlp.vimã®æ¬ä½ãããå¤æ°ã®æ¡å¼µãæä¾ããã¦ããï¼ããããã®æ¡å¼µã¯ :CtrlPXXXX
ã®ãããªã³ãã³ããå®è¡ãããã¨ã§å©ç¨å¯è½ã§ãï¼
CtrlPãããã¡ã§ã®ãã¼ãããã³ã°ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãï¼
ãã¼ | åä½ |
---|---|
<C-c> or <Esc> |
CtrlPãçµäºãã |
<C-f> / <C-b> |
ã¨ã¯ã¹ãã³ã·ã§ã³ãåãæ¿ãã |
<C-a> / <C-e> |
å ¥åã¦ã£ã³ãã¦ã®ã«ã¼ã½ã«ãå é / æå¾ã« |
<C-j> / <C-k> |
åè£ã¦ã£ã³ãã¦ã®ã«ã¼ã½ã«ã®ä¸ä¸ç§»å |
<C-d> |
ãã«ãã¹æ¤ç´¢ã¢ã¼ãã¨ãã¡ã¤ã«åã®ã¿ã®æ¤ç´¢ã¢ã¼ããåãæ¿ã |
<C-r> |
æ£è¦è¡¨ç¾æ¤ç´¢ã¢ã¼ãã¨é常ã®æ¤ç´¢ã¢ã¼ãã®ãã°ã« |
<CR> |
åãã¿ãã«éã |
<C-t> |
æ°ããã¿ãã«éã |
<C-v> |
åç´åå²ã§éã |
<C-x> or <C-s> or <C-CR> |
æ°´å¹³åå²ã§éã |
<C-p> |
1ã¤åã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<C-n> |
1ã¤å¾ã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<F5> |
ãã£ãã·ã¥ãæ´æ°ãã |
<F7> |
é¸æããï¼ãã¼ã¯ãä»ããï¼åè£ãåè£ããé¤å¤ãã |
<C-z> |
対象ãã¡ã¤ã«ã«ãã¼ã¯ãä»ããï¼é¸æç¶æ ã«ããï¼ |
ã¾ãï¼ctrlp.vimã§ã¯ï¼:CtrlP
以å¤ã«ãã³ãã³ããæä¾ããã¦ãã¾ãï¼
ãããã¯ï¼ autoload/ctrlp.vim
ã§å®ç¾©ããã¦ããçµã¿è¾¼ã¿ã®æ¡å¼µã¨ãè¨ããã§ãããï¼
ã³ãã³ã | æ©è½ |
---|---|
:CtrlPMRUFiles [dir] |
æè¿å©ç¨ãããã¡ã¤ã«ã表示ãï¼é¸æããããã¡ã¤ã«ãéã |
:CtrlPBuffer |
ãªã¹ãããã¦ãããããã¡ã表示ãï¼é¸æããããããã¡ã«ç§»åãã |
:CtrlPLastMode [args] |
æå¾ã«å©ç¨ããCtrlPæ¡å¼µãå®è¡ããï¼[args] ã« --dir ãæå®ãããã¨ãï¼æå¾ã®ã¯ã¼ãã³ã°ãã£ã¬ã¯ããªãç¨ãã |
:CtrlPClearCache or :ClearCtrlPCache |
CtrlPã®ãã£ãã·ã¥ãåé¤ãã |
:CtrlPAllClearCache or :ClearAllCtrlPCaches |
CtrlPã®ãã£ãã·ã¥ãå ¨ã¦åé¤ãã |
:CtrlPCurWD |
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ãå帰çã«è¡¨ç¤º |
:CtrlPCurFile |
ç¾å¨ç·¨éä¸ã®ãã¡ã¤ã«ã®ãã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ãå帰çã«è¡¨ç¤º |
:CtrlPRoot |
ããããªã...ï¼ |
å
ã«è¿°ã¹ãããã«ï¼ctrlp.vimã®æ¬ä½ããã¯å¤æ°ã®æ¡å¼µãæä¾ããã¦ãã¾ãï¼
å
ã«è¿°ã¹ãçµã¿è¾¼ã¿ã®æ¡å¼µã¨ã¯éãï¼å¤æ°ã®æ¡å¼µã¯ autoload/ctrlp/xxx.vim
ã§å®ç¾©ããã¦ããï¼æ¬ä½ããåé¢ããã¦ããã¾ãï¼
æ¡å¼µå | 対å¿ããã³ãã³ã | æ©è½ |
---|---|---|
tag |
:CtrlPTag |
è¦ã¤ãã£ãtagsãã¡ã¤ã«ï¼ãªãã·ã§ã³ tags ã«ä¾åï¼ã®é
ç®ã表示ãï¼é¸æãããé
ç®ã®ä½ç½®ã¸ã¸ã£ã³ããã |
buffertag |
:CtrlPBugTag [buffer] |
ã«ã¬ã³ããããã¡ï¼ã¾ãã¯æå®ããããããã¡ããtagsãã¡ã¤ã«ã®é ç®ã表示ãï¼é¸æãããé ç®ã®ä½ç½®ã¸ã¸ã£ã³ããã |
buffertag |
:CtrlPBugTagAll |
ãªã¹ãããã¦ãããããã¡ |
quickfix |
:CtrlPQuickfix |
quickfixã«ããé ç®ã表示ãï¼é¸æãããã¨ã©ã¼ä½ç½®ã«ç§»åãã |
dir |
:CtrlPDir [dir] |
ã«ã¬ã³ããã£ã¬ã¯ããªï¼ã¾ãã¯æå®ããããã£ã¬ã¯ããªä»¥ä¸ã®ãã£ã¬ã¯ããªã表示ãï¼é¸æããããã£ã¬ã¯ããªãã¯ã¼ãã³ã°ãã£ã¬ã¯ããªã«ãã |
rtscript |
:CtrlPRTS |
runtimepath 以ä¸ã«ãããã¡ã¤ã«ã表示ãï¼é¸æããããã¡ã¤ã«ãéã |
undo |
:CtrlPUndo |
Undoå±¥æ´ã表示ãï¼é¸æãããã¨ããã¾ã§undoãã |
list |
:CtrlPLine |
ãªã¹ãããã¦ããå ¨ã¦ã®ãããã¡ï¼ã¾ãã¯æå®ããããããã¡ã®è¡ã表示ãï¼é¸æãããä½ç½®ã«ã¸ã£ã³ããã |
changes |
:CtrlPChange [buffer] |
ã«ã¬ã³ããããã¡ï¼ã¾ãã¯æå®ããããããã¡ã®å¤æ´ç®æã表示ãï¼é¸æãããä½ç½®ã«ã¸ã£ã³ããã |
changes |
:CtrlPChangeAll |
ãªã¹ãããã¦ãããããã¡å ¨ã¦ã®å¤æ´å±¥æ´ã表示ãï¼é¸æãããä½ç½®ã«ã¸ã£ã³ããã |
mixed |
:CtrlPMixed |
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ï¼ãããã¡ï¼æè¿ä½¿ç¨ãããã¡ã¤ã«ã表示ãï¼é¸æããããã®ãéã |
bookmarkdir |
:CtrlPBookmarkDir |
ããã¯ãã¼ã¯ããã¦ãããã£ã¬ã¯ããªã表示ãï¼ |
bookmarkdir |
:CtrlPBookmarkDirAdd [dir] |
ã«ã¬ã³ããã£ã¬ã¯ããªï¼ã¾ãã¯æå®ããããã£ã¬ã¯ããªãããã¯ãã¼ã¯ããï¼é¸æå¾ï¼ããã¯ãã¼ã¯ã®ã¿ã¤ãã«ã®å ¥åãæ±ããããï¼ |
fzf
fzfã¯ã³ãã³ãã©ã¤ã³ãã¼ã«ã¨ãã¦å¼ã³åºãããã®ã§ï¼Vimã¨ãã¦æä½ãããã¨ã¯ã§ãã¾ããï¼ ç¨æããã¦ãããããã³ã°ã¯ä»¥ä¸ã®ããã«åç´ãªãã®ã§ãï¼
ãã¼ | åä½ |
---|---|
<C-c> or <C-g> or <Esc> |
fzfãçµäºãã |
<C-f> / <C-b> |
ã«ã¼ã½ã«ã移åãã |
<CR> |
åè£ãé¸æãã |
<S-Tab> |
è¤æ°é¸æå¯è½ãªã¨ãï¼ãªãã·ã§ã³ -m or --multi ãæå®ããã¦ããã¨ãï¼ï¼åè£ã«ãã¼ã¯ãä»ãã |
æ¬ä½ããæ¡å¼µã¯æä¾ããã¦ããªãã®ã§ï¼èªåã§æ¸ããã¨ã«ãªãã§ãããï¼
å
¬å¼ã®wikiã«ãµã³ãã«ãå¤æ°ããã¾ãã®ã§ï¼ãããã ~/.vimrc
ã«ã³ãããªã©ããã°ãããã¨æãã¾ãï¼
alti.vim
alti.vim㯠ã°ãã¼ãã«å¤æ° g:alti_default_mappings_base
ã« 'standard'
ã 'ctrlplike'
ã代å
¥ãããã¨ã§ï¼æä½ã®ããªã»ãããå¤æ´ãããã¨ãã§ãã¾ãï¼
ãã®ã°ãã¼ãã«å¤æ°ã®ããã©ã«ãå¤ã¯ 'standard'
ãªã®ã§ï¼ä½ãããªãã£ããï¼ç¡å¹ãªå¤ãå
¥åããã¨ï¼standardã®ãã¼ãããã³ã°ã«ãªãã§ãããï¼
standard
ãã¼ | åä½ |
---|---|
<BS> or <C-h> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å1æåãåé¤ |
<Del> or <C-d> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å¾ã1æåãåé¤ |
<C-w> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å1åèªãåé¤ |
<C-u> |
å ¥åæ¬ãã¯ãªã¢ãã |
<C-r> |
ã¬ã¸ã¹ã¿æ¿å ¥ã¢ã¼ãã« |
<C-x><C-n> or <C-_> |
1ã¤å¾ã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<C-x><C-p> or <C-s> |
1ã¤åã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<C-a> / <C-e> |
å ¥åæ¬ã®å é / æ«å°¾ã«ã«ã¼ã½ã«ã移å |
<C-b> or <Left> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã左㫠|
<C-f> or <Right> |
å ¥åæ¬ã®ã«ã¼ã½ã«ãå³ã« |
<C-j> or <PageDown> or <kPageDown> |
åè£æ¬ã§æ¬¡ã®ãã¼ã¸ã表示ãã |
<C-j> or <PageDown> or <kPageDown> |
åè£æ¬ã§åã®ãã¼ã¸ã表示ãã |
<C-n> or <Down> |
åè£æ¬ã®ã«ã¼ã½ã«ã1ã¤ä¸ã« |
<C-p> or <Up> |
åè£æ¬ã®ã«ã¼ã½ã«ã1ã¤ä¸ã« |
<C-g>g or <C-g><C-g> or <Home> or <kHome> |
åè£çªã§å é ã«ã«ã¼ã½ã«ã移å |
<C-g>G or <End> or <kEnd> |
åè£çªã§æ«å°¾ã«ã«ã¼ã½ã«ã移å |
<Tab> |
åè£çªã®ã«ã¼ã½ã«ä¸ã®åè£ãï¼å ¥åæ¬ã«å ¥åãã |
<C-o> |
é¸æåè£ã«ã¤ãã¦ã®ã¢ã¯ã·ã§ã³ã¡ãã¥ã¼ãåºã |
<Esc> or <C-c> |
alti.vimãçµäºãã |
<CR> |
å ¥åï¼ãããã¯ã«ã¼ã½ã«ä¸ã®åè£ï¼ã«åºã¥ãã¦ï¼ã¢ã¯ã·ã§ã³ãè¡ã |
<C-y> |
æ¡å¼µã®å®ç¾©è¾æ¸ã®ãã¼ default_actions ã«æå®ããããªã¹ãã®0çªç®ã«æå®ãããã¢ã¯ã·ã§ã³ãå®è¡ |
<C-v> |
æ¡å¼µã®å®ç¾©è¾æ¸ã®ãã¼ default_actions ã«æå®ããããªã¹ãã®1çªç®ã«æå®ãããã¢ã¯ã·ã§ã³ãå®è¡ |
ctrlplike
ãã¼ | åä½ |
---|---|
<BS> or <C-]> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å1æåãåé¤ |
<Del> or <C-d> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å¾ã1æåãåé¤ |
<C-w> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã®å1åèªãåé¤ |
<C-u> |
å ¥åæ¬ãã¯ãªã¢ãã |
<C-r> or <C-\> |
ã¬ã¸ã¹ã¿æ¿å ¥ã¢ã¼ãã« |
<C-n> |
1ã¤å¾ã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<C-p> |
1ã¤åã®å ¥åå±¥æ´ãå ¥åæ¬ã«å ¥ãã |
<C-a> / <C-e> |
å ¥åæ¬ã®å é / æ«å°¾ã«ã«ã¼ã½ã«ã移å |
<C-h> or <Left> |
å ¥åæ¬ã®ã«ã¼ã½ã«ã左㫠|
<C-l> or <Right> |
å ¥åæ¬ã®ã«ã¼ã½ã«ãå³ã« |
<C-f> or <PageDown> or <kPageDown> |
åè£æ¬ã§æ¬¡ã®ãã¼ã¸ã表示ãã |
<C-b> or <PageDown> or <kPageDown> |
åè£æ¬ã§åã®ãã¼ã¸ã表示ãã |
<C-j> or <Down> |
åè£æ¬ã®ã«ã¼ã½ã«ã1ã¤ä¸ã« |
<C-k> or <Up> |
åè£æ¬ã®ã«ã¼ã½ã«ã1ã¤ä¸ã« |
<C-g>g or <C-g><C-g> or <Home> or <kHome> |
åè£çªã§å é ã«ã«ã¼ã½ã«ã移å |
<C-g>G or <End> or <kEnd> |
åè£çªã§æ«å°¾ã«ã«ã¼ã½ã«ã移å |
<Tab> |
åè£çªã®ã«ã¼ã½ã«ä¸ã®åè£ãï¼å ¥åæ¬ã«å ¥åãã |
<C-o> |
é¸æåè£ã«ã¤ãã¦ã®ã¢ã¯ã·ã§ã³ã¡ãã¥ã¼ãåºã |
<Esc> or <C-c> |
alti.vimãçµäºãã |
<CR> |
å ¥åï¼ãããã¯ã«ã¼ã½ã«ä¸ã®åè£ï¼ã«åºã¥ãã¦ï¼ã¢ã¯ã·ã§ã³ãè¡ã |
<C-y> |
æ¡å¼µã®å®ç¾©è¾æ¸ã®ãã¼ default_actions ã«æå®ããããªã¹ãã®0çªç®ã«æå®ãããã¢ã¯ã·ã§ã³ãå®è¡ |
<C-v> |
æ¡å¼µã®å®ç¾©è¾æ¸ã®ãã¼ default_actions ã«æå®ããããªã¹ãã®1çªç®ã«æå®ãããã¢ã¯ã·ã§ã³ãå®è¡ |
ãã®ãã©ã°ã¤ã³ãæ¬ä½ã«æ¡å¼µã¯ä»å±ãã¦ãã¾ãããï¼ä½¿ãåæã¯ããªãè¯ãã®ã§ï¼æ¡å¼µãèªåã§ä½ã£ã¦å©ç¨ããã¨ããã§ãããï¼
vim-milqi
vim-milqiã¯ããã¥ã¡ã³ããç¡ãã®ã§ï¼ã½ã¼ã¹ã³ã¼ããèªãã çµæãæ¸ãã¾ãï¼ ãã®ããããè¦ãéãï¼ctrlp.vimããæã£ã¦ãã¦ãã¨æ¨æ¸¬ã§ããã®ã§ï¼ã»ã¨ãã©ctrlp.vimã¨åãæä½ã§ããã¨è¨ã£ã¦ããã§ãããï¼
vim-milqiã®æ¬ä½ã«ãæ¡å¼µã¯ä»å±ãã¦ãã¾ãããï¼ :MilqiFromUnite
ã¨ããã³ãã³ããæä¾ããã¦ããï¼å¼æ°ã«unite sourceåãæå®ãããã¨ã§ï¼unite sourceããåè£ãåå¾ãï¼ã¢ã¯ã·ã§ã³ãå®è¡ãããã¨ãã§ãã¾ãï¼
ä»ã®ãã©ã°ã¤ã³ã§ã¯æä¾ããã¦ããªãæ©è½ãªã®ã§ï¼ãªããªãé¢ç½ãã¨æãã¾ããï¼
ãããï¼unite sourceã®åè£ã«kindãæå®ããã¦ããªãå ´åï¼ã¨ã©ã¼ã¨ãªãã®ã§æ³¨æãå¿
è¦ã§ãï¼
æ¡å¼µã®ä½ããããã®æ¯è¼
åçµãè¾¼ã¿æ¤ç´¢ãã©ã°ã¤ã³ã®æ¡å¼µã®ä½ãããããæ¯è¼ãã¦ã¿ã¾ãããï¼ ã¾ãï¼æ¡å¼µã«ããã¦å®ç¾ã§ããç¹å¾´çãªãã¨ãæ¯è¼ããã¨ï¼ä»¥ä¸ã®ããã«ãªãã¾ãï¼
ãã©ã°ã¤ã³ | è¤æ°é¸æ | è¤æ°ã®ã¢ã¯ã·ã§ã³ã®æä¾ | éåæã®åè£åå¾ | ããã³ããã®å¤æ´ |
---|---|---|---|---|
unite.vim | â | â | â | âï¼èµ·åãªãã·ã§ã³ï¼ |
ctrlp.vim | â³ | â³ï¼åè£é¸ææã®ãã¼ï¼ | à | à |
fzf | â | Ã | Ã | â |
alti.vim | â | â | à | âï¼åçã«å¤æ´å¯ï¼ |
vim-milqi | Ã | Ã | â | Ã |
ããã§ãããéåæã®åè£åå¾ãã¨ã¯ï¼å®æçã«åè£ãåå¾å¦çãå¼ã³åºãï¼é¸æå¯è½ãªåè£æ°ãå¢ããï¼ãããã¯æ¸ãããã¨ãã§ããã§ãããï¼ãã¨ã§ãï¼
Vimã§ã¯éåæå¦çãããæ段ãã¡ããã¨ããå½¢ã§æä¾ããã¦ããªãã®ã§ï¼éåæã®åè£ã®åå¾ã¯ï¼Shougo/vimproc.vimã¨ï¼ updatetime
㨠feedkeys()
ï¼ ããã¦ï¼ CursorHold
ï¼ CursorMoved
ã¨ãã autocmd
ãçµã¿åããããã¼ãªã³ã°ã«ãã£ã¦è¡ãããã®ã主æµã§ãï¼
+clientserver
ã®æ©è½ã¨ RemoteReply
ãçµã¿åããã¦ãéåæå¦çã¯å®ç¾ã§ãã¾ããï¼+clientserver
ã«ãªã£ã¦ããVimã¯å¤ããªãã®ã§ï¼ãã¡ããæ¡ç¨ããããã¨ã¯ããã¾ããï¼
éåæã®åè£åå¾ã§ã¢ãã¡ã¼ã·ã§ã³ãå®ç¾ããã¨ããé¢ç½ã使ãæ¹ãããï¼ä¾ãã°supermomonga/jazzradio.vimã§ã¯é³éã¬ãã«ã®ãããªã¢ãã¡ã¼ã·ã§ã³ãè¡ãunite sourceãæä¾ããã¦ãã¾ãï¼
ãã¦ï¼åãç®çãéæããããããã®æ¡å¼µãä½ã£ã¦ã¿ã¾ãããï¼
ä»åã¯ãapple, banana, cakeã¨ãã3ã¤ã®åè£ã表示ãï¼ããããé¸æããããã®ã echomsg
ãããã¨ããé常ã«åç´ãªãã®ãä½ããã¨ã«ãã¾ãï¼
ã¨ã«ããï¼ã³ã¼ããæ¸ããªãã¨å§ã¾ãã¾ãããï¼ ä»¥ä¸ï¼ããããã®ã³ã¼ãã¨è§£èª¬ã§ãï¼ ãªãï¼ãã®ãµã³ãã«ã®æ¡å¼µã¯ koturn/vim-exts ã«ããã¾ãï¼
plugin/exts.vim
: ã¤ã³ã¿ãã§ã¼ã¹
if exists('g:loaded_exts') finish endif let g:loaded_exts = 1 let s:save_cpo = &cpo set cpo&vim command! CtrlPExts call ctrlp#init(ctrlp#exts#id()) command! FZFExts call fzf#run(fzf#exts#option()) command! AltiExts call alti#init(alti#exts#define()) command! MilqiExts call milqi#candidate_first(milqi#exts#define()) " command! MilqiExts call milqi#query_first(milqi#exts#define()) let &cpo = s:save_cpo unlet s:save_cpo
ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®ç¾©ãã¦ããã ããªã®ã§ï¼ç¹ã«è¨åãããã¨ã¯ããã¾ããï¼ uniteã ãã¯ã³ãã³ãå®ç¾©ããªãã¦è¯ãã®ã§æ¥½ã§ããï¼ vim-milqiãç¨ããã³ãã³ãã«ã¤ãã¦ï¼ã³ã¡ã³ãã¢ã¦ããã¦ãããã®ãããã¾ããï¼ããã«ã¤ãã¦ã¯vim-milqiã®é ç®ã§è§£èª¬ãã¾ãï¼
autoload/unite/sources/exts.vim
: unite.vimã®æ¡å¼µ
let s:save_cpo = &cpo set cpo&vim let s:source = { \ 'name': 'exts', \ 'description': 'descriptions', \ 'action_table': {}, \ 'default_action': 'my_action' \} let s:source.action_table.my_action = { \ 'description': 'my action' \} function! s:source.action_table.my_action.func(candidate) abort echomsg a:candidate.word endfunction function! s:source.gather_candidates(args, context) abort return map(['apple', 'banana', 'cake'], '{ \ "word": v:val \}') endfunction function! unite#sources#exts#define() abort return s:source endfunction let &cpo = s:save_cpo unlet s:save_cpo
unite#sources#exts#define()
ã§unite sourceã«é¢ããè¾æ¸ãè¿å´ããããã«ãã¾ãï¼
ä»å㯠word
ã®ã¿æå®ãã¦ãã¾ããï¼ abbr
ã kind
ãªã©ï¼ä»ã«ãéè¦ãªé
ç®ãããã¾ãã®ã§ï¼ :h unite-notation-{candidate}
ã§èª¿ã¹ã¦ã¿ãã¨ããã§ãããï¼
ãã®é¢æ°ã¯unite.vimæ¬ä½ããå¼ã³åºããã¾ãï¼
ä¸è¨ã®ä¾ã§ã¯ï¼myaction
ã¨ããã¢ã¯ã·ã§ã³ã®ã¿ã source ã«å¯¾ãã¦å®ç¾©ãï¼<CR>
ã§é¸æããã¨ãã®ã¢ã¯ã·ã§ã³ã§ãã default_action
ã«æå®ãã¦ãã¾ãï¼
ã¾ãï¼ä»åã¯ãã£ã¦ãã¾ãããï¼s:source.action_table.my_action
ã« is_selectable: 1
ã追å ããã¨è¤æ°é¸æã§ããããã«ãªãï¼s:source.action_table.myaction.func()
ã®å¼æ°ãï¼é¸æããåè£ã®è¾æ¸ã§ã¯ãªãï¼è¤æ°ã®è¾æ¸ãå«ããªã¹ãã«ãªãã¾ãï¼
ãªãï¼ä½æããunite sourceã«å¼æ°ã渡ãã¦èµ·åãããå ´åã¯ï¼ Unite exts:arg1:arg2
ã®ããã«ï¼ã³ãã³åºåãã§å¼æ°ãæå®ããå½¢ã«ãªãã¾ãï¼
ãã®å¼æ°ã¯ï¼ s:source.gather_candidates
ã®ç¬¬ä¸å¼æ° a:args
ã¨ãããªã¹ãã§åãåããã¨ãã§ãã¾ãï¼
ãã®å¼æ°ãè£å®ããé¢æ°ã¯ï¼ s:source
ã®ãã¼ complete
ã«ï¼è£å®é¢æ°ã®é¢æ°åç
§ãæå®ãã¾ãï¼
function! s:source.complete(args, context, arglead, cmdline, cursorpos) abort return filter(['foo', 'bar', 'piyo'], 'v:val =~? ^"' . a:arglead . '"') endfunction
ã®ãããªå½¢ã«ãªãï¼ <Tab>
ã«ãã£ã¦é¸æã§ããåè£ã®ãªã¹ããè¿å´ããã°ããã ãã§ãï¼
ã¦ã¼ã¶ã¼å®ç¾©ã³ãã³ãã®è£å®é¢æ°ã¨ä¼¼ããããªãã®ã§ï¼å¼æ°ã2ã¤ã»ã©å¢ãã¦ããã ãã§ããï¼
ã¡ãªã¿ã«ï¼ã¢ã¯ã·ã§ã³ã¯unite kindã¨ãã¦åé¢å¯è½ã§ããï¼ä¸å¯§ãªuniteæ¡å¼µãæ¸ãã®ã§ããã°ï¼åè£ã®åå¾ã¯sourceã§ï¼ã¢ã¯ã·ã§ã³ã®æ å½ã¯kindã«ããæ¹ãããã§ãããï¼åè¿°ã®éãï¼vim-milqiã¯Kindãå©ç¨ãã¾ãï¼ï¼ kindãæå®ããªãã£ãå ´åï¼untie.vimã§ã¯kindã«commonãæå®ããããã®ã¨ãã¾ãï¼
autoload/ctrlp/exts.vim
: ctrlp.vimã®æ¡å¼µ
if get(g:, 'loaded_ctrlp_exts', 0) finish endif let g:loaded_ctrlp_exts = 1 let s:save_cpo = &cpo set cpo&vim let s:ctrlp_builtins = ctrlp#getvar('g:ctrlp_builtins') function! s:get_sid_prefix() abort return matchstr(expand('<sfile>'), 'function \zs<SNR>\d\+_\zeget_sid_prefix$') endfunction let s:sid_prefix = s:get_sid_prefix() delfunction s:get_sid_prefix let g:ctrlp_ext_vars = add(get(g:, 'ctrlp_ext_vars', []), { \ 'init': s:sid_prefix . 'init()', \ 'accept': s:sid_prefix . 'accept', \ 'lname': 'sample extension', \ 'sname': 'sample', \ 'type': 'line', \ 'nolim': 1 \}) let s:id = s:ctrlp_builtins + len(g:ctrlp_ext_vars) unlet s:ctrlp_builtins s:sid_prefix function! ctrlp#exts#id() abort return s:id endfunction function! s:init() abort let candidates = ['apple', 'banana', 'cake'] return candidates endfunction function! s:accept(mode, str) abort call ctrlp#exit() echomsg a:str endfunction let &cpo = s:save_cpo unlet s:save_cpo
ctrlp.vimã®æ¡å¼µã®ä½ãæ¹ã«é¢ãã¦ã¯ï¼ä»¥ä¸ã®è¨äºã«è©³ããæ¸ãã¦ããã®ã§ï¼ãã¡ããè¦ã¦ããã ããæ¹ãããã§ãããï¼
- ctrlp.vimã®ã¨ã¯ã¹ãã³ã·ã§ã³ã®ä½ãæ¹ - koturnã®æ¥è¨
- Vimãã©ã°ã¤ã³ã®æ¡å¼µæ©è½ãã©ã°ã¤ã³ãä½ã£ã¦Vimãããã«ä½¿ããããããã - 29th Sta.
ãã£ã¨èª¬æããã¨ï¼ s:init()
ã¯åè£ã®åå¾ãæ
å½ããé¢æ°ã§ï¼ s:accept()
ãã¢ã¯ã·ã§ã³ãæ
å½ããé¢æ°ã«ãªãã¾ãï¼
ctrlp#exts#id()
ã¯ï¼ãã®æ¡å¼µã®IDãè¿å´ããé¢æ°ã§ï¼ctrlp.vimã®æ¬ä½ã®é¢æ° ctrlp#init()
ã«æ¸¡ããã¨ã§ï¼ctrlpãèµ·åãã¾ãï¼
ä»ã®åè£é¸æåã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨æ¯è¼ãã¦ï¼ä½æããæ¡å¼µã®èµ·åã«è¾æ¸ããã®ã¾ã¾æ¸¡ããå½¢ã«ãã¦ã»ããã£ãã¨æãã¾ãï¼
autoload/fzf/exts.vim
: fzfã®æ¡å¼µ
let s:save_cpo = &cpo set cpo&vim function! fzf#sampleoption() abort return { \ 'down': 20, \ 'sink': function('s:sink'), \ 'source': s:gather_candidates() \} endfunction function! s:gather_candidates() abort return ['apple', 'banana', 'cake'] endfunction function! s:sink(candidate) abort echo len(readfile(a:candidate)) endfunction let &cpo = s:save_cpo unlet s:save_cpo
fzfã¯ãã¡ã¤ã«ãåé¢ããå¿ è¦ã¯ç¡ãã®ã§ããï¼ä»ã®ãã©ã°ã¤ã³ã«ç¿ã£ã¦åé¢ãã¦ã¿ã¾ããï¼ æ¡å¼µã®ä½ãæ¹ã«ã¤ãã¦ã¯ï¼ä»¥åæ¸ãã
ãåèã«ããã¨ããã§ãããï¼
autoload/alti/exts.vim
: alti.vimã®æ¡å¼µ
let s:save_cpo = &cpo set cpo&vim function! s:get_sid_prefix() abort return matchstr(expand('<sfile>'), 'function \zs<SNR>\d\+_\zeget_sid_prefix$') endfunction let s:sid_prefix = s:get_sid_prefix() delfunction s:get_sid_prefix let s:define = { \ 'name': 'exts', \ 'cmpl': s:sid_prefix . 'cmpl', \ 'prompt': s:sid_prefix . 'prompt', \ 'submitted': s:sid_prefix . 'submitted' \} unlet s:sid_prefix function! alti#exts#define() abort return s:define endfunction function! s:cmpl(context) abort return a:context.filtered(self.candidates) endfunction function! s:prompt(context) abort return 'exts> ' endfunction function! s:submitted(context, line) abort if len(a:context.inputs) == 0 echomsg a:context.selection else for input in a:context.inputs echomsg input endfor endif endfunction let &cpo = s:save_cpo unlet s:save_cpo
alti.vimã¯ctrlp.vimã«ä¸æºããã£ã¦ä½æããããã©ã°ã¤ã³ã ããã£ã¦ï¼æ¡å¼µã®ä½æã¯ctrlp.vimã¨ä¼¼ãé°å²æ°ã«ãªãã¾ãï¼ ãããï¼ctrlp.vimãããã¯ãã«ãªæ¡å¼µãä½ããã¨ãå¯è½ã«ãªã£ã¦ãã¾ãï¼ alti.vimã¯å ¥åãããã¨ã«éããç½®ãããã©ã°ã¤ã³ã¨ããé°å²æ°ã§ãï¼
ä¸è¨ã³ã¼ãã«ããã¦ï¼åè£ã®åå¾ã¨ãã£ã«ã¿ãªã³ã°ã¯ s:cmpl()
ãï¼ã¢ã¯ã·ã§ã³ã¯ s:submitted()
ãæ
å½ãã¦ãã¾ãï¼
ä»ã®åè£çµãè¾¼ã¿åãã©ã°ã¤ã³ã¨ç°ãªãï¼s:cmpl()
ã§å
¥åã«å¯¾ããåè£ã®çµãè¾¼ã¿ãå®è£
ããå¿
è¦ãããã¾ãï¼
alti.vimæ¬ä½ã«ã¯4ã¤ã®ãã£ã«ã¿ãªã³ã°é¢æ°ãï¼å¼æ° context
ã®è¾æ¸é¢æ°ã¨ãã¦ï¼ç¨æããã¦ããï¼ãããã
- åæ¹ä¸è´ï¼
a:context.filtered()
- å¾æ¹ä¸è´ï¼
a:context.backward_filtered()
- é¨åä¸è´ï¼
a:context.partial_filtered()
- ææ§ä¸è´ï¼
a:context.fuzzy_filtered()
ã¨ãªã£ã¦ãã¾ãï¼ ãã¡ããï¼èªåã§ãã£ã«ã¿ãªã³ã°ãå®è£ ãã¦ãããã§ããï¼åºæ¬çã«ã¯ä¸è¨4ã¤ã®ãããããç¨ãããã¨ã§è§£æ±ºã§ããã§ãããï¼
s:submitted()
ã«ããã¦ï¼ã«ã¼ã½ã«ä¸ã«ãã£ãåè£ã¯ï¼ a:context.selection
ã«æ ¼ç´ããï¼å
¥åãããåè£ã¯ a:context.inputs
ã«ãªã¹ãã¨ãã¦æ ¼ç´ããã¦ãã¾ãï¼
alti.vimã§ã¯ï¼ã¹ãã¼ã¹åºåãã§åè£ã®å
¥åãèªèãããããã«ãªã£ã¦ãã¦ï¼è¤æ°ã®åè£ãé¸æããå ´åã¯ï¼ã¹ãã¼ã¹åºåãã§å
¥åãããã¨ã«ãªãã¾ãï¼
<Tab>
ãå
¥åãããã¨ã§ï¼åè£çªã®ã«ã¼ã½ã«ä¸ã®åè£ãå
¥åæ¬ã«æ¿å
¥ãããã®ã§ï¼ã¦ã¼ã¶ã¨ãã¦ã¯ï¼
- çµãè¾¼ã¿ã¯ã¨ãªãå ¥åãï¼åè£ãçµãè¾¼ã
- åè£çªã§ã«ã¼ã½ã«ç§»åããã¦ï¼åè£ã
<Tab>
ã§å®å ¨ã«å ¥åæ¬ã«å ¥åãã <CR>
ã§é¸æãçµãï¼ã¢ã¯ã·ã§ã³ãå®è¡ãã
ã¨ããæµãã«ãªãã¨æãã¾ãï¼
alti.vimçã«ã¯ï¼ã¦ã¼ã¶ã <CR>
ã§ã«ã¼ã½ã«ä¸ã®åèªãé¸æãã¦ã¢ã¯ã·ã§ã³ãå®è¡ããã®ã§ã¯ãªãï¼ <CR>
ã«ãã£ã¦ï¼å
¥åãããåè£ãéä¿¡ãããã¨ãæ³å®ããã¦ããã¨æããã¾ãï¼
ãããã£ã¦ï¼ a:context.selection
ã¯åºæ¬çã«ã¢ã¯ã·ã§ã³å´ã§è¦ãå¿
è¦ã¯ãªãã§ãããï¼ãã ãï¼åçã§ããå
¥åãç¡ãã£ãå ´åã¯ï¼ã«ã¼ã½ã«ä¸ã®åè£ã«å¯¾ãã¦ã¢ã¯ã·ã§ã³ãè¡ãã¨ããã®ãã¢ãªããããã¾ããï¼ï¼
ãªãï¼å
¥åãããåè£ã¯ï¼åè£çªããã¯é¤å¤ãããããã«ãªã£ã¦ããã®ã§ï¼éè¤é¸æã®æãã¯ããã¾ããï¼
æåã§éè¤ããå
¥åãä¸ããã¨ãã¦ãï¼åè£ããé¤å¤ããã¾ãï¼
å
¥åæ¬ã«å
¥åããããã®ã®ãã¡ï¼å
ã
ã®åè£ç¾¤ã«ãªãã£ããã®ã¯é¤å¤ãã㦠a:context.inputs
ã«æ ¼ç´ããã¾ãï¼
ã¤ã¾ãï¼ã¦ã¼ã¶ãã§ããããªå
¥åãããã¨ãã¦ãï¼ãããã¯å
¨ã¦é¤å¤ãããã¨ãããã¨ã§ãï¼
ãªãï¼ä¸è¨ã³ã¼ãä¸ã®è¾æ¸ s:define
ã®ä¸ã§ï¼å¤ãé¢æ°åã®æååã¨ãªã£ã¦ãããã®ã¯ï¼é¢æ°åç
§ãåããã¨ãå¯è½ã§ãï¼
é¢æ°åã渡ãããï¼é¢æ°åç
§ã渡ããæ¹ãã³ã¼ãã¨ãã¦ã¯ã·ã³ãã«ã«ãªãã®ã§ã¯ãªããã¨æãã¾ãï¼
autoload/milqi/exts.vim
: vim-milqiã®æ¡å¼µ
let s:save_cpo = &cpo set cpo&vim let s:define = {'name': 'exts'} function! milqi#exts#define() abort return s:define endfunction function! s:define.init(context) abort " let context.i = 0 return ['apple', 'banana', 'cake'] endfunction function! s:define.accept(context, candidate) abort call milqi#exit() echomsg a:candidate endfunction " function! s:define.lazy_init(context, query) abort " let a:context.i += 1 " if query ==# '' " return { " \ 'reset': 0, " \ 'candidates': map(['lazy_apple', 'lazy_banana', 'lazy_cake'], " \ 'v:val . " - " . a:context.i') " \} " else " return { " \ 'reset': 1, " \ 'candidates': ['apple_query', 'banana_query', 'cake_query'] " \} " endif " endfunction " function! s:define.async_init(context) abort " let a:context.i += 1 " return { " \ 'done': a:context.i < 6 ? 0 : 1, " \ 'candidates': map(['async_apple', 'async_banana', 'async_cake'], " \ 'v:val . " - " . a:context.i') " \} " endfunction let &cpo = s:save_cpo unlet s:save_cpo
è¾æ¸é¢æ°ã°ããã¨ãªã£ã¦ãã¾ããï¼ã³ã¼ãã®é°å²æ°ã¯ï¼ctrlp.vimã¨ä¼¼ã¦ãã¾ããï¼
ä»åã®ä¾ã§ã¯æ´»ç¨ãã¦ãã¾ãããï¼ä¾ãæªãã®ã¯ç³ã訳ããã¾ããï¼ï¼vim-milqiã®ä¸çªã®ç¹å¾´ã¯ï¼ query-first 㨠candidate-first ã¨ãã2ã¤ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ã¢ã¼ãã§ãï¼
ä¸è¨ã³ã¼ãä¸ã§ã¯ s:define.lazy_init
ï¼ s:define.async_init
ãï¼ãããã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ã¢ã¼ãã§ã®ã¢ã¯ã·ã§ã³ã«é¢ä¿ãã¦ãã¾ã
ãã®2ã¤ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ã¢ã¼ãã¯ï¼vim-milqiã®ã»ã¼ã«ã¹ãã¤ã³ããèªãä¸ã§ã¯æ¬ ãããªãè¦ç´ ã§ãï¼
以ä¸ï¼2015å¹´3æ29æ¥ã®Lingrã®éå»ãã°ããã®å¼ç¨ã§ãï¼
query-firstã¯å ¥åã«å¿ãã¦åçã«å 容ãå¤åããç³»ï¼candidate-firstã¯åãªãéåæctrlpç³»ã§ãã candidate-firstã ã¨ï¼ä¾ãã°æéã®ãããå¦çã§åè£ã®åå¾ã«æéã®ããããã®åãã§èãã¦ã㦠query-firstã ã¨ï¼ä¾ãã°éå»ã®é¸æç¶æ ã«å¿ãã¦æåã«ä¸é¨ã®åè£ããã£ãã·ã¥ããåºãï¼å ¥åãããã°å ¥åã«å¯¾å¿ããåè£ãåçã«çæãã¦åºãã¨ãããã¨ãã§ãã¾ã candidate-firstã¯uniteãctrlpãèãã¦ããã ããã°ã¤ã¡ã¼ã¸ã¯æ´ã¿ãããã¨æãã¾ã query-firstã¯ï¼ãã£ã¡ãç§ã®ããããã¡ã¤ã³ã§ããï¼ä¾ãã°åæ表示ã§a, bã表示ï¼hogeã¨å ¥åããã¨ãã«c, d, eã表示ï¼hogeãæ¶ãã¦fugaã¨å ¥åããã¨ãã«f, g, h, iã表示ï¼ã¨ãããã¨ãã§ãã¾ã
candidate-first
candidate-first ã¯ï¼unite.vimã«ããããéåæã®åè£ã®åå¾ãã§ãããã®ãã¨ãããã§ãããï¼
candidate-firstã¢ã¼ãã¨ãã¦å©ç¨ããå ´åï¼ milqi#candidate_first()
ã«æ¡å¼µã®å®ç¾©è¾æ¸ã渡ãã¾ãï¼
ãã®è¾æ¸ã®ãã¼ async_init
ã«é¢æ°åç
§ãæå®ããã¦ããã°ï¼ updatetime
ããã¯ã«ããï¼å®æçã«ãã®é¢æ°ãã³ã¼ã«ããã¾ãï¼
async_init
ã«æå®ãããé¢æ°ã¯ï¼done
㨠candidates
ããã¼ã«æã¤è¾æ¸ãè¿å´ããå¿
è¦ãããã¾ãï¼
ãã¼ã®ååã®éãï¼ done
ã¯éåæå¦çãçµäºãããã©ãããï¼ candidates
ã¯éåæã§åå¾ããåè£ã表ãã¾ãï¼
candidate
ã«æå®ãããªã¹ãã¯æ¢ã«ããåè£ç¾¤ã«è¿½å ãããã®ã§ï¼æ¡å¼µãä½æããå´ãåè£ãªã¹ãã®è¦ç´ ã«è¿½å ããã¨ãã£ãå¦çã¯ä¸è¦ã§ãï¼
done
ã« 1
ãæå®ããã¨ãï¼éåæå¦çã¯å®äºãããã®ã¨ãã¦ï¼é¢æ°ãå®æçãªã³ã¼ã«ãçµäºãã¾ãï¼
query-first
query-first ã¯ï¼å
¥åã«å¿ãã¦ï¼åè£ãåçã«çæããï¼ã¨ãã£ããã®ãããã§ãï¼
query-firstã¢ã¼ãã¨ãã¦å©ç¨ããå ´åï¼ milqi#candidate_first()
ã«æ¡å¼µã®å®ç¾©è¾æ¸ã渡ãã¾ãï¼
ãã®è¾æ¸ã®ãã¼ lazy_init
ã«é¢æ°åç
§ãæå®ããã¦ããã°ï¼ updatetime
ããã¯ã«ããï¼å®æçã«ãã®é¢æ°ãã³ã¼ã«ããã¾ãï¼
ããã¾ã§ã¯ï¼candidate-firstã¢ã¼ãã¨å¤ãããªãã§ããï¼ lazy_init
ã«æå®ããé¢æ°ã¯ç¬¬äºå¼æ°ã«å
¥åã¯ã¨ãªãåãåããã¨ãã§ãã¾ãï¼
ããã¦ï¼è¿ãå¤ã¯ reset
㨠candidates
ããã¼ã«æã¤è¾æ¸ãè¿å´ããªãã¦ã¯ãªãã¾ããï¼
candidates
ã«æå®ãããªã¹ããåè£ç¾¤ã«è¿½å ããã¦ããã®ã¯ï¼candidate-firstã¢ã¼ãã® async_init
ã¨åæ§ã§ããï¼ reset
ã« 1
ãæå®ãããã¨ã§ï¼åè£ç¾¤ãï¼ãã ã® init
ã§è¿å´ããåè£ãªã¹ããå«ãã¦ï¼å
¨ã¦é¤å»ãããã¨ãã§ãã¾ãï¼
å
¥åã¯ã¨ãªã¨ reset
ãæ´»ç¨ãã¦ï¼åè£ãåçã«å¤æ´ããã®ãï¼query-firstã¢ã¼ãã®ä½¿ãæ¹ã¨ãããã§ãããï¼
åç´ãªä¾ã®å ´å
ä»åã®ãããªåç´ãªä¾ï¼æ¡å¼µè¾æ¸ã« lazy_init
㨠async_init
ã®ã©ã¡ããæããªãä¾ï¼ã§ã¯ï¼ã©ã¡ãã®ã¢ã¼ãã§ãï¼ããªãã¡ï¼ milqi#query_first()
㨠milqi#candidate_first
ã®ã©ã¡ãã«æ¡å¼µã®å®ç¾©è¾æ¸ã渡ãã¦ãï¼ï¼åä½ã«éãã¯ç¡ãã§ãããï¼
ãªãï¼ä¸è¨ã³ã¼ãä¸ã®ã³ã¡ã³ãã¢ã¦ãé¨åã解é¤ãï¼ plugin/exts.vim
ã®vim-milqiã«é¢ããé¨åãé©åã«å¤æ´ãããã¨ã§ï¼candidate-first ï¼ query-firstã®ãããããä½é¨ãããã¨ãã§ããããã«ãã¦ãã¾ãï¼
candidate-firstã®å ´åã¯ï¼é¢æ°ã5åã³ã¼ã«ãããã¾ã§ï¼åè£ãå¢ããããã«ãã¦ãã¾ãï¼
query-first ã®å ´åï¼ä½ãå
¥åããã¨ï¼åè£ã apple_query
ï¼ banana_query
ï¼ cake_query
ã®3ã¤ã ãã«ãªãããã«ãã¦ãã¾ãï¼
ææ³
ãã®è¨äºã§ã¯5ã¤ã®åè£çµãè¾¼ã¿åã¤ã³ã¿ã¼ãã§ã¼ã¹ãæä¾ãããã©ã°ã¤ã³ã«ã¤ãã¦ï¼ç°¡åã«èª¬æãã¾ããï¼ ã©ãããã£ã¨è¦ãéãã§ã¯ãåè£çµãè¾¼ã¿åãã¨ãã風ã«ã¾ã¨ãããã¾ããï¼ãããããå®ç¾ããããã¨ãï¼ç®æãã¦ãããã®ãå°ããã¤éã£ã¦ãã¦é¢ç½ãã§ããï¼
unite.vimã¯åãããæ¡å¼µãè¦è¶ãã¦ä½ãããåï¼ç¬¬ä¸è
ã«ã¨ã£ã¦ã¯ããªãèªç±ãã¤ãã¯ãã«ã«æ¡å¼µãä½ããã¨ãã§ããããã«ãªã£ã¦ãã¾ãï¼
ã¾ãï¼ä½æããsourceã®å¼ã³åºãã¯ï¼ :Unite
ã®ãµãã³ãã³ãï¼ããªãã¡ç¬¬ä¸å¼æ°ã«sourceåãä¸ããå½¢ã«ãªã£ã¦ããã®ã§ï¼sourceä½æè
ã plugin/
ä¸ã®ãã¡ã¤ã«ã«ã³ãã³ããå®ç¾©ããªãã¦ããã®ãé
åã§ãï¼
:Unite
ã®ãªãã·ã§ã³å¼æ°ã§ãã -auto-preview
ãªã©ã¯ï¼uniteã«ããã§ããªããã¨ã§ãããï¼
ctrlp.vimã¯å ã ããã¡ã¤ã©ã§ããï¼æ¡å¼µãå¾ä»ãã®ãããªãã®ã§ããããï¼ä½ããã¨ã®ã§ããæ¡å¼µã«ããä¸èªç±ãããã®ã¯å¦ãã¾ããï¼ ä¾ãã°ï¼è¤æ°é¸æããã¡ã¤ã«ãéãã¨ããæä½ã«éå®ãããã®ã§ï¼ç¬¬ä¸è ã«ã¨ã£ã¦ã¯å©ç¨ãã«ãããã®ã§ãããï¼ ãããï¼ã³ã³ãã¯ããªå®è£ ã§ããåï¼unite.vimããååã®èµ·åæéãçãç¹ã¯è©ä¾¡ã§ããã§ãããï¼
fzfã¯å¤é¨ã³ãã³ãã¨ãã¦å©ç¨ããã®ã§ï¼ä¸æçã«Vimããåºãå½¢ã«ãªãã¾ãï¼ ãã®ç¹ãä»ã®çµãè¾¼ã¿æ¤ç´¢åã®ãã©ã°ã¤ã³ã¨æ¯ã¹ãã¨ç°è³ªãªã¨ããã§ã¯ããã¾ãï¼ ãããï¼tmuxä¸ã§ããã°ï¼ç»é¢åå²ãå©ç¨ãï¼åè£ã表示ãããã¨ãã§ãããï¼neovimã§ããã°neovimã®ã¿ã¼ããã«ã¨ãã¥ã¬ã¼ã¿ã¼ä¸ã§èµ·åããããã«ãã¦ãããï¼ã¨ã¦ãé¢ç½ãæ©è½ãå®è£ ããã¦ãã¾ãï¼
alti.vimã¯ctrlp.vimã«ã¤ã³ã¹ãã¤ã¢ããã¦éçºããããã©ã°ã¤ã³ã ããã£ã¦ï¼ç´°ããé¨åã§ã®é æ ®ãè¡ãã¨ã©ãã¦ãã¾ããï¼ æ¬ä½ããåæ¹ä¸è´ï¼å¾æ¹ä¸è´ï¼é¨åä¸è´ï¼ãã¡ã¸ã¼ãããã¨ãã4ã¤ã®çµãè¾¼ã¿é¢æ°ãæä¾ããã¦ããã®ãï¼ãªããªãããã¨æãã¾ããï¼ ctrlp.vimã¯ãã¡ã¸ã¼ãããããã§ããªãããã«ãªã£ã¦ããï¼åã¨ãã¦ã¯å¤æ°ã®åè£ã®ãã£ã«ã¿ãªã³ã°ã«è¦å´ãããã¨ãããã¾ããï¼
vim-milqiã¯ï¼unite souceããåè£ãåå¾ã§ããããã«ãã¦ããã®ã¯ç»æçãªæ©è½ã ã¨æãã¾ããï¼ ã¾ãï¼éåæå¦çã主ç¼ã«ç½®ãã¦ããï¼ä»ã®çµãè¾¼ã¿æ¤ç´¢ãã©ã°ã¤ã³ã«ã¯ç¡ãç¹å¾´ãæãåããã¨ãã§ãã¾ããï¼
ãããã«
çµãè¾¼ã¿æ¤ç´¢åãã©ã°ã¤ã³ã®æ¡å¼µãä½ããã¨ã¯é£ããããã¾ããï¼ ãã®è¨äºã§ç´¹ä»ãããããªï¼ãã£ãåæ°è¡ç¨åº¦ã®ã³ã¼ãï¼ã»ã¨ãã©ãå®åå¥ã®ãããªãã®ã§ï¼æ¬è³ªçãªé¨åã¯æ°è¡ç¨åº¦ï¼ãæ¸ãã ãã§ï¼èªä½ã®ãã©ã°ã¤ã³ããçµãè¾¼ã¿æ¤ç´¢åãã©ã°ã¤ã³ã®UIãå©ç¨ãããã¨ãã§ãã¾ãï¼ ããï¼ãããèªãã§ããããªãããã©ã°ã¤ã³ä½æã®åå¿è ã§ããï¼unite sourceãctrlp.vimã®æ¡å¼µãæ¸ãããã¨ãç¡ãã®ã§ããã°ï¼ãã®æ©ä¼ã«ææ¦ãã¦ã¿ãã®ã¯ãããã§ããããï¼
ãªãï¼unite.vimã¯æ¥æ¬ã§ã®ç¥å度ãã¨ã¦ãé«ãï¼ã°ã°ãã°å¤æ°ã®æ å ±ãåºã¦ããã¨æãã¾ãï¼ unite.vimã¯é«æ©è½ãªããï¼ãã®è¨äºã§ã¯ç´¹ä»ãããã¦ããªãã®ã§ï¼unite.vimã®æ¬å½ã®åãç¥ãããã«ãã°ã°ããã¨ããªã¹ã¹ã¡ãã¾ãï¼
åè
- Shougo/unite.vim
- ctrlpvim/ctrlp.vim
- junegunn/fzf
- LeafCage/alti.vim
- kamichidu/vim-milqi
- ctrlp.vimã®ã¨ã¯ã¹ãã³ã·ã§ã³ã®ä½ãæ¹ - koturnã®æ¥è¨
- Vimããfzfãå©ç¨ãã - koturnã®æ¥è¨
- ctrlp.vimã®ä½¿ãæ¹ã¾ã¨ã - Qiita
- ctrlp.vimã使ã - Qiita
- ã¦ã¼ã¶ã«å ¥åããããinput()ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãä¸æºããã¦ä»æ¹ããªããªãctrlp.vim風ã®å ¥åã¤ã³ã¿ã¼ãã§ã¤ã¹alti.vimã使ãã - cafegale
- å ¬éå¾ããéåçµã£ã¦ããã£ãalti.vimã®åé¡ç¹ - LeafCageåå¿é²
- alti.vim ã®ã¢ã¤ãã³ãã£ãã£ãä½è ã§ããç§ã失ããããã®ã§æ´çãã¦ãã
- vim-jp - Lingr March 29, 2015