basyura's blog

あしたになったらほんきだす。

twitvim でウインドウからポスト

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 操作も実装したい。