input からの入力だと
- 間違って Enter を押して中途半端にポストしてしまう
- 編集が思うようにできない
- 補完ができない
なので、lingr.vim を参考に(パクって)ウインドウから編集してポストできるようにしてみた。
twitvim.vim に追加
if !exists(":WPosttoTwitter") command WPosttoTwitter :call <SID>wpost_twitter() endif function! s:wpost_twitter() execute 'below split twitvim_say' execute '2 wincmd _' let &filetype = 'twitvim_say' setlocal bufhidden=delete setlocal statusline=%f setlocal nobuflisted nnoremap <buffer> <silent> <CR> :call <SID>wpost_twitter_send()<CR> nnoremap <buffer> <silent> q :bw!<CR> startinsert! endfunction function! s:wpost_twitter_send() :call <SID>post_twitter(join(getline(1, "$")),0) bw! endfunction
WPosttoTwitter を呼びだすと編集操作になるので、入力後にノーマルモードに移って Enter を押下するとポストされる。
好みにあわせて vimrc に追加
nnoremap <Space>po :<C-u>WPosttoTwitter<Enter> autocmd FileType twitvim_say call s:twitvim_say_my_settings() function! s:twitvim_say_my_settings() NeoComplCacheAutoCompletionLength 2 AlterCommand <buffer> q bw!<CR> nnoremap <buffer> <silent> <C-j> :bw!<CR> endfunction
補完用に neocomplcache のディクショナリを追加
" dictionary let g:neocomplcache_dictionary_filetype_lists = { \ 'twitvim_say': $HOME . '/.vim/dict/twitvim_say.dict' \ }
ディクショナリによく @ する人や、キーワードを書いておく(他にスマートな方法がありそうだけど)。
かなり快適になったので、reply 操作も実装したい。