VIM Plugin Ctrlp

用 jQuery 来表示 Vim 插件 Ctrlp 的功能

$(this).closest('.git').find(':file').filter()

Ctrlp

Ctrlp Extenstion

Use ctrlp.vim to search for anything you like

Input: Provide ctrlp with a simple list of strings to search in.

Output: Specify an action to perform on the selected string.

Ctrlp 的实现

  • 用一个 window 来显示文件列表
  • 利用 Vim 自己的 command-line 进行输入
    • :echohl - highlight group for following :echo
    • getchar() - Get a single character from the user or input stream
function s:KeyLoop()
    while exists('s:init') && s:keyloop
        redraw
        let nr = getchar()
        let chr = !type(nr) ? nr2char(nr) : nr
        if nr >=# 0x20
            call s:PrtFocusMap(chr)
        else
            let cmd = matchstr(maparg(chr), ':<C-U>\zs.\+\ze<CR>$')
            execute ( cmd != '' ? cmd : 'norm '.chr )
        enif
    endwhile
endfunction