vimでworkspaceからのファイルパスを素早くヤンクしたい

公開:2020/12/03
更新:2020/12/04
1 min読了の目安(約600字TECH技術記事

vimでカレントファイルパスを素早くヤンクしたいコマンドを長らく便利に使っていたものの、vim-fugitive:Gstatusdefx.nvimからファイルを開くと、<C-g>がフルパスになってしまうという不便さにちょいちょい遭遇していた。

そして今更ながらいい方法が見つかった。

https://stackoverflow.com/questions/4525261/getting-relative-paths-in-vim

改良後。

function! ClipText(data)
  let @0=a:data
  let @"=a:data
  let @*=a:data
  echo "clip: ".a:data
  return "\<ESC>"
endfunction
nnoremap <expr> <C-g> ClipText(fnamemodify(expand("%"), ":~:."))
nnoremap <expr> <Space><C-g> ClipText(expand('%:t'))

~の外だとフルパス回避はできないが普段使いには十分と思われる。