Goでテストを書くときに、Vimで書いていてテストファイルとの行き来にはkana/vim-altrをつかっている。 その際に、まだテストファイルを作っていないことがあって自動で作ってほしかったので設定した。

その設定は以下のようなもので、 normal modeの <leader>t でvim-altrを呼び出す前に自作のGoのテストファイルが存在しなかったら作成する関数を呼んでいる。 これで、移動した際にファイルが存在しなかったら作成してからジャンプすることができる。

function! s:makegotest() abort
  let src=expand("%:p:r")
  let filex=expand("%:p:e")
  if filex != "go"
      return
  endif
  if expand("%:p:r") !~ "test$"
      let src.="_test"
  endif
  let src.=".go"
  let chk=getftype(src)
  if chk == "file" 
      return
  endif
  call writefile(["package"],src)
endfunction

nnoremap <SID>(makegotest) <Cmd>call <SID>makegotest()<CR>
nmap <leader>t <SID>(makegotest)<Plug>(altr-forward)