VimでRobotframeworkの補完がしたいなと思ったけど無かったので作りました

問題:vimのdictionaryで半角スペースが使えない

RobotframeworkやSeleniumLibraryのキーワードは、半角スペースが含まれている物が大半なので、上記を参考に、アンダーバーで代替出来るようにしました

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
set dictionary=~/.vim/dict/robotframework-built-in.dict
set dictionary=~/.vim/dict/robotframework-selenium-library.dict

fun! CompleteSpace()
" Save cursor position
let l:save_cursor = getpos(".")

" Get word we just completed ('borrowed' from: http://stackoverflow.com/a/23541748/660921)
let l:word = matchstr(strpart(getline('.'), 0, col('.') - 1), '\k\+$')

" Replace _ with space
let l:new = substitute(l:word, "_", " ", "g")

" Run :s
exe "s/" . l:word . "/" . l:new . "/e"

" Restore cursor
call setpos(".", l:save_cursor)
endfun

au CompleteDone * call CompleteSpace()