2008年4月13日日曜日

現在編集しているファイル名をクリップボードに

人に説明する際に、ファイル名や抜粋がクリップボードにコピーしたくなることがある。
以下を vimrc にでも追記すれば :FN や :FL で簡単にコピーできる。
# visual 選択中の :FL は抜粋になる


" 'ファイル名' をヤンク/クリップボードのバッファにコピー
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
command! FN let @"=expand("%:p") | if has("gui_running") | let @*=@" | endif

" 'ファイル名 :L行番号' をヤンク/クリップボードのバッファにコピー
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! s:get_filename_with_line_number(s, e)
let result = expand("%:p")." :L".line(".")
if a:s == a:e
let @" = result
else
let result .= "\n===\n"
let result .= join(getline(a:s, a:e), "\n")
let @" = result."\n==="
endif

if has("gui_running")
let @* = @"
endif
endfunction
command! -range FL call s:get_filename_with_line_number(<line1>, <line2>)