📝
vim-fugitive で :Gbowse! ができない時の対処法
vim で編集しているときに、github のリンクが欲しくなることはよくあると思います。vim-fugitive + vim-rhubar で簡単に実現できるはずだったのですが、少してこずったので、メモ代わりに残しておきます。自分は vim を普段使っているものの、plugin の作成などはしたことないという意味で初心者です。
ちなみに、環境は WSL です。
まず、https://github.com/tpope/vim-fugitive/issues/1053 にあるように、plugin を追加しコマンドを設定しました。
...
Plug 'tpope/vim-rhubarb'
Plug 'airblade/vim-gitgutter'
call plug#end()
" for vim-fugitive
nnoremap <Leader>gy :.GBrowse!<CR>
vnoremap <Leader>gy :.GBrowse!<CR>
よし、これで終わりと思いきや、あれ、ctrl-v しても copy できていません。
$ xclip -selection c -o
あれ。
ちょっとなんもわからんとなったので、とりあえず、fugitive のコードをみてみました。おそらく、ここで clipboard に url をコピーしてそうです。
ということは、そもそも @+ = url
の部分が実行されていないのか?という予測のもと、:echo has('clipboard')
を実行すると 0 が返ってきます。あ!
$ vim --version | grep clipboard
-clipboard +keymap +printer +vertsplit
+eval -mouse_jsbterm -sun_workshop -xterm_clipboard
なるほど、そもそも clipboard に対応してない vim を使っていたようです。(WSL の default の vim は -clipboard のようです)
+clipboard となるよう、以下のコマンドを実行します。
$ sudo apt-get install vim-gtk3 -y
すると、
$ vim --version | grep clipboard
+clipboard +keymap +printer +vertsplit
+eval -mouse_jsbterm -sun_workshop +xterm_clipboard
よさそう。
適当な file を開いて、GBrowse!
すると
$ xclip -selection c -o
https://github.com/uchiiii/xxxxxxxxxxx.rs#L3-L6
めでたしめでたし。
補足
コードを読んでいるうちに、vim で コマンド作る際に、command!
のように !
を後につけて挙動を変えたいときは、以下のようにすればいいことを学びました。
Discussion