衝撃のわからなさ

わかってません

選択範囲のGithub URLを生成する(クリップボードに入れる)Vimプラグイン書いた

ソースコード箇所を共有するときにこういうURLを貼り付けてここですみたいな話をすることが多いので書いた。

https://github.com/impactaky/github-url.vim/tree/30696af86eb3c8ea7b9ae432957a27e4c4876641/plugin/gihub_url.vim#L11-L11

いくつか既存のリポジトリもあったのだけれどそれらに比べて

  • gitコマンドのみで他の依存物がない
  • sshでcloneした場合をうまく扱える
  • git ディレクトリの外にいた場合でも動く
  • clipboardまわりを変数でカスタム可能

という違いがある

github.com

使い方

自分のdein.tomlの切り貼り
URLにしたいところを選択してgu押すのが使い方。
これでURLが表示されてクリップボードにも入る

[[plugins]]
repo = 'impactaky/github-url.vim'
hook_add = '''
let g:github_url#yank_command = "silent normal V:call OscYank()\<CR>"
nmap gu <Plug>(github_url-file)
vmap gu <Plug>(github_url-line)
'''

OscYankは neovim/tmuxのクリップボード連携(OSC 52) — ゆんたんのきまぐれBlog を参考にこんな感じに書いてある

function! OscYank() range
    let tmp = @@
    silent normal gvy
    let selected_text = @@
    let @@ = tmp
    call chansend(v:stderr, printf("\x1b]52;;%s\x1b\\", system("base64", selected_text)))
endfunction
vmap <Leader>y :call OscYank()<CR>